首页 »
资源 » 此处
本页列出了 Envision 支持的聚合器。这些聚合器与函数相似,但具有更丰富的语法和选项。
聚合器的用法
不论是否在表与表之间执行连接,聚合器都有两种用法。
简单聚合
在不连接的情况下,聚合器
agg
的一般用法为:
u = agg(v) by [w1, w2, w3] sort [w4, w5] if c or x over [a .. b]
其中:
agg
为聚合器的名称。by
选项用于指示聚合时所要使用的组。可以对一个或多个值聚合。sort
选项用于指示聚合时的排序。可以对一个或多个值聚合。if
为聚合器过滤器。若存在该过滤器,所有 false
行在聚合时会被忽略。or
选项用于指示组为空时所要返回的值。over
选项用于定义聚合时间跨度,界限用天表示且相对于目标行的日期。
在未指定
by
的情况下,将按照上下文分组,赋值时通常使用语句的左边。
by
后面可以列出多个变量;如果只使用一个变量,则不必使用括号。
sort
选项通常对大部分聚合器(例如
max
)无影响,因为这些运算符不依赖于第一个位置的任何排序。但我们建议您对
first
和
last
聚合器使用此选项。
在未指定
if
的情况下,所有包括在内的行均等同于
if true
。
在未指定
or
选项的情况下,分组为空时将返回默认值:如为数字,返回
0
(零);如为布尔值,返回
false
;如为文本,返回空字符串;如为分布,返回零分布。
通过连接表进行聚合
第二种情况的一般语法与上述第一种相似,但存在不同之处:
u = agg(v) by [w1, w2, w3] sort [w4, w5] if c at [z1, z2, z3] or x
at
选项指示连接表时使用的组。请注意,这些组与
by
选项中使用的组必须存在一对一的对应关系。因此必须提供
by
选项,并且
by
和
at
选项中指定的项目必须相同。
基本聚合器
最常用的聚合器有:
avg
:仅适用于数值参数;返回行的平均值。count
:对为 true
(布尔值)、非零(数字)或非空(文本)的行计数。distinct
:对不同值的数目计数。first
:返回与最早的行相关的值,根据 sort
选项定义。last
:返回与最新的行相关的值,根据 sort
选项定义。max
:返回最高值。median
:与 Excel 中的 MEDIAN 函数作用相同。min
:返回最低值product
:仅为数值参数;返回产品系列值。ratio
:如果为 true,则返回布尔值百分比(介于 0 和 1 之间);否则返回非零的数值。空组的比率为 1。same
:返回所有预计为相同(否则将不满足条件)的分组值。sum
:仅限数值参数;返回行值之和。
逻辑聚合器
以下聚合器返回布尔值:
all
:如果所有输入行为 true
,则返回 true
,否则返回 false
。any
:如果所有输入行为 false
,则返回 false
,否则返回 true
。exists
:如果至少有一行传递给聚合器,则返回 true
。
临时聚合器
以下聚合器仅适用于具有
Date
列的表:
latest
(交叉表,特殊情况):返回观察到的最近值。latest
不兼容任何可用选项。
统计聚合器
以下聚合器可用于进行统计计算:
entropy
:返回组的 香农熵。返回的值以“香农”表示。mode
:与 Excel 中的 MODE 函数相似。percentile
(双参数,特殊情况):与 Excel 中的 PERCENTILE 函数相似。第二个参数为介于 0 和 1 之间的百分比值。stdev
:与 Excel 中的 STDEV 函数相似。stdevp
:与 Excel 中的 STDEV.P 函数相似。
随机变量
通过聚合可以形成分布(另请参阅
分布代数):
ranvar
:返回与数值观察相关的经验性随机变量。sumr
:返回随机变量的加卷积之和。与 sum()
是与 +
运算符相关联的聚合器一样, 聚合器 sumr()
则关联 +*
运算符。