日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基數統計(hll)

hll插件支持的數據類型HyperLogLog可以幫助您快速預估PV、UV等業務指標。

您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進行咨詢、交流和反饋,獲取更多關于插件的信息。

前提條件

  • 實例大版本為RDS PostgreSQL 11或以上。

    說明

    暫不支持RDS PostgreSQL 17。

  • 如實例大版本已滿足要求,但仍提示不支持,請升級內核小版本,具體操作,請參見升級內核小版本

背景信息

hll插件支持一種可變長、類似集合的數據類型HyperLogLog(hll),常用于在指定精度下返回近似的distinct值,例如1280字節的hll數據類型可以高精度地估計出近百億的distinct值。hll適合互聯網廣告分析或其他有類似預估分析計算需求的行業,可以快速預估PV、UV等業務指標。

更多hll插件使用方法請參見postgresql-hll

詳細算法說明請參見論文HyperLogLog: the analysis of a near-optimalcardinality estimation algorithm

創建hll插件

連接實例后創建hll插件,命令如下:

CREATE EXTENSION hll;

基礎操作

  • 創建一個含有hll字段的表,命令如下:

    create table agg (id int primary key,userids hll);
  • 將int數據類型轉換為hll_hashval,命令如下:

    select 1::hll_hashval;

基本操作符

  • hll類型支持如下操作符:

    • =

    • !=

    • <>

    • ||

    • #

    示例如下:

    select hll_add_agg(1::hll_hashval) = hll_add_agg(2::hll_hashval);
    select hll_add_agg(1::hll_hashval) || hll_add_agg(2::hll_hashval);
    select #hll_add_agg(1::hll_hashval);
  • hll_hashval類型支持如下操作符:

    • =

    • !=

    • <>

    示例如下:

    select 1::hll_hashval = 2::hll_hashval;
    select 1::hll_hashval <> 2::hll_hashval;

基本函數

  • 支持hll_hash_boolean、hll_hash_smallint和hll_hash_bigint等hash函數,示例如下:

    select hll_hash_boolean(true);
    select hll_hash_integer(1);
  • 支持hll_add_agg函數,可以將int轉換為hll格式,示例如下:

    select hll_add_agg(1::hll_hashval);
  • 支持hll_union函數,可以將hll并集,示例如下:

    select hll_union(hll_add_agg(1::hll_hashval),hll_add_agg(2::hll_hashval));
  • 支持hll_set_defaults函數,可以設置精度,示例如下:

    select hll_set_defaults(15,5,-1,1);
  • 支持hll_print函數,用于打印debug信息,示例如下:

    select hll_print(hll_add_agg(1::hll_hashval));

示例

create table access_date (acc_date date unique, userids hll);
insert into access_date select current_date, hll_add_agg(hll_hash_integer(user_id)) from generate_series(1,10000) t(user_id);
insert into access_date select current_date-1, hll_add_agg(hll_hash_integer(user_id)) from generate_series(5000,20000) t(user_id);
insert into access_date select current_date-2, hll_add_agg(hll_hash_integer(user_id)) from generate_series(9000,40000) t(user_id);
postgres=# select #userids from access_date where acc_date=current_date;
     ?column?
------------------
 9725.85273370708
(1 row)
postgres=# select #userids from access_date where acc_date=current_date-1;
     ?column?
------------------
 14968.6596883279
(1 row)
postgres=# select #userids from access_date where acc_date=current_date-2;
     ?column?
------------------
 29361.5209149911
(1 row)RDS PostgreSQL 11或以上版本均支持此功能,如提示不支持,請升級內核小版本,具體操作,請參見升級內核小版本。