すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:hll

最終更新日:Sep 27, 2024

AnalyticDB for PostgreSQLにはGreenplum Databaseの機能があり、hll拡張機能をサポートしています。 AnalyticDB for PostgreSQLは、ページビュー (PV) やユニークビジター (UV) などのビジネスメトリックの迅速な推定を必要とするインターネット広告や推定分析などの業界に適しています。

hll拡張機能をインストールする

AnalyticDB for PostgreSQLインスタンスでhll拡張機能を使用する前に、インスタンスの [拡張機能] ページに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などのハッシュ関数。

    select hll_hash_boolean(true);
    select hll_hash_integer(1);
  • hll_add_agg: int型の値をhll_hashval型に変換し、その値を集計します。

    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: デバッグ情報を表示します。

    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)