- 类别:
:doc:`/sql-reference/functions-aggregation`(基数估算)、:doc:`窗口函数 </sql-reference/functions-window-syntax>`(基数估算)
HLL_ACCUMULATE¶
在聚合结束时返回 HyperLogLog 状态。
有关 HyperLogLog 的更多信息,请参阅 估计非重复值的数量。
HLL 在返回最终基数估计值时放弃其中间状态。在高级用例中,例如批量加载期间的增量基数估计,可能希望保持中间状态。中间状态稍后可以与其他中间状态组合(合并),也可以导出到外部工具。
与 HLL 相反,HLL_ACCUMULATE 不返回基数估计值。相反,它会跳过最终的估计步骤并返回算法状态本身。状态是最多 4096 个字节的二进制值。有关更多信息,请参阅 估计非重复值的数量。
- 另请参阅:
语法¶
聚合函数
窗口函数
有关 OVER 子句的详细信息,请参阅 窗口函数的语法和用法。
实参¶
expr要估计基数(非重复值数)的表达式。这通常是列名,但也可以是更通用的表达式。
使用说明¶
示例¶
这显示了估计加拿大各省不同邮政编码数量的一步。在此步骤中,我们计算了马尼托巴省不同邮政编码的近似数量,并存储了计算“状态”的内部表示,稍后我们可以将其与其他省份的类似信息相结合:
Here is another example. This example shows how to use the three related functions HLL_ACCUMULATE, HLL_ESTIMATE, and HLL_COMBINE.
创建简单的表和数据:
Create a table that contains the "state" that represents the current
approximate cardinality information for the table named sequence_demo:
Now create a second table and add data. (In a more realistic situation, the user could have loaded more data into the first table and divided the data into non-overlapping sets based on the time that the data was loaded.)
仅获取新数据的“状态”信息。
合并两批行的“状态”信息:
获取行组合集的近似基数: