Встроенные функции

Общие сведения

Так как Tantor PipelineDB полностью поддерживает нативный синтаксис PostgreSQL 15+, то и все встроенные функции PostgreSQL доступны пользователям Tantor PipelineDB.

Агрегатные функции

Поскольку одной из основных целей Tantor PipelineDB является обеспечение высокопроизводительной непрерывной агрегации данных, агрегатные функции PostgreSQL полностью поддерживаются в непрерывных представлениях (за исключением нескольких редких случаев). Помимо приведенного здесь набора стандартных агрегатных функций, в Tantor PipelineDB также добавлены некоторые собственные непрерывные агрегатные функции, специально разработанные для непрерывной обработки данных временных рядов.

Смотрите раздел Непрерывные агрегатные функции для получения дополнительной информации о некоторых полезных функциях Tantor PipelineDB.

Внутренние типы Tantor PipelineDB

Tantor PipelineDB поддерживает ряд встроенных типов для эффективного использования вероятностных структур данных и алгоритмов на потоках. Скорее всего, вам не придется вручную создавать таблицы с этими типами, но часто их возвращают непрерывные агрегатные функции, поэтому они автоматически создаются непрерывными представлениями. Подробнее об этих встроенных типах смотрите в разделе Вероятностные структуры данных и алгоритмы.

Встроенные функции Tantor PipelineDB

Tantor PipelineDB поставляется с рядом функций, которые полезны для взаимодействия с этими типами:

Функции фильтра Блума

bloom_add ( bloom, expression )

Добавляет данное выражение в фильтр Блума.

bloom_cardinality ( bloom )

Возвращает мощность данного фильтра Блума. Это количество уникальных элементов, которые были добавлены в фильтр Блума, с небольшой погрешностью или ошибкой.

bloom_contains ( bloom, expression )

Возвращает true, если фильтр Блума вероятно содержит заданное значение, с небольшой вероятностью ложного результата.

bloom_intersection ( bloom, bloom, … )

Возвращает фильтр Блума, представляющий пересечение заданных фильтров Блума.

bloom_union ( bloom, bloom, … )

Возвращает фильтр Блума, представляющий объединение заданных фильтров Блума.

Смотрите раздел Фильтры Блума для получения информации об агрегатных функциях, которые можно использовать для создания фильтров Блума.

Функции Top-K

topk_increment ( topk, expression )

Увеличивает частоту данного выражения в пределах заданного topk и возвращает полученный результат top-k.

topk_increment ( topk, expression, weight )

Увеличивает частоту данного выражения на указанный вес в пределах заданного topk и возвращает полученный top-k.

topk ( topk )

Возвращает до k кортежей, представляющих заданные значения top-k и соответствующие частоты.

topk_freqs ( topk )

Возвращает до k частот, связанных с заданными наиболее часто встречающимися значениями top-k.

topk_values ( topk )

Возвращает до k значений, представляющих заданные наиболее часто встречающихся значений top-k.

Смотрите раздел Top-K для получения информации об агрегатных функциях, которые можно использовать для создания объектов topk.

Функции частоты

freq_add ( cmsketch, expression, weight )

Увеличивает частоту данного выражения на указанный вес в пределах заданного Count-Min Sketch.

freq ( cmsketch, expression )

Возвращает количество раз, когда значение expression было добавлено к данному Count-Min Sketch, с небольшой погрешностью.

freq_norm ( cmsketch, expression )

Возвращает нормализованную частоту expression в данном Count-Min Sketch, с небольшой погрешностью.

freq_total ( cmsketch )

Возвращает общее количество элементов, добавленных в указанный Count-Min Sketch.

Смотрите раздел Отслеживание частоты для получения информации об агрегатных функциях, которые можно использовать для создания cmsketches.

Функции HyperLogLog

hll_add ( hyperloglog, expression )

Добавляет данное выражение к HyperLogLog.

hll_cardinality ( hyperloglog )

Возвращает мощность данного HyperLogLog, с погрешностью примерно 0,2%.

hll_union ( hyperloglog, hyperloglog, … )

Возвращает hyperloglog представляющий объединение данного hyperloglog.

Смотрите раздел HyperLogLog для получения информации об агрегатных функциях, которые можно использовать для создания объектов hyperloglog.

