Google Cloudデータエンジニアのはんざわです
2024年2月26日にGROUP BY
に関して大きく2つのアップデートがありました。
リリースノート: February 27, 2024
1つ目は、以前に紹介したGROUP BY GROUPING SETS
などの3つの関数が正式にGAになったアップデートです。
2つ目は、今回紹介するGROUP BY ALL
が新たにプレビューとして追加されたアップデートになります。
さっそくGROUP BY ALL
を簡単に紹介し、実際に触ってみたいと思います
そもそも GROUP BY ALL とは
簡単に説明するとSELECT句から集計関数などを除く全てのカラムでグループ化してくれます。
今まで GROUP BY col1, col2, ...
や GROUP BY 1, 2, ...
のような形で個別に指定する必要がありましたが、そのような手間が省けるようになりました。
公式ドキュメント: Group rows by ALL
従来との比較
- 個別に指定する方法
以下の2つのクエリは全く同じ結果を取得することができます。
SELECT
word,
COUNT(*) AS cnt
FROM
samples_dataset.shakespeare
GROUP BY word
ORDER BY cnt DESC
個別に指定する方法では仮にSELECT句で指定するカラムを増やした場合には、グループ化するカラムも同様に増やす必要があります。
そうしないともちろんエラーを吐いてしまいます。
- GROUP BY ALLを使った方法
SELECT
word,
COUNT(*) AS cnt
FROM
samples_dataset.shakespeare
GROUP BY ALL
ORDER BY cnt DESC
一方で、GROUP BY ALLを使った方法では、SELECT句で指定するカラムを増やしてもそのままで正常に実行することが可能です。
まとめ
GROUP BY ALL
を簡単に紹介しました。
今回の例のようにグループ化したいカラムが少ない時には恩恵を感じにくいと思いますが、一方でグループ化したいカラムが多いケースやSELECT句で指定するカラムを動的に変更させたい場合には非常に有効な機能だと思います。
是非、そのようなケースに直面した際には利用を検討してみてください。