Skip to main content
勝 薄井 님이 Japan에 질문했습니다

ユーザコードごとの注文間隔の平均値を出力したいのですが、

FIXEDと表計算を併用できないとエラーになっています。

解決方法がございましたら、ご教授いただけないでしょうか。​

------------------------------------------------------------------------------------

AVG({FIXED [ユーザコード] : DATEDIFF('day', LOOKUP(MIN([注文日]),-1),MIN([注文日]))})

------------------------------------------------------------------------------------

답변 1개
  1. 2023년 2월 27일 오전 6:55

    残念ながら、LOD表現の中では表計算を使用できません。代替案としては3つあり、ひとつは元データに次回注文日または前回注文日のデータを追加する方法、ふたつめは表計算フィルタを駆使して計算する方法、そして最後はリレーションシップを利用する方法になります。どの方法にも利点・欠点があり、簡単にまとめると次のようになります。

    データを追加する方法の場合

     利点:Tableauでの計算量が小さく済む。注文間隔をディメンションとして扱うことができる

     欠点:事前加工が必要​。柔軟な条件付けができない

    表計算フィルタを利用する方法の場合

     利点:事前の加工が不要なケースが多い。集計条件を柔軟に変更しながら間隔の計算ができる

     欠点:計算量が多くなる。​計算された注文間隔をディメンションとして扱うことができない

    リレーションシップを利用する方法の場合

     利点:事前加工が不要。柔軟な条件付けが可能。注文間隔をディメンションとして扱うことができる

     欠点:データの量にもよるが、計算量が極めて多くなる​

    データを追加するのと表計算を使うのは利点欠点が表裏一体、リレーションはいいとこ取りできるが計算量に課題が生じる可能性がある、という感じです。実際におかれている状況・環境によってどの方法を採用するのかを選択することになります。​これが正解だというものはありませんが、

     ・データ量が小さい→リレーション

     ・ディメンションとして扱いたい→事前加工によるデータ追加

     ・とにかくすぐ試してみたい→表計算​

    という感じで私は判断することが多いです。​

    ひとつの返信で全部の例を出すのが難しいので添付ファイルを付けています。よければ見ていただいて、取り組み(利用する方法)の方向性が決まったり、不明な点などがあれば教えていただければと思います。

0/9000