APPROXIMATE_COUNT_DISTINCT_OF_SYNOPSIS

从由 APPROXIMATE_COUNT_DISTINCT_SYNOPSIS 创建的概要对象中计算不同的非 NULL 值的数量。

行为类型

不可变

语法

APPROXIMATE_COUNT_DISTINCT_OF_SYNOPSIS ( synopsis-obj[, error-tolerance ] )

参数

synopsis‑obj
APPROXIMATE_COUNT_DISTINCT_SYNOPSIS 创建的概要对象。
error‑tolerance

表示所需容错百分比的数字值,分布在此函数返回的值周围。容错值越小,近似值越接近实际值。

您可以将 error‑tolerance 设置为最小值 0.88。Vertica 不实施最大值限制,但大于 5 的任何值都以 5% 的容错实现。

如果省略此实参,则 Vertica 将使用 1.25(%) 的容错率。

有关更多详细信息,请参阅 APPROXIMATE_COUNT_DISTINCT

限制

APPROXIMATE_COUNT_DISTINCT_OF_SYNOPSIS 和 DISTINCT 聚合不能在同一查询块中。

示例

下例查看并比较获得表列中唯一值的数量的不同方法:

返回表 store.store_sales_fact 的 product_key 列中唯一值的确切数量:

=> \timing
Timing is on.
=> SELECT COUNT(DISTINCT product_key) from store.store_sales_fact;
 count
-------
 19982
(1 row)

Time: First fetch (1 row): 553.033 ms. All rows formatted: 553.075 ms

返回 product_key 列中唯一值的近似数量:

=> SELECT APPROXIMATE_COUNT_DISTINCT(product_key) as unique_product_keys
   FROM store.store_sales_fact;
 unique_product_keys
---------------------
               19921
(1 row)

Time: First fetch (1 row): 394.562 ms. All rows formatted: 394.600 ms

创建一个表示一组具有唯一 product_key 值的 store.store_sales_fact 数据的概要对象,将概要存储在新表 my_summary 中:


=> CREATE TABLE my_summary AS SELECT APPROXIMATE_COUNT_DISTINCT_SYNOPSIS (product_key) syn
   FROM store.store_sales_fact;
CREATE TABLE
Time: First fetch (0 rows): 582.662 ms. All rows formatted: 582.682 ms

从保存的概要返回数量:


=> SELECT APPROXIMATE_COUNT_DISTINCT_OF_SYNOPSIS(syn) FROM my_summary;
 ApproxCountDistinctOfSynopsis
-------------------------------
                         19921
(1 row)

Time: First fetch (1 row): 105.295 ms. All rows formatted: 105.335 ms

另请参阅

近似计数区分函数