Distinct_count(dimension or measure, [group-by level]) が想定どおりに動かない。

Athenaを直接クエリしてQuicksightを利用しています。
データ期間:3年
フィルター:1ヶ月分
ビジュアル形式:テーブル(以下で集計)

|week|user|jan_cd|購入回数|利用週数|

購入回数と利用週数を求めるために計算フィールドを利用しています。

購入回数:distinct_count ( jan_cd , [ user ] )
利用週数:distinct_count ( user , [ week ] )

利用週数は計算結果「4」で想定どおりに集計されますが、
利用回数は計算結果「30」となり、1ヶ月分にフィルターする前に計算した結果が返ってきているように見えています。

どのようにしたら、正しく計算を行うことができますか?

@optarc.yamaji

お問い合わせありがとうございます。

利用週数 の定義について確認させて下さい。
現在の定義を見ると、同一週における、ユニーク購入者数を出すような計算になっていると思います。

今の書き方ですとフィルタ適用された後の計算になりますので、フィルタ処理は動いている筈です。
30 という数値は、1ヶ月以内の特定週におけるユニーク購入者が30人いたということになるかと思います。

本来計算されたいことと異なっているように見えますので、Sample データと想定結果 のような情報を頂けますと認識の齟齬無くご案内ができるかと思います。

また、以下参考情報としてQuickSihgtにおける、 レベルアウェア計算 (LAC)についてご案内させて頂きます。

フィルタ処理の前に計算をしたい場合は、LAC-W 関数を使用し、PRE_FILTER 属性を付与することで実現できます。(今回、記載頂いた内容だと LAC-A となりますので、フィルタは適用された後にご記載頂いた計算が実行されます。)

以上、ご確認よろしくお願いいたします。

2 Likes

ご回答ありがとうございます。
定義としては、
利用週数:userが利用した週のユニーク数
購入回数:userが商品を購入した週のユニーク数
となります。

利用週数は計算結果を見ても、計算ができているのですが、30という数値が出てしまうのは購入回数になります。
ご指摘の通り定義と、計算式が異なっているように思いましたので、改めて確認してみます。

サンプルについては準備をしてみますので、少しお待ち下さい。

1 Like

@yusukez

先程改めて定義した内容で計算フィールドを作成したところ想定通りの動きをしました!

購入回数:distinct_count ( week , [ user , jan_cd ] )
利用週数:distinct_count ( week , [ user ] )

ありがとうございました。

2 Likes