Функции распределения

dist_add ( tdigest, expression, weight )

Увеличивает частоту данного выражения на заданный вес в T-Digest.

dist_cdf ( tdigest, expression )

При заданном T-Digest возвращает значение соответствующей кумулятивной функции распределения, вычисленное для значения expression, с небольшой погрешностью.

dist_quantile ( tdigest, float )

При заданном tdigest возвращает значение для заданного квантиля, float. float должен быть в диапазоне [0, 1].

Смотрите раздел Распределение для получения информации об агрегатных функциях, которые могут быть использованы для создания объектов tdigest.

Различные функции

bucket_cardinality ( bucket_agg, bucket_id )

Возвращает мощность заданного bucket_id в заданном bucket_agg.

bucket_ids ( bucket_agg )

Возвращает массив всех идентификаторов бакетов, содержащихся в заданном bucket_agg.

bucket_cardinalities ( bucket_agg )

Возвращает массив мощностей, содержащихся в заданном bucket_agg, по одной для каждого идентификатора bucket_id.

Смотрите раздел Различные агрегатные функции для получения информации об агрегатных функциях, которые могут быть использованы для создания объектов bucket_agg.

date_round ( timestamp, resolution )

Округляет дату в меньшую сторону до ближайшего разрешения resolution (или бакета), выраженного в виде интервала. Часто применимо для суммирования. Например, для суммирования событий в интервалы по 10 минут:

CREATE VIEW v AS SELECT
  date_round(arrival_timestamp, '10 minutes') AS bucket_10m, COUNT(*) FROM stream
  GROUP BY bucket_10m;

year ( timestamp )

Сокращает заданную метку времени до года.

month ( timestamp )

Сокращает заданную метку времени до месяца.

day ( timestamp )

Сокращает заданную метку времени до дня.

hour ( timestamp )

Сокращает заданную метку времени до часа.

minute ( timestamp )

Сокращает заданную метку времени до минуты.

second ( timestamp )

Сокращает заданную метку времени до секунды.

set_cardinality ( array )

Возвращает мощность заданного множества массива. Множества могут быть построены с использованием set_agg.

Операционные функции

pipelinedb.activate ( name )

Активирует заданное непрерывное представление или преобразование.

pipelinedb.deactivate ( name )

Деактивирует заданное непрерывное представление или преобразование.

Смотрите раздел Активация и деактивация для получения дополнительной информации.

pipelinedb.combine_table( continuous view name, table )

Операция combine объединяет строки из данной таблицы table в данное непрерывное представление. combine_table использует определение запроса непрерывных представлений для объединения агрегированных значений из обоих отношений без потери информации.

combine_table можно использовать для таких целей как заполнение непрерывного представления (возможно, работающего на автономной установке), объединяя заполненные строки в «живое» непрерывное представление только после того, как они были полностью заполнены.

pipelinedb.get_views ( )

Возвращает множество всех непрерывных представлений.

pipelinedb.get_transforms ( )

Возвращает множество всех непрерывных преобразований.

pipelinedb.truncate_continuous_view ( name )

Сокращает все строки из указанного непрерывного представления.

pipelinedb.version ( )

Возвращает строку, содержащую всю информацию о версии вашей установки Tantor PipelineDB.

Системные представления

Tantor PipelineDB включает ряд системных представлений для просмотра нужной информации о непрерывных представлениях и преобразованиях:

pipelinedb.views

Описывает непрерывные представления.

  View "pipelinedb.views"
Column |  Type   |
-------+---------+
id     | oid     |
schema | text    |
name   | text    |
active | boolean |
query  | text    |

pipelinedb.transforms

Описывает непрерывные преобразования.

  View "pipelinedb.transforms"
Column |  Type   |
-------+---------+
id     | oid     |
schema | text    |
name   | text    |
active | boolean |
tgfunc | text    |
tgargs | text[]  |
query  | text    |

pipelinedb.stream_readers

Для каждого потока показывает все непрерывные запросы, которые читают из него данные.

  View "pipelinedb.transforms"
Column             |  Type     |
-------------------+-----------+
stream             | text      |
continuous_queries | text[]    |

Доступны дополнительные системные представления для просмотра статистики процессов Tantor PipelineDB, непрерывных запросов и потоков.