HyperLogLog++ 関数は、少量のメモリを使用して大規模なデータセットから迅速に重複を削除し、クエリを高速化する近似集計関数です。
背景情報
HyperLogLog (HLL) は、近似的な重複排除のための効率的なアルゴリズムです。ページビュー (PV) やユニークビジター (UV) の統計など、高い精度を必要としないシナリオに適しています。HLL は、COUNT(DISTINCT) の軽量な代替手段として機能します。Bitmap などの正確な重複排除メソッドとは異なり、HLL はスケッチと呼ばれる内部の固定サイズデータ構造を使用します。このスケッチのメモリ使用量はデータ量に応じて増加しません。新しいデータが追加されると、単一のハッシュ計算のみが必要となります。ビッグデータシナリオでは、HLL の重複排除の誤差は通常 1% 以内です。これにより、効率と可用性のバランスが実現されます。
基本的な近似的な重複排除のために、MaxCompute は APPROX_DISTINCT 集計関数を提供します。ビジネスシナリオが多様化するにつれて、最終的な重複排除の結果を出力するだけでなく、中間的なスケッチデータ構造を保存または再利用する必要性が高まっています。これをサポートするために、MaxCompute は、最適化された基盤となるアルゴリズムを備えた HyperLogLog++ 関数の完全なセットを提供します。これらの関数は、メモリ使用量を削減し、推定精度を向上させることで、複雑な分析シナリオに対してより優れたサポートを提供します。
以下に、HLL の 2 つの典型的なシナリオを示します:
時系列での繰り返しクエリが必要なシナリオ:毎日生成される HLL スケッチを永続化できます。後続の計算では、当日の新しいデータを処理し、それを履歴スケッチとマージするだけで済みます。これにより、すべての履歴データを再度スキャンする必要がなくなり、クエリ効率が大幅に向上します。
複数の類似した列にまたがる組み合わせた重複排除が必要なシナリオ:各列に対してスケッチを構築して保存できます。その後、これらのスケッチを直接マージできます。これにより、重複排除の結果を効率的に再利用でき、計算オーバーヘッドを大幅に削減できます。
関数リスト
MaxCompute SQL は、次の HyperLogLog++ 関数をサポートしています。
関数 | 機能 |
同じタイプの値を集計して、新しい HLL++ スケッチを生成します。 | |
同じストレージクラスの複数の HLL++ スケッチをマージして、新しいスケッチを生成します。 | |
HLL++ スケッチからカーディナリティ推定を計算します。 | |
同じストレージクラスの複数の HLL++ スケッチをマージし、マージされたスケッチのカーディナリティ推定を返します。 |
注意事項
HLL_COUNT_EXTRACT、HLL_COUNT_MERGE、および HLL_COUNT_MERGE_PARTIAL 関数で使用される BINARY データは、HLL_COUNT_INIT 関数によって生成される必要があります。他のシステムやメソッドからのデータは使用できません。