こんにちは、Yuinaです。
今日は、Tableau Publicを使って、美容&健康記録をカレンダー風に可視化していきます。
よろしくお願いいたします。
使用したデータ
使用したデータはChat Gptによる擬似データです。
2024/1~2025/6まであります。
ジャンル 日付 習慣内容 実施回数 時間(分) 満足度
ボディケア 2024/01/01 リンパマッサージ 1 7 3
スキンケア 2024/01/02 美白ケア 1 30 4
スキンケア 2024/01/03 UV対策 2 30 4
メンタルケア 2024/01/04 アファメーション 2 27 5
ボディケア 2024/01/05 骨盤ストレッチ 2 29 5
作ってみよう
まず、計算フィールドで「曜日」を作成します。
DATENAME('weekday',[日付])
続いて、月ごとの最終週数を作ります。
FIXED
キーワードでは、それぞれの月ごとに計算を実行することを示します。「MONTH([日付])」は日付を月でグループ化します。「MIN(DATEPART(‘week’,[日付]))」は、各月の週番号の最小値を見つけます。
{ FIXED MONTH([日付]):
MIN(DATEPART('week',[日付]))}
次に、週のディメンションを作ります。
CASE DATEPART('week',[日付])
WHEN [月ごとのの最終週数] THEN "Week 1"
WHEN [月ごとのの最終週数]+1 THEN "Week 2"
WHEN [月ごとのの最終週数]+2 THEN "Week 3"
WHEN [月ごとのの最終週数]+3 THEN "Week 4"
WHEN [月ごとのの最終週数]+4 THEN "Week 5"
WHEN [月ごとのの最終週数]+5 THEN "Week 6" END
日付の計算に関してはこちらを参照してみてください。
シェルフにディメンションを入れていきます。
列に日付(年)、曜日のディメンションを入れます。
行に週のディメンションを入れます。

フィルターに年を入れ、1年分のカレンダーのみが表示されるようにします。

同様に、日付(月)もフィルタに作成します。
年、月のフィルタの設定で単一値(リスト)にします。

習慣内容のディメンションをマークの「ラベル」のカードにドロップします。

土・日・平日で色分けします。
「土日」のディメンションを計算フィールドで作成します。

エラーが表示されたので、解消します。
「曜日」のディメンションのデータ型が文字列なので、
計算できないとのことです。
以下を作成し、データ型を整数型に設定します。

土日の計算フィールドも編集します。

「土日」のディメンションをマーク「色」のカードへドロップします。

大体完成しました。
ちなみに、テーブル内にある「満足度」のフィルタも設定しました。
満足度は、健康や美容による効果を数値で示したもの、と決めました。
満足度スコア(3〜5)に合わせて習慣内容が表示されるので、よかったら確認してみてください。
まとめ
計算フィールドには、こんな使い方もあるのかぁ〜と知れてよかったです!!
ただ、複数の習慣内容が存在する時に
習慣内容の数だけ、
同じ日付が表示されてしまうので解決したいです。
ありがとうございました✨