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`を返します。