ハイブの多次元分析
春には澄んだ谷空に春の雨が衝撃を与え、夏には芒が茂り夏の暑さが結びつき、秋には露が冷たく霜が降り、冬には雪が降り、少し厳しい寒さが伴います。今日は2023年最後の節気、大雪です。大雪祭りの後は全国的に気温が大幅に下がり、北方の寒気の活動が活発になってきました。皆様も寒さには十分気をつけてくださいね
本題に入りますが、この記事では主に、Hive、Spark、Presto クエリ エンジンの機能強化GROUP BY
と、Hive に基づく関連構文を紹介します。また、強化された多次元集計についても詳しく説明します。多次元シナリオケース分析による 3 つのエンジンの構文、それらの違い、および使用時の一般的な問題
1. 多次元解析の概要
多次元分析シナリオでは、GROUPING SETS
、CUBE
、ROLLUP
Hive では正式にこの分析を「分析」と呼んでいますGROUP BY
句で強化された集計、キューブ、グループ化、および概要
では、強化された集計と多次元分析とは何でしょうか?
拡張集計とは、SQL でグループ集計クエリを使用するときに GROUPING SETS
、CUBE
、ROLLUP
などを使用することを指します。操作する文。 Hive、Spark、Presto、FlinkSQL などの一般的なクエリ エンジンは、基本的にこの構文をサポートしています。強化された集計を使用すると、SQL コードが簡素化されるだけでなく、SQL ステートメントのパフォーマンスも向上します
多次元分析とは、複数の次元の分析ではなく、複数の次元の組み合わせの分析を指します。多次元分析シナリオでは、ディメンションの任意の組み合わせに基づくディメンション列クラスター名を復元して、チャートでのフィルターの民主的な使用をサポートできます。
多次元分析は主に多次元集計、つまり複数の次元からの結果を組み合わせて集計するために使用されます。
2. GROUPING SETS の多次元グループ化
Hive によるGROUPING SETS
の公式説明は次のとおりです。
GROUP BY
の GROUPING SETS
句を使用すると、同じレコードセット内で複数の GROUP BY
オプションを指定できます。すべての GROUPING SET
句は、 UNION
で接続された複数の GROUP BY
クエリによって論理的に表現できます
簡単に言うと、GROUP BY
のグループ化ルールとして複数のディメンション セットを指定し、その結果を結合します。その効果は、まずこれらのグループ ディメンションを個別にグループ化しGROUP BY
、次に結果を結合するUNION
ことと同じです。
たとえば、GROUPING SET
クエリと同等のGROUP BY
クエリは次のとおりです。
-- 示例1:
SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b GROUPING SETS ( (a,b) )
-- 等效于
SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b
-- 示例2:
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a,b), a)
-- 等效于
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b
UNION
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a
-- 示例3:
SELECT a,b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS (a,b)
-- 等效于
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a
UNION
SELECT null, b, SUM( c ) FROM tab1 GROUP BY b
-- 示例4:
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a, b), a, b, ( ) )
-- 等效于
SELECT a