mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-20 15:30:50 +00:00
2.3 KiB
2.3 KiB
AggregateFunction(name, types_of_arguments...)
聚合函数中的中间状态。可以在聚合函数中通过-State
后缀来访问它。为了在后续访问聚合数据,请您必须使用含有-Merge
后缀的相同聚合函数。
AggregateFunction
— 参数化的数据类型。
Parameters
-
聚合函数名
如果函数是参数化的,则还要指定其参数。
-
聚合函数参数的类型
Example
CREATE TABLE t
(
column1 AggregateFunction(uniq, UInt64),
column2 AggregateFunction(anyIf, String, UInt8),
column3 AggregateFunction(quantiles(0.5, 0.9), UInt64)
) ENGINE = ...
ClickHouse中支持的聚合函数包括 uniq, anyIf (any+If) 及 quantiles
Usage
Data Insertion
当写入数据时,请使用含有-State
后缀的函数的INSERT SELECT
语句。
Function examples
uniqState(UserID)
quantilesState(0.5, 0.9)(SendTiming)
不同于相对应的uniq
和quantiles
,含有-State
后缀的函数返回的是状态,而不是最终值。 也就是说,它们返回的是AggregateFunction
类型的值。
在SELECT
查询的结果中,AggregateFunction
类型的值能够表示所有ClickHouse输出格式所对应的特定二进制形式。 例如,如果使用SELECT
查询将数据转储为TabSeparated
格式,可以使用INSERT
查询将其转储回去。
Data Selection
当从AggregatingMergeTree
表中查询数据时,请使用GROUP BY
子句,并使用含有-Merge
后缀的相同聚合函数来写入数据。
后缀为-Merge
的聚合函数,可以对一组状态值进行组合,然后返回完整的数据聚合结果。
例如,以下的两个查询返回相同的结果:
SELECT uniq(UserID) FROM table
SELECT uniqMerge(state) FROM (SELECT uniqState(UserID) AS state FROM table GROUP BY RegionID)
Usage Example
请参阅 AggregatingMergeTree 的说明