![見出し画像](https://assets.st-note.com/production/uploads/images/172064831/rectangle_large_type_2_36710bdd766f23a53562fa49f77bac5a.png?width=1200)
[Tableau]Work Out Wednesdayに挑戦(#WOW2024 W47)
Tableauの基本操作にも慣れてきましたので、ここでWork Out WednesDayにチャレンジしてみました。
・Work Out Wednesday(WOW)とは?
Workout Wednesday – #WorkoutWednesday
Tableauコミュニティで毎週開催されるデータビジュアライゼーションのトレーニングチャレンジです。毎週水曜日にTableauを使った課題が公開され、参加者はその問題を解きながらスキルを磨くことができます。Tableauエキスパートたちが運営する自主的な取り組みですが、世界中のデータ愛好家たちが参加しているようです。具体的には参加者は主催者が毎週水曜日に公開するチャレンジの内容に従って、指定されたビジュアライゼーションを再現します。
課題は一般的に以下の手順で進めます:
1. チャレンジ用データセットをダウンロード
2. 見本のワークブックのデザインやビジュアル再現をよく観察して作業を行う
3. 完成したワークブックを共有する
初心者にとっては少し難易度が高いこともあるようなのですが、初めてのチャレンジとして興味のあるビューを再現(写経)し、スキルを磨いていこうと思います。
・今回チャレンジする課題の確認
#WOW2024 | Week 47 | Top 5 Product Sales vs Other Products – Workout Wednesday
![](https://assets.st-note.com/img/1738075683-LKOEI7yMZ1dVPcW05uDCmNl9.png?width=1200)
Top 5 Product Sales vs Other Products
限られたスペースで作業しながら、エンドユーザーにもう少し深く掘り下げられる機能(≒ドリルダウン)を再現していきます。
〇要件
• ダッシュボードサイズ:1000 x 800
• ワークシート:1つ
• サブカテゴリごとの製品レベルの平均売上を示す棒グラフを作成
• 以下のチャレンジレベルから1つを選択(1が最も簡単で、3が最も難しい)
• ツールヒントと書式設定を一致させる
〇課題
• アクションを使用して、ユーザーが単一のサブカテゴリを選択し、トップ5の製品と選択したサブカテゴリ内の残りの製品の平均を表すバーを表示できるようにする
• トップ5の製品をハイライト表示(#ce69be)
• 「その他」の製品のラベルには、そのグループに含まれる製品の数を指定
• サブカテゴリごとの平均値の参照線を追加
まずデータをダウンロードして中身を確認してみましょう。
![](https://assets.st-note.com/img/1738075803-50eGTd6rQJX39OS2EYUNwzl1.png?width=1200)
[Sub-Category]をクリックすると[Product Name]がその場で展開されるVizを作成していきます。その際にハイライト表示をするのはトップ5の製品のみ。それ以外の製品外の項目の展開は不要と理解しました。
パラメータを作成します
「選択するサブカテゴリ」を指定するためのパラメータを作成。
pSelectedSubCat(デフォルト値は「Tables」)。データ型を文字列に。
パラメータ作成の手順と設定画面のスクリーンショットを掲載。
![](https://assets.st-note.com/img/1738075868-41YhLtFblDx5qeH3MEiZSGNm.png?width=1200)
計算フィールドを作成します。
必要な計算フィールドを1つずつ作成していきます。
Is Selected SubCat
[pSelectedSubCat] = [Sub-Category]
![](https://assets.st-note.com/img/1738075973-TfQIsdazYxuWGFcSej2PhH7M.png?width=1200)
パラメーター [pSelectedSubCat](選択したサブカテゴリー)が[Sub-Category](データ内のサブカテゴリー)と一致しているかどうかを判定します。サブカテゴリが選択されているかを判定し、結果が 真(True) か 偽(False) で返されます。
Product to Display- Step1
IIF([Is Selected SubCat],[Product Name],"")
![](https://assets.st-note.com/img/1738076033-xmtWbnPBlQVzfg4oC7dshqTS.png?width=1200)
[Is Selected SubCat] が真の場合に [Product Name] を返し、偽の場合に空文字列(=何も表示しない)を返します。これにより、選択したサブカテゴリーに該当する商品のみを表示できます。pSelectedSubCatのパラメーターにはTablesがデフォルトで設定されています。Sub-Categoryに合致する列には製品名が反映されていることがわかります。
![](https://assets.st-note.com/img/1738076079-cUfobVM3e2HDmLXpR7W1Kniu.png?width=1200)
Sales by Sub Cat & Product
{FIXED [Sub-Category], [Product Name]: SUM([Sales])}
![](https://assets.st-note.com/img/1738076202-gQrVtSdFzjiNayqo5BLhOZI3.png?width=1200)
各サブカテゴリーごとの商品の平均売上を表示させたい。FIXEDで[Sub-Category]と[ProductName]を固定し、売上の合計を算出します。これを平均に変更したいので、AVG関数を作り、平均に変更させます。
AVG([Sales by Sub Cat & Product])
![](https://assets.st-note.com/img/1738076162-1vXYCLgnIBedqhcTtNba7Afx.png)
サブカテゴリーを「Sales by Sub Cat & Product」の平均値で降順にソートします。
![](https://assets.st-note.com/img/1738076210-zf7gyOjPZmQ3nAFhbVrdY0sT.png)
![](https://assets.st-note.com/img/1738076217-32BtCTqhxIKlVFz9DZ7MjNWr.png?width=1200)
Product to Displayにも並び替えの設定をします。
![](https://assets.st-note.com/img/1738076240-S79hKIrntdm120keGxRYTgVO.png)
セットを作成します。
トップ5の製品を識別するセットを作成(Product to Display Set)
「Product to Display – Step 1」を右クリックして「セットを作成」
![](https://assets.st-note.com/img/1738076266-eKlSPENQnJ4vUbmfHW9ciuOk.png?width=1200)
上位タブで次の数式を使用:
AVG(IF [Is Selected SubCat] THEN [Sales by Sub Cat & Product] END)
![](https://assets.st-note.com/img/1738076298-VeTLXNxBo81nY0qGb9kcp6QC.png?width=1200)
これを行に追加すると、上位製品に「In」が表示されます。
![](https://assets.st-note.com/img/1738076326-5NevaDoUI4LbTnBPljMEQV7d.png?width=1200)
上位5位に入らない「その他」区分を作ります。
Sub-Categoryの製品数を抽出。
Count Products Per Sub-Category
{FIXED [Sub-Category]: COUNTD([Product Name])}
![](https://assets.st-note.com/img/1738076404-6AG8MEePrY0ga71XTxbHoiqu.png?width=1200)
Product to Display – Step 2
IF NOT([Is Selected SubCat]) THEN ''
ELSEIF [Product to Display Set] THEN [Product Name]
ELSE 'Other:' + STR([Count Products Per Sub-Category] -5) + 'Products'
END
![](https://assets.st-note.com/img/1738076436-ivag4Lpb2eZMnAfSrWo1h6Pz.png?width=1200)
[Is Selected SubCat]で選択されていなければ何も返さないが、選択されている[Sub-Category]でTOP5に入っていれば[Product Name]を返します。選択されている物でなければ、文字列でOther:(製品数-5)'Products' を返しています。
![](https://assets.st-note.com/img/1738076484-tegk4WbmcdlOnMA2NxYrz89s.png?width=1200)
上位5位に対するランキング番号を割り当てる(INDEX関数)
Index to Display
IF MIN([Is Selected SubCat]) AND MIN([Product to Display Set]) THEN STR(INDEX()) ELSE '' END
MIN([Is Selected SubCat]) AND MIN([Product to Display Set])
この部分は2つの条件を確認しています
[Is Selected SubCat]の最小値がTRUE
[Product to Display Set]の最小値がTRUE
両方の条件がTRUEの場合、ANDによってこの部分全体がTRUEとなります。
TRUE の場合の処理:
STR(INDEX())
条件がTRUEの場合、INDEX()関数の結果を文字列に変換して返します。
INDEX()は現在の行のインデックス(順序)を返す表計算です。
FALSE の場合の処理:条件がFALSEの場合、空白文字列 " " を返します。
![](https://assets.st-note.com/img/1738076631-fqYNJ8dtyKZQzHo9UP0jsk2X.png?width=1200)
サブカテゴリーの全体的な平均商品売上を示す参照行を表示させます。
Avg Sales by Sub Cat and Product
{FIXED [Sub-Category]: AVG([Sales by Sub Cat & Product])}
![](https://assets.st-note.com/img/1738076667-PNBUEeXMy0kzV6ipL3IDqRK5.png?width=1200)
データを確認してみます。
![](https://assets.st-note.com/img/1738076679-tuTE4BczZ7DW8NFovj60KAm5.png?width=1200)
![](https://assets.st-note.com/img/1738076705-Q3zLDmH2kJiWnYltP7Cx5osc.png?width=1200)
色を付けるための関数を用意しましょう。
![](https://assets.st-note.com/img/1738076747-Igy8Wv1uTCzRlLZQPedf5sxN.png?width=1200)
着色します。
![](https://assets.st-note.com/img/1738076772-3S4OjYyFokERefKgDPscup96.png?width=1200)
見本を見ながらいろいろと整えていきます。
![](https://assets.st-note.com/img/1738076808-3ZsiNcgqpbR8nvhey4Kk5A1Y.png?width=1200)
パラメータの値を手動で変更して動作をテストします。シートをダッシュボードに追加し、パラメータ ダッシュボード アクションを作成します。サブカテゴリの設定でviz の選択時に、サブカテゴリ フィールドの値を渡して pSelectedSubCat パラメータを更新します。
![](https://assets.st-note.com/img/1738076844-1feERHy3MbcVPA0QW29Doalv.png?width=1200)
完成です。
![](https://assets.st-note.com/img/1738076868-1XpTJ9RESZewLAVgGO803x47.png?width=1200)
↓他のカテゴリも深堀できるようになりました。
![](https://assets.st-note.com/img/1738076894-HcWEqjAPNo5BO4SUdzQ7TC9x.png?width=1200)
これにて終了。この課題を通じては、パラメータの使い方からセット、FIXED計算の活用方法を学ぶことができました。初のWOWチャレンジでかなり時間を使ってしまいましたが、楽しみながら実施することができたのではないかなと思います。
それでは、また。