Hive の強化された集計、キューブ、グループ化、および要約




春には澄んだ谷空に春の雨が衝撃を与え、夏には芒が茂り夏の暑さが結びつき、秋には露が冷たく霜が降り、冬には雪が降り、少し厳しい寒さが伴います。今日は2023年最後の節気、大雪です。大雪祭りの後は全国的に気温が大幅に下がり、北方の寒気の活動が活発になってきました。皆様も寒さには十分気をつけてくださいね

本題に入りますが、この記事では主に、Hive、Spark、Presto クエリ エンジンの機能強化GROUP BYと、Hive に基づく関連構文を紹介します。また、強化された多次元集計についても詳しく説明します。多次元シナリオケース分析による 3 つのエンジンの構文、それらの違い、および使用時の一般的な問題

1. 多次元解析の概要


多次元分析シナリオでは、GROUPING SETSCUBEROLLUP

Hive では正式にこの分析を「分析」と呼んでいますGROUP BY 句で強化された集計、キューブ、グループ化、および概要

では、強化された集計と多次元分析とは何でしょうか?

拡張集計とは、SQL でグループ集計クエリを使用するときに GROUPING SETSCUBEROLLUP などを使用することを指します。操作する文。 Hive、Spark、Presto、FlinkSQL などの一般的なクエリ エンジンは、基本的にこの構文をサポートしています。強化された集計を使用すると、SQL コードが簡素化されるだけでなく、SQL ステートメントのパフォーマンスも向上します

多次元分析とは、複数の次元の分析ではなく、複数の次元の組み合わせの分析を指します。多次元分析シナリオでは、ディメンションの任意の組み合わせに基づくディメンション列クラスター名を復元して、チャートでのフィルターの民主的な使用をサポートできます。

多次元分析は主に多次元集計、つまり複数の次元からの結果を組み合わせて集計するために使用されます。

2. GROUPING SETS の多次元グループ化


Hive によるGROUPING SETS の公式説明は次のとおりです。

GROUP BYGROUPING SETS 句を使用すると、同じレコードセット内で複数の GROUP BY オプションを指定できます。すべての GROUPING SET 句は、 UNION で接続された複数の GROUP BY クエリによって論理的に表現できます

Hive官方文档:https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup< /span>

簡単に言うと、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

おすすめ

転載: blog.csdn.net/weixin_55629186/article/details/134856036
おすすめ