ウィンドウ関数SQLでのランニングサム
ウィンドウ関数は集約関数に似ていますが、グループごとに1行ではなく、データセットの各行に対して出力を返す点が異なります。
ウィンドウ関数とあわせて集計を行うことができます。ウィンドウ関数を使ったランニングサムは、JOIN を使う場合よりもずっとシンプルに書けます。クエリの実行時間が大幅に短くなることもあります。
train_id、station、time、diff_min の列を持つ schedule というテーブルが用意されています。diff_min 列は、現在の駅から次の駅までの経過時間(分)を表します。
この演習はコースの一部です
Pythonで学ぶ Spark SQL 入門
演習の手順
- このデータセットの各レコードに、
running_totalという追加列を付与するクエリを実行してください。running_total列は、diff_min列が示す駅間の時間差をSUM()で累積したものです。 - クエリを実行し、結果を表示してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add col running_total that sums diff_min col in each group
query = """
SELECT train_id, station, time, diff_min,
____(____) OVER (PARTITION BY ____ ORDER BY ____) AS running_total
FROM schedule
"""
# Run the query and display the result
spark.____(query).show()