Database & utility
Table macro
histogram_values()
Arguments & returns
histogram_values(source, col_name, bin_count, technique)
Table macro
| Overload link | source | col_name | bin_count | technique |
Returns |
|---|---|---|---|---|---|
| #01 | unknown | unknown | unknown | unknown |
TABLE |
Definition
WITH
bins AS (
SELECT
CASE
WHEN (
(
(
(
NOT (
can_cast_implicitly (min(col_name), CAST(NULL AS BIGINT))
OR can_cast_implicitly (min(col_name), CAST(NULL AS "DOUBLE"))
OR can_cast_implicitly (min(col_name), CAST(NULL AS TIMESTAMP))
)
)
AND (technique = 'auto')
)
OR (technique = 'sample')
)
) THEN (approx_top_k (col_name, bin_count))
WHEN ((technique = 'equi-height')) THEN (
quantile(
col_name,
main.list_apply (
generate_series(1, bin_count),
(lambda x: (x / CAST(bin_count AS "DOUBLE")))
)
)
)
WHEN ((technique = 'equi-width')) THEN (
equi_width_bins (min(col_name), max(col_name), bin_count, CAST('f' AS BOOLEAN))
)
WHEN (
(
(technique = 'equi-width-nice')
OR (technique = 'auto')
)
) THEN (
equi_width_bins (min(col_name), max(col_name), bin_count, CAST('t' AS BOOLEAN))
)
ELSE "error" (concat('Unrecognized technique ', technique))
END AS bins
FROM
query_table (CAST("source" AS VARCHAR))
)
SELECT
unnest(map_keys(histogram)) AS bin,
unnest(map_values(histogram)) AS count
FROM
(
SELECT
CASE
WHEN (
(
(
(
NOT (
can_cast_implicitly (min(col_name), CAST(NULL AS BIGINT))
OR can_cast_implicitly (min(col_name), CAST(NULL AS "DOUBLE"))
OR can_cast_implicitly (min(col_name), CAST(NULL AS TIMESTAMP))
)
)
AND (technique = 'auto')
)
OR (technique = 'sample')
)
) THEN (histogram_exact (col_name, bins))
ELSE histogram(col_name, bins)
END AS histogram
FROM
query_table (CAST("source" AS VARCHAR)),
bins
)