📊

BigQueryの新機能「GROUP BY ALL」を徹底解説

2024/08/26に公開

はじめに

株式会社 Hogetic Lab 取締役 CTO の岩尾です。

BigQuery ユーザーの皆さん、こんにちは。実は私自身も最近まで気づいていなかったのですが、2024 年 2 月に登場した新機能「GROUP BY ALL」が非常に便利だということを発見しました。この機能を使い始めてから、SQL クエリの記述が驚くほど簡単になり、生産性が向上しました。今回は、この素晴らしい機能について詳しく解説し、皆さんにもその魅力を感じていただきたいと思います。

新機能「GROUP BY ALL」とは

GROUP BY ALL は、SELECT 句から集計関数を除くすべてのカラムでグループ化を行う新しいオプションです。

従来の方法との比較

従来の GROUP BY 句では、グループ化したい各カラムを明示的に指定する必要がありました。以下に、例を示します:

SELECT 
    year,
    quarter,
    region,
    product_category,
    product_subcategory,
    sales_channel,
    customer_segment,
    COUNT(DISTINCT order_id) as total_orders,
    SUM(revenue) as total_revenue,
    AVG(profit_margin) as avg_profit_margin
FROM 
    sales_data
GROUP BY 
    year,
    quarter,
    region,
    product_category,
    product_subcategory,
    sales_channel,
    customer_segment

このクエリでは、7 つのカラムを個別に指定してグループ化しています。GROUP BY ALL を使用すると、同じクエリを以下のように書くことができます:

SELECT 
    year,
    quarter,
    region,
    product_category,
    product_subcategory,
    sales_channel,
    customer_segment,
    COUNT(DISTINCT order_id) as total_orders,
    SUM(revenue) as total_revenue,
    AVG(profit_margin) as avg_profit_margin
FROM 
    sales_data
GROUP BY ALL

この例では、SELECT に列挙された非集計カラム(year, quarter, region, product_category, product_subcategory, sales_channel, customer_segment)が自動的にグループ化の対象となります。

GROUP BY ALL のメリット

  1. コード量の削減: この例では、7 行の GROUP BY 指定が 1 行に縮小されました。より多くのカラムをグループ化する場合、この簡略化の効果はさらに顕著になります。

  2. 保守性の向上: 例えば、後から promotion_type というカラムを分析に追加したい場合、従来の方法では SELECT 句と GROUP BY 句の両方を修正する必要がありました。GROUP BY ALL を使用すれば、SELECT 句に追加するだけで自動的にグループ化されます。

  3. 動的なクエリ生成の簡易化: ユーザーの選択に基づいて動的に SQL を生成するアプリケーションでは、GROUP BY ALL を使用することで、選択されたカラムを SELECT 句に追加するだけで適切なグループ化が行えます。

注意点

  1. プレビュー機能: GROUP BY ALL は現在プレビュー段階にあり、今後変更される可能性があります。

  2. 可読性: 上記のような複雑なクエリでは、GROUP BY ALL を使用することでどのカラムがグループ化されているか一目で分かりにくくなる可能性があります。特に、チーム内でコード レビューを行う際は注意が必要です。

まとめ

GROUP BY ALL は、特定のシナリオにおいて SQL クエリの記述を大幅に簡略化できる強力な機能です。特に、多次元分析や複雑なレポート生成のようなユース ケースで、その効果を発揮します。ただし、使用する際はプレビュー機能であることを念頭に置き、可読性を考慮することが重要です。

皆さんも GROUP BY ALL を試して、その効果を実感してみてはいかがでしょうか?複雑なデータ分析 プロジェクトでどのように活用できるか、ぜひ検討してみてください。

Hogetic Lab

Discussion