内置函数

综述

我们努力保证PipelineDB同PostgreSQL的10.1+和11.0+版本保持完全兼容。因此,所有 PostgreSQL内置函数 都可以直接在PipelineDB中使用。

聚合

PipelineDB的设计初衷之一就是 提供简便、高性能的流式聚合,PostgreSQL的聚合函数在 流视图 中是完全支持的(还存在少数几个罕见的异常)。除了这一大票标准的聚合,PipelineDB也为时序流数据处理添加了一些特有 流聚合 算子。

查看 流聚合 部分了解更多PipelineDB的实用特性。

PipelineDB特有数据类型

PipelineDB提供了一系列原生数据类型来有力支持 概率数据结构和算法。您不会在数据表中手动创建这些类型,它们会被 流视图 显式地创建并作为 流聚合 的结果存储下来:

bloom
Bloom Filter
cmsketch
Count-Min Sketch
topk
Top-K
hyperloglog
HyperLogLog
tdigest
T-Digest

PipelineDB特有函数

使用PipelineDB的特有函数可以很好地与它自己的数据类型进行交互,如下所示:

Bloom Filter函数

注解

译者注:建议您先看看这些概念

bloom_add ( bloom, expression )

将给定的表达式作用到 Bloom Filter 上。

bloom_cardinality ( bloom )

返回 Bloom Filter 的基数,即集合中元素 去重后 的个数,误差非常小。

bloom_contains ( bloom, expression )

当Bloom filter 可能 包含给定的值时,会返回true,假阳率较小。

bloom_intersection ( bloom, bloom, … )

返回给定的多个Bloom filter的交集。

bloom_union ( bloom, bloom, … )

返回给定的多个Bloom filter的并集。

Bloom Filter Aggregates 中的聚合函数可用于生成Bloom filter数据。

Top-K 函数

topk_increment ( topk, expression )

增加给定 topk 中给定表达式的频数,结果返回 Top-K

topk_increment ( topk, expression, weight )

topk 中给定表达式增加指定权重的频数,结果返回 Top-K

topk ( topk )

返回给定 Top-K 及其相关频数的k个元组。

topk_freqs ( topk )

返回给定 Top-K 相关的最大k个频数。

topk_values ( topk )

返回给定 Top-K 相关的最大k个频率项。

Top-K Aggregates 可用于聚合并产生 topk 数据。

Frequency函数

freq_add ( cmsketch, expression, weight )

在给定的 Count-Min Sketch 上根据指定权重增加 表达式 的频数。

freq ( cmsketch, expression )

返回 表达式 在给定 Count-Min Sketch 上的频数,存在很小的误差。

freq_norm ( cmsketch, expression )

Returns the normalized frequency of expression in the given Count-Min Sketch, with a small margin of error.

返回 表达式 在给定 Count-Min Sketch 上的归一化频率,存在很小的误差

freq_total ( cmsketch )

返回给定 Count-Min Sketch 中的对象总数。

查看 Frequency Tracking Aggregates 章节了解 cmsketches 的相关聚合操作。

HyperLogLog函数

hll_add ( hyperloglog, expression )

将给定 表达 的结果添加给 HyperLogLog

hll_cardinality ( hyperloglog )

返会给定 HyperLogLog 的基数,大约有0.2%的误差。

hll_union ( hyperloglog, hyperloglog, … )

返回多个 hyperloglog 的并集。

查看 HyperLogLog Aggregates 部分了解如何对 hyperloglog 进行聚合。

Distribution函数

dist_add ( tdigest, expression, weight )

通过给定 t-digest 中的权重增加给定 表达式 的频率。

dist_cdf ( tdigest, expression )

给定一个 T-Digest,返回其基于 表达式 评估的分布函数,有很小的误差。

dist_quantile ( tdigest, float )

给定一个 tdigest,返回 float 对应的分位数,float 区间为 [0, 1]

查看 Distribution Aggregates 学习 tdigest 聚合函数。

Miscellaneous函数

bucket_cardinality ( bucket_agg, bucket_id )

返回 bucket_idbucket_agg 中的基数。

bucket_ids ( bucket_agg )

以数组形式返回包含给定 bucket_agg 的所有 bucket id

bucket_cardinalities ( bucket_agg )

以数组形式返回给定 bucket_agg 中的基数,每个桶都会被计算到。

查看 Miscellaneous Aggregates 了解更多 Miscellaneous Aggregates 的聚合函数。

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 构造。

Operational Functions

pipelinedb.activate ( name )

激活给定的流视图或流转换,详情见 激活和中止

pipelinedb.deactivate ( name )

中止给定的流视图或流转换,详情见 激活和中止

pipelinedb.combine_table( continuous view name, table )

将数据从 数据表 组合 到流视图中。 组合表 使用给定的流视图同数据表进行组合和聚合并产生结果

组合表 在回填流视图(可能是运行在一起完全隔离的环境中)时,组合形成的数据会在完全形成后回填到“实时的”的流视图中。

pipelinedb.get_views ( )

pipelinedb.get_transforms ( )

pipelinedb.truncate_continuous_view ( name )

将流视图中的所有数据都清除。

pipelinedb.version ( )

返回包含所有与PipelineDB版本相关的安装信息。

系统视图

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[]    |

更多的系统视图可以通过 内置统计视图 查看,其中包含PipelineDB进程,流查询和流的相关信息。