Snowpark ⇄ Polars 対応表

Snowpark PythonのDataFrame/Column APIを、Polarsの同等コードと並べて確認できる逆引きリファレンスです。挙動の違いと移行時の落とし穴をメソッドごとに解説します。

基礎から読む

射影・選択

列を選ぶ・落とす・作る・名前を変える

  • select ── 列を選んで取り出す。両方とも遅延評価で、実際のクエリは後段のアクションまで発行されない。
  • drop ── 指定した列を取り除く。select の逆で、残す列でなく捨てる列を書く。
  • with_column / with_columns ── 既存の列はそのままに、新しい列を1つ(または複数)追加する。
  • with_column_renamed / rename ── 列名を変更する。
  • col ── 列を式として参照する。以降のメソッドチェーンの起点になる、両APIで最も頻出する関数。
  • lit ── 定数値を式として埋め込む。
  • alias ── 式の出力列に名前をつける。
  • columns / collect_schema().names() ── 現在の列名の一覧を取得する。
  • schema / collect_schema() ── 列名と型の一覧(スキーマ)を取得する。

フィルタ・サンプリング

行を絞り込む・抜き出す

  • filter / where ── 条件に合う行だけを残す。whereはfilterの別名で、書き方はどちらも同じ。
  • limit ── 先頭から指定した行数だけを取得する。
  • sample ── データの一部をランダムに抽出する。
  • distinct / unique ── 重複行を取り除く。メソッド名がSnowparkとPolarsで異なる点に注意。
  • drop_duplicates ── 指定した列の値が一致する行を重複とみなして間引く。

集約・構造変換

グループ化・集計・縦横の入れ替え

  • group_by / groupBy ── 指定した列の値でグループ化する。集約する前段階として使う。
  • agg ── group_byで作ったグループごとに、集約の計算をまとめて指定する。
  • count ── 行数を数える。
  • sum ── 列の値を合計する。
  • avg / mean ── 列の値の平均を求める。
  • min ── 列の最小値を求める。
  • max ── 列の最大値を求める。
  • pivot ── 行の値を列に展開する(縦持ちから横持ちへ)。
  • unpivot ── pivotの逆。複数列を1つの列にまとめる(横持ちから縦持ちへ)。

結合・集合演算

複数のテーブルを1つにする

  • join ── 2つのDataFrameを結合する。
  • union ── 2つのDataFrameを縦に連結し、重複行を取り除く。
  • union_all / unionAll ── 2つのDataFrameを縦に連結する。重複行はそのまま残す。
  • union_by_name / unionByName ── 列の並び順ではなく列名を基準に2つのDataFrameを連結する。
  • intersect ── 2つのDataFrameの両方に存在する行だけを残す(積集合)。
  • subtract / except_ ── 片方のDataFrameから、もう片方にも存在する行を取り除く(差集合)。

ソート

並び順を決める

  • order_by / sort ── 行を指定した列の値で並べ替える。
  • asc / desc ── 列に昇順・降順の方向を持たせる。
  • nulls_first / nulls_last ── NULL値をソート結果の先頭・末尾どちらに置くかを指定する。

式評価・文字列・型変換

値を計算する・文字列を扱う・型を変える

  • when / otherwise ── 条件に応じて異なる値を返す(複数分岐の条件式)。
  • iff ── 条件が真か偽かで2つの値のどちらかを返す(2分岐専用のショートカット)。
  • is_null / is_not_null ── 値がNULL(欠損)かどうかを判定する。
  • coalesce ── 複数の列を左から順に見て、最初に見つかったNULLでない値を返す。
  • cast ── 列の型を別の型に変換する。
  • substring ── 文字列の一部を指定した位置から切り出す。
  • concat(文字列連結) ── 複数の列・文字列を1つにつなげる。

ウィンドウ関数

行をまたいだ計算(順位・累積・移動平均)

  • Window.partition_by / Window.order_by ── グループ(パーティション)ごとに、行をまたいだ計算をするための土台を定義する。
  • rank ── パーティション内で順位をつける。同じ値には同じ順位がつき、その分だけ次の順位を飛ばす。
  • dense_rank ── パーティション内で順位をつける。同じ値には同じ順位がつくが、次の順位は飛ばさない。
  • row_number ── パーティション内で1から始まる連番をふる。同率でも必ず別の番号になる。
  • lag ── パーティション内で、1つ前(過去)の行の値を取得する。
  • lead ── パーティション内で、1つ後(未来)の行の値を取得する。