ユニークビジターについて報告する必要がありますが、可能なすべてのキーの並べ替えや複数のテーブルの作成を避けたいと考えています。RedshiftのPostgresql-hll(または別のHyperloglogデータタイプ/構造)
単純な例として、のは、私は、次の列
- 日(月/年)COUNTRY_ID
- page_idのを持つテーブルで月間ユニークを報告する必要があるとしましょう
- は をdevice_type_id
- monthly_uniques
In DruidとRedisの場合、Hyperloglogのデータ型でこれを処理します(エラーの小さなマージンが許容されることを前提とします)。この場合、次元の任意の組み合わせでクエリを実行し、ユニークな推定値を受け取ることができます。
最も近い私はPostgreSQL-hllのプラグインですが、PostgreSQL 9.0+のようです。
Redshiftでこれを表現する方法はありますか?ビジターIDをあらかじめ計算したり保存したりする必要はありません(RedShiftの「近似カウント」の実装を使用することができます)。
注:RedShiftが優先プラットフォームですが、CitusDBなどの他の自己ホスト型PostgreSQLフォークがこれをサポートできることは既に知っています。 RedShiftでこれを行う方法を探しています。
最後に見たときから何か変わっていない限り、redshiftはカスタムタイプやプラグインを許可していません。私は、Python関数のカスタム関数サポートを追加したことを知っているので、関数としてhllアルゴリズムを実装できるはずですが、それはあなた自身で行う必要がある作業です。 – jmelesky
クエリレベルでは、hllはselect文のcountの前に "approximate"キーワードを使用して実装されます。残念ながら、これは生データや生データに近い場合にのみ機能します。私はこれをすべて保存する必要がないようにしようとしています。 Docs:http://docs.aws.amazon.com/redshift/latest/dg/r_COUNT.html – Sologoub
Redshiftはpostgresの回線プロトコルを話しますが、それは非常に長い時間前に分岐し、機能が大幅に変更されました。カスタムタイプを行う能力がないので、あなたが求めているものは可能だとは思わない。 – jmelesky