Перейти к основному содержимому
Версия: 2.0.x

ds_theta_count_distinct

Возвращает приблизительное значение агрегатной функции, аналогичное результату COUNT(DISTINCT col). ds_theta_count_distinct быстрее, чем COUNT(DISTINCT col), и использует меньше памяти для столбцов с высокой кардинальностью.

ds_theta_count_distinct похожа на APPROX_COUNT_DISTINCT(expr) и DS_HLL_COUNT_DISTINCT(expr), но с другой точностью, поскольку использует Apache DataSketches. Для получения дополнительной информации см. Theta Sketches.

Относительная погрешность составляет 3.125% (95% доверительный интервал). Для получения дополнительной информации см. таблицу относительных погрешностей.

Синтаксис

BIGINT ds_theta_count_distinct(expr)
  • expr: Столбец, в котором вычисляется приблизительное количество уникальных значений.

Примеры

mysql> CREATE TABLE t1 (
-> id BIGINT NOT NULL,
-> province VARCHAR(64),
-> age SMALLINT,
-> dt VARCHAR(10) NOT NULL
-> )
-> DUPLICATE KEY(id)
-> DISTRIBUTED BY HASH(id) BUCKETS 4;
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t1 select generate_series, generate_series, generate_series % 100, "2024-07-24" from table(generate_series(1, 100000));
Query OK, 100000 rows affected (0.29 sec)
mysql> select ds_theta_count_distinct(id), ds_theta_count_distinct(province), ds_theta_count_distinct(age), ds_theta_count_distinct(dt) from t1 order by 1, 2;
+-----------------------------+-----------------------------------+------------------------------+-----------------------------+
| ds_theta_count_distinct(id) | ds_theta_count_distinct(province) | ds_theta_count_distinct(age) | ds_theta_count_distinct(dt) |
+-----------------------------+-----------------------------------+------------------------------+-----------------------------+
| 100215 | 100846 | 100 | 1 |
+-----------------------------+-----------------------------------+------------------------------+-----------------------------+
1 row in set (0.62 sec)

Ключевые слова

DS_THETA_COUNT_DISTINCT,DS_HLL_COUNT_DISTINCT,APPROX_COUNT_DISTINCT