Skip to main content

いつもお世話になっております。

タイトルの件について解決方法が思い浮かばないので、ご相談させてください。

顧客別に売上金額でランキングを付けて、ランキング上位N%の顧客でセットを作るとしたら、どのように実現​できますでしょうか?

添付したワークシートで考えると、顧客数が前部で793いますので、上位10%としたときには上から79位までの顧客がセットのINに入るようにしたいです。

パラメーターと連動させて実現できるかなと思っているのですが、よい方法が思い浮かびません。

ご教示いただけますと幸いです。

よろしくお願いいたします。

4 个回答
  1. 2021年12月21日 16:09

    ちょっと自信がありませんが、PERCENTILE関数を使うと実現できるかもしれません。

    ​上位何%を取るのかを指定するパラメータを作成し、それを使ってまず次のような式を作ります。[顧客ごと売上]は添付いただいたワークブックに最初から含まれていた計算フィールドで、FIXEDで作成されています。これにマイナスを掛けてパーセンタイルを計算し、またマイナスを掛けて符号を戻していますが、これはPERCENTILE関数が値を小さい順に並べてしまうためです。今回は降順で上位顧客を見たいので、マイナスを掛けることで順序を反転します。

    ちょっと自信がありませんが、PERCENTILE関数を使うと実現できるかもしれません。​​上位何%を取るのかを指定するパラメータを作成し、それを使ってまず次のような式を作ります。[顧客ごと売上]は添付いただいたワークブックに最初から含まれていた計算フィールドで、FIXEDで作成されています。これにマイナスを掛けてパーセンタイルを計算し、またマイナスを掛けて符号を戻していますが、これはPERCENT

    こうして特定したパーセンタイル点以上の最小の値を取り、これを閾値とします。

    image

    基本的にはこの閾値を超えたものが上位N%になりますが、閾値を超える(">")ものを拾うのではなく閾値以上(">=")とすべき場合があります。これはTableauのパーセンタイル計算の特性によるもので、かいつまんで言うと計算途中で「順位を引いて足す」ことが行われるためです。なので、閾値を超える必要があるのか、それとも閾値以上でよいのかを見分けるために次のような式を作成します。

    image

    あとは上記の超える/以上の場合分け​を行い、上位N%に該当するかどうかを0/1で判定します。

    image

    最後に、この判定式を使って顧客名のセットを作成します。

    image

    <結果>

    image

0/9000