ClickHouse之采样查询(SAMPLE)

文章详细介绍了ClickHouse数据库中的SAMPLE子句,用于实现数据的近似查询处理。SAMPLE允许按比例或固定行数对MergeTree家族的表进行采样,提供了一种确定性的采样机制,可用于快速获取大数据集的统计信息。采样适用于有时间限制但又不想完整扫描所有数据的场景。文章还提到了如何校正聚合函数的值以及groupArraySample的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SAMPLE概念

SAMPLE 子句允许近似于 SELECT 查询处理。

启用数据采样时,不会对所有数据执行查询,而只对特定部分数据(样本)执行查询。

例如,如果您需要计算所有访问的统计信息,只需对所有访问的1/10分数执行查询,然后将结果乘以10即可。

近似查询处理在以下情况下可能很有用:

  • 当你有严格的时间需求(如<100ms),但你不能通过额外的硬件资源来满足他们的成本。
  • 当您的原始数据不准确时,所以近似不会明显降低质量。
  • 业务需求的目标是近似结果(为了成本效益,或者向高级用户推销确切结果)。

注意:
您只能使用采样中的表 MergeTree 族,并且只有在表创建过程中指定了采样表达式。

SAMPLE功能

  • 数据采样是一种确定性机制。 同样的结果 SELECT .. SAMPLE 查询始终是相同的。
  • 对于不同的表,采样工作始终如一。 对于具有单个采样键的表,具有相同系数的采样总是选择相同的可能数据子集。 例如,用户Id的示例采用来自不同表的所有可能的用户Id的相同子集的行。 这意味着您可以在子查询中使用采样 IN 此外,您可以使用 JOIN
  • 采样允许从磁盘读取更少的数据。 请注意,您必须正确指定采样键。

SAMPLE语法

SAMPLE Clause Syntax 产品描述
SAMPLE k 这里 k 是从0到1的数字。查询执行于 k 数据的分数。 例如, SAMPLE 0.1 对10%的数据运行查询。
SAMPLE n 这里 n 是足够大的整数。该查询是在至少一个样本上执行的 n 行(但不超过这个)。 例如, SAMPLE 10000000 在至少10,000,000行上运行查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术债务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值