BigQueryでGROUP BY ALLがプレビューになりました

2024.03.07

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句で指定するカラムを動的に変更させたい場合には非常に有効な機能だと思います。
是非、そのようなケースに直面した際には利用を検討してみてください。