2016-08-18 10 views
0

ユニークビジターについて報告する必要がありますが、可能なすべてのキーの並べ替えや複数のテーブルの作成を避けたいと考えています。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でこれを行う方法を探しています。

+0

最後に見たときから何か変わっていない限り、redshiftはカスタムタイプやプラグインを許可していません。私は、Python関数のカスタム関数サポートを追加したことを知っているので、関数としてhllアルゴリズムを実装できるはずですが、それはあなた自身で行う必要がある作業です。 – jmelesky

+0

クエリレベルでは、hllはselect文のcountの前に "approximate"キーワードを使用して実装されます。残念ながら、これは生データや生データに近い場合にのみ機能します。私はこれをすべて保存する必要がないようにしようとしています。 Docs:http://docs.aws.amazon.com/redshift/latest/dg/r_COUNT.html – Sologoub

+0

Redshiftはpostgresの回線プロトコルを話しますが、それは非常に長い時間前に分岐し、機能が大幅に変更されました。カスタムタイプを行う能力がないので、あなたが求めているものは可能だとは思わない。 – jmelesky

答えて

0

技術的にはpostgresql由来のRedshiftは10年以上前にフォークされていましたが、ポストグルと同じ回線プロトコルを使用していますが、そのコードは大きく分かれています。その他の非互換性の中でも、カスタムデータ型は使用できなくなりました。つまり、あなたが使用しようとしているプラ​​グインのタイプは実現可能ではないでしょう。

しかし、あなたが指摘したように、すべての生データを取得できる場合は、組み込みの近似機能を使用できます。

関連する問題