BITMAP-UNION-INT
Описание
Подсчитывает количество различных неотрицательных целых чисел во входном выражении, игнорируя отрицательные значения и NULL.
Для поддерживаемых целочисленных входных данных эта функция эквивалентна COUNT(DISTINCT CASE WHEN expr >= 0 THEN expr END) и BITMAP_COUNT(BITMAP_AGG(expr)). Она эквивалентна COUNT(DISTINCT expr) только в том случае, если входные данные не содержат отрицательных значений.
Примечания по использованию
В версии, находящейся в разработке, отрицательные значения игнорируются. В более ранних выпусках отрицательные значения могут учитываться; поэтому запросы с отрицательными входными значениями после обновления могут возвращать другие результаты.
Синтаксис
BITMAP_UNION_INT(<expr>)
Параметры
| Параметр | Описание |
|---|---|
<expr> | Входное выражение. Поддерживаемые типы: TinyInt, SmallInt, Integer. |
Возвращаемое значение
Возвращает значение типа BIGINT, содержащее количество различных неотрицательных целых чисел. Значения NULL и отрицательные значения игнорируются. Для пустого набора входных данных или группы, содержащей только NULL и отрицательные значения, возвращает 0; результат никогда не равен NULL.
Пример
-- setup
CREATE TABLE pv_bitmap (
dt INT,
page INT,
user_id BITMAP
) DISTRIBUTED BY HASH(dt) BUCKETS 1
PROPERTIES ("replication_num" = "1");
INSERT INTO pv_bitmap VALUES
(1, 100, to_bitmap(100)),
(1, 100, to_bitmap(200)),
(1, 100, to_bitmap(300)),
(1, 300, to_bitmap(300)),
(2, 200, to_bitmap(300));
Query OK, 0 rows affected
Query OK, 5 rows affected
select bitmap_union_int(dt) from pv_bitmap;
+----------------------+
| bitmap_union_int(dt) |
+----------------------+
| 2 |
+----------------------+
select bitmap_union_int(dt) from pv_bitmap where dt is null;
+----------------------+
| bitmap_union_int(dt) |
+----------------------+
| 0 |
+----------------------+
Отрицательные целые числа исключаются, а ноль учитывается:
SELECT bitmap_union_int(x) AS nonnegative_count
FROM (
SELECT -1 AS x UNION ALL SELECT 0 UNION ALL SELECT 1
UNION ALL SELECT 1 UNION ALL SELECT NULL
) AS input;
+-------------------+
| nonnegative_count |
+-------------------+
| 2 |
+-------------------+
Для группы, содержащей только отрицательные значения и NULL, функция возвращает ноль:
SELECT bitmap_union_int(x) AS nonnegative_count
FROM (SELECT -1 AS x UNION ALL SELECT -2 UNION ALL SELECT NULL) AS input;
+-------------------+
| nonnegative_count |
+-------------------+
| 0 |
+-------------------+