トップ / 式評価・文字列・型変換
文字列をJSON(半構造化データ)として解釈する/複数の値からJSONオブジェクトを組み立てる。
parse_json(col("raw_json"))
object_construct(lit("name"), col("name"), lit("age"), col("age"))
pl.col("raw_json").str.json_decode(pl.Struct({"a": pl.Int64, "b": pl.Utf8}))
pl.struct(["name", "age"]).alias("obj")
データモデルの前提が根本的に異なる。SnowflakeのVARIANT型はスキーマレスで、parse_jsonは行ごとに異なる構造のJSONでも受け入れる。一方PolarsのStruct型は列と同じく固定スキーマを持つ通常のデータ型で、object_constructに近いpl.struct()は「決まったフィールドの集まり」を1列にまとめるだけ。
str.json_decode()はPolarsのExpr(列に対する遅延式)として使う場合、対象のdtype(Structのフィールド定義)を明示的に渡す必要があり、省略するとエラーになる(実行して確認=dtype=Noneは「Expr版はスキーマを自動推論できない、必要ならSeries.str.json_decode()を使え」という趣旨のエラーになる)。SnowflakeのPARSE_JSONはスキーマの事前定義が一切不要なので、行ごとにキーが異なるような真にスキーマレスなJSONは、Polars側では事前にStructのスキーマを揃えるか、行ごとの構造差を許容する別の設計に作り替える必要がある。
Polars 1.36.1 で実行確認 / Snowpark Python SDK 1.51.1 で静的検証(2026-08-30)