トップ / 式評価・文字列・型変換

md5 / sha2

文字列からハッシュ値を計算する(重複検知・疑似的な主キー生成などに使う)。

SNOWPARK 静的検証のみ

md5(col("name"))
sha2(col("name"), 256)

POLARS 実行確認済み

pl.col("name").hash()  # MD5/SHA2そのものではない点に注意(本文参照)

挙動・設計の違い

Snowparkのmd5sha2はSQLの標準的な暗号学的ハッシュ関数(MD5・SHA-256等)をそのまま呼び出す。Polarsには同名のMD5/SHA2関数が無い。最も近いのは.hash()だが、これはPolars独自の高速ハッシュ(xxHashベース)で、暗号学的ハッシュ関数ではなく、Snowflake側のMD5/SHA2とは全く異なる値になる。実行して確認したところ、.hash()の戻り値はSnowflakeのMD5とは桁数もアルゴリズムも異なる64bit整数になる。

移行時の落とし穴

「同じ入力から同じハッシュ値が欲しい」という目的が同じでも、Snowpark側とPolars側で同じ値にはならない。他システム(Snowflake側でMD5計算したテーブル等)と突き合わせるためにハッシュ値を使う場合、Polars側で.hash()を使うとキーが一致せず突き合わせが失敗する。真にMD5/SHA2互換の値が必要な場合は、Python標準のhashlibモジュールを行ごとに適用する(map_elements等)必要があり、Polarsのベクトル化された高速処理の恩恵を受けにくくなる点も踏まえて設計する。

式評価・文字列・型変換の他のメソッド

出典・検証情報

Polars 1.36.1 で実行確認 / Snowpark Python SDK 1.51.1 で静的検証(2026-08-27)