KHyperLogLog関数¶
Prestoは、KHyperLogLogアルゴリズムとデータ構造を実装しています。`KHyperLogLog`データ構造は、`khyperloglog_agg()`関数を使用して作成できます。
データ構造¶
KHyperLogLogは、2つの列の関連付けをコンパクトに表現するデータスケッチです。Prestoでは、エントリが`HyperLogLog`にマップされるMinHash構造で構成される2レベルのデータ構造として実装されています。
シリアライゼーション¶
KHyperLogLogスケッチは、`varbinary`との間でキャストできます。これにより、後で使用するたために保存できます。
関数¶
- khyperloglog_agg(x, y) -> KHyperLogLog()¶
列`x`と`y`の関係を表す`KHyperLogLog`スケッチを返します。MinHash構造は`x`を要約し、HyperLogLogスケッチは`x`値にリンクされた`y`値を表します。
- cardinality(khll) -> bigint()
MinHashスケッチのカーディナリティ、つまり`x`のカーディナリティを計算します。
- intersection_cardinality(khll1, khll2) -> bigint()¶
`khll1`と`khll2`のMinHash構造によって表されるデータの集合の共通部分のカーディナリティを返します。
- jaccard_index(khll1, khll2) -> double()¶
`khll1`と`khll2`のMinHash構造によって表されるデータのJaccardインデックスを返します。
- uniqueness_distribution(khll) -> map<bigint,double>()¶
特定の値`x'`について、一意性は、ソースデータセット内でいくつの`y'`値がそれに関連付けられているかとして理解されます。これは、`x'`に対応するMinHashバケットからマップされたHyperLogLogのカーディナリティを使用して取得されます。この関数は、一意性分布を表すヒストグラムを返します。X軸は`一意性`、Y軸は`x`値の相対頻度です。
- uniqueness_distribution(khll, histogramSize) -> map<bigint,double>()¶
指定された数のバケットを持つ一意性ヒストグラムを返します。省略した場合、値はデフォルトで256になります。 `histogramSize`より大きいすべての`一意性`値は、最後のバケットに累積されます。
- reidentification_potential(khll, threshold) -> double()¶
再識別ポテンシャルとは、指定された`threshold`未満の`一意性`を持つ`x`値の比率です。
- merge(khll) -> KHyperLogLog()
個々の`KHyperLogLog`構造の集合和の`KHyperLogLog`を返します。
- merge_khll(array(khll)) -> KHyperLogLog()¶
KHyperLogLog構造の配列の和集合の`KHyperLogLog`を返します。