Skip to main content

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

 

商品ごとに価格が設定されていて、その価格のランクパーセンタイルで上記の様にA・B・C・Dにグループしてから、グループ別の在庫数合計数を出したいと考えています。

ランクパーセンタイルでif文で分類わけしても表計算上で使えませんでします。​

ここから商品名を抜くとsample2の様になってしまいます。

データはサンプルの為、店舗Aしかありませんが複数店舗あります。

店舗を変えて検索もしたいと考えています。​

行き詰まってしまった為、助けていただけると助かります。

ご教授お願い致します。​

4 Antworten
  1. 9. Sept. 2021, 00:56

    Tableauの表計算はビューの粒度(≒設置されたディメンションの数と内容)​に左右されます。なので、商品名を入れた状態で表計算を行ったときと商品名を抜いた状態で表計算を行ったときでは結果が変わります。

    この場合、​パーセンタイルは商品ごとに判定するため、ビューには商品名のディメンションが必要です。商品名を置いたままABCDのグループをそれぞれ集計するには、

     ① WINDOW_SUM関数を使って在庫数を合計する

     ② 各グループの先頭のデータだけを表示する

     ③ 商品名のヘッダを非表示にする​

    という3つの処理を追加します。

    ​① 今は商品ごとに在庫数が表示されていますが、これをグループごとに合計します。WINDOW_SUM関数を使うと行を跨いで合計することができますが、ここではグループが表計算で作られているため、CASE式を使って同じグループごとに集計します。

    Tableauの表計算はビューの粒度(≒設置されたディメンションの数と内容)​に左右されます。なので、商品名を入れた状態で表計算を行ったときと商品名を抜いた状態で表計算を行ったときでは結果が変わります。​この場合、​パーセンタイルは商品ごとに判定するため、ビューには商品名のディメンションが必要です。商品名を置いたままABCDのグループをそれぞれ集計するには、 ① WINDOW_SUM関数を使って在キャプチャ

    ② 在庫数のグループ合計は取れましたが、この時点では商品名が並んでいます。これをABCDにつきそれぞれ1行ずつにするため、再びCASE式を使って各グループの先頭のデータを特定します。

    キャプチャキャプチャ上の式は、各グループごとの先頭の商品名を返しますので、これを使って各グループの先頭行だけを表示するフィルタを作成します。この計算フィールドをフィルタに入れて真のみを保持すれば、ABCD各グループにつき1行だけ表示されるようになります。

    キャプチャキャプチャ

    ③ ここまででグループごとに1行ずつ在庫数の合計を表示することができたので、あとは形を整えます。不要な列(価格やパーセンタイルなど)はビューから削除しますが、ここで商品名を削除してしまうとまた計算結果が変わってしまいます。ですので、商品名だけは削除するのではなく「ヘッダを表示」のオプションをオフにして非表示にします。

    キャプチャグループをABCDの順に並べたいときは、行に置いているグループを行の先頭に移動しましょう。これでおそらく望んでいた形になったのではないかと思います。

    キャプチャ

    店舗を切り替える場合は、常に単一の店舗を選択するというのであれば、店舗のフィルタを設置すればOKです。​同時に2つ以上の店舗を表示するときは、どのような形に仕上げたいかによってやり方が変わってきます。

0/9000