KHyperLogLog Functions

    KHyperLogLog is a data sketch that compactly represents the association of two columns. It is implemented in Presto as a two-level data structure composed of a MinHash structure whose entries map to HyperLogLog.

    KHyperLogLog sketches can be cast to and from varbinary. This allows them to be stored for later use.

    khyperloglog_agg(x, y) → KHyperLogLog

    Returns the KHyperLogLog sketch that represents the relationship between columns x and y. The MinHash structure summarizes x and the HyperLogLog sketches represent y values linked to x values.

    cardinality(khll) → bigint

    This calculates the cardinality of the MinHash sketch, i.e. x’s cardinality.

    Returns the set intersection cardinality of the data represented by the MinHash structures of khll1 and khll2.

    jaccard_index(khll1, khll2) → double

    Returns the Jaccard index of the data represented by the MinHash structures of khll1 and khll2.

    uniqueness_distribution(khll) → map<bigint,double>

    For a certain value x', uniqueness is understood as how many y' values are associated with it in the source dataset. This is obtained with the cardinality of the HyperLogLog that is mapped from the MinHash bucket that corresponds to x'. This function returns a histogram that represents the uniqueness distribution, the X-axis being the uniqueness and the Y-axis being the relative frequency of x values.

    (khll, histogramSize) → map<bigint,double>

    reidentification_potential(khll, threshold) → double

    The reidentification potential is the ratio of x values that have a uniqueness under the given threshold.

    merge(khll) → KHyperLogLog

    Returns the KHyperLogLog of the aggregate union of the individual KHyperLogLog structures.

    merge_khll(array(khll)) → KHyperLogLog

    Returns the KHyperLogLog of the union of an array of KHyperLogLog structures.