QUANTILE_STATE

description

  1. QUANTILE_STATE
  2. QUANTILE_STATE不能作为key列使用,建表时配合聚合类型为QUANTILE_UNION
  3. 用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制。
  4. 并且QUANTILE_STATE列只能通过配套的QUANTILE_PERCENTQUANTILE_UNIONTO_QUANTILE_STATE等函数进行查询或使用。
  5. QUANTILE_STATE 是一种计算分位数近似值的类型,在导入时会对相同的key,不同 value 进行预聚合,当value数量不超过2048时采用明细记录所有数据,当 value 数量大于2048时采用 [TDigest](https://github.com/tdunning/t-digest/blob/main/docs/t-digest-paper/histo.pdf) 算法,对数据进行聚合(聚类)保存聚类后的质心点。
  6. 相关函数:
  7. QUANTILE_UNION(QUANTILE_STATE):
  8. 此函数为聚合函数,用于将不同的分位数计算中间结果进行聚合操作。此函数返回的结果仍是QUANTILE_STATE
  9. TO_QUANTILE_STATE(INT/FLOAT/DOUBLE raw_data [,FLOAT compression]):
  10. 此函数将数值类型转化成QUANTILE_STATE类型
  11. compression参数是可选项,可设置范围是[2048, 10000],值越大,后续分位数近似计算的精度越高,内存消耗越大,计算耗时越长。
  12. compression参数未指定或设置的值在[2048, 10000]范围外,以2048的默认值运行
  13. QUANTILE_PERCENT(QUANTILE_STATE):
  14. 此函数将分位数计算的中间结果变量(QUANTILE_STATE)转化为具体的分位数数值

example

  1. select QUANTILE_PERCENT(QUANTILE_UNION(v1)) from test_table group by k1, k2, k3;

notice

使用前可以通过如下命令打开 QUANTILE_STATE 开关:

  1. $ mysql-client > admin set frontend config("enable_quantile_state_type"="true");

这种方式下 QUANTILE_STATE 开关会在Fe进程重启后重置,或者在fe.conf中添加enable_quantile_state_type=true配置项可永久生效。

keywords

  1. QUANTILE_STATE, QUANTILE_UNION, TO_QUANTILE_STATE, QUANTILE_PERCENT