使用するツール:tableau desktop
POSレジを使用して、その標準ツールで売上分析などがあって見たりはするんですが痒いところに手が届かないということが多々あります。具体的な標準の形式でまとめられてしまうので、「うちならこういう分析がしたいんだけど」が無いので、どうにかこうにか別途エクセルでまとめたりという作業が発生します。
じゃあ、生データ「取引履歴」をダウンロードしてカスタムすれば良いんじゃないか。
と思いついたんですが、これで非常に苦しめられることになります。
取引履歴をCSVでダウンロードすると、こと細かい情報が収集出来ます。取引日時からはじまり、商品名、商品JAN、価格、値引き、部門、販売か取り消しか、etc…
全量データがあるのでこれで安心となると落とし穴が。
エクセルでそのデータを表現したイメージ図
取引日時 | レシート番号 | 取引合計額 | 商品名 | 販売額 |
10/10 14:10 | 10019 | 600 | 青森りんごA | 200 |
10/10 14:10 | 10019 | 600 | 青森りんごB | 400 |
10/10 14:15 | 10020 | 300 | 青森りんごC | 300 |
10/10 14:20 | 10021 | 600 | 青森りんごD | 600 |
この状態でエクセルで取引合計額の総合計を出すと数字が狂います。同じ取引(レシート番号)が縦軸で重なっているので重複した計算額になってしまいます。なので、エクセルで無理やりやろうとすると、レシート番号でVlookupをかけて計算しなおしてなど、人の手を都度かけないといけないんですが、それが面倒くさい。
こんな時のBIツールですね。
BIツールでtableau desktopを使用しているのですが、それでやれば効率化出来るんじゃないか。
ということでやってみました。
初手、chatGPTに聞いてみる。
機械のことは機械に聞くのが一番早いので聞いてみました。質問した内容は、
tableauを使用して情報を整理する際に、「取引ID」ごとに売上をまとめたいのでfixedを使用して「商品単価」を合計したい。が、その前段で、「取引明細」が1の時は+に、2の時は-に条件付けして計算したいのだが、どのようにすればよいか。
この質問内容はちょっと工夫していて、まず「fixed」を使ってと入れてます。ちなみにこのfixed、excel関数とtableau関数で動きが異なるので注意が必要なんですが、今回は【tableau関数のfixed】です。
これ、ネットで調べると粒度が云々とかわかりにくい表現なので、ざっくり言うと「指定したカテゴリでまとめる」が出来るです。細かく言うと違うこともあるかもですが、自分の肌感はそんな感じです。
その上で「取引履歴」をもとに行っているので、販売もあれば返品もあるのですが、POSデータのものによっては総合計では-0,000円と返品金額がついていても、商品毎の取引のところにはマイナスがつかない、なんてこともあるので条件付けをしました。
それに対して帰ってきた回答が
- 計算フィールドの作成:
- Tableauで新しい計算フィールドを作成します。
- 計算フィールドの名前を「条件付き商品単価」とします。
- 計算式の設定:
- 以下のような計算式を設定します。
IF [取引明細] = 1 THEN
[商品単価]
ELSEIF [取引明細] = 2 THEN
-[商品単価]
ELSE
0
END
この計算式では、「取引明細」が1の場合は「商品単価」をそのまま使用し、2の場合は「商品単価」にマイナスを付けています。それ以外の場合は0を返します。 - FIXEDを使用した集計:
- 次に、取引IDごとにこの条件付き商品単価を合計するために、別の計算フィールドを作成します。計算フィールドの名前を「取引IDごとの商品単価合計」とします。
{ FIXED [取引ID] : SUM([条件付き商品単価]) }
この計算式では、各「取引ID」ごとに「条件付き商品単価」を合計しています。 - ビジュアライゼーションへの適用:
- 作成した「取引IDごとの商品単価合計」をビューにドラッグして、必要なビジュアライゼーションを作成します。
この手順で、取引IDごとに条件付きで商品単価を合計することができます。必要に応じて、他のフィールドや条件を追加してカスタマイズすることも可能です。
上手に質問出来たのか、この記述通りにtableau desktopに入力したらいけました。やっぱり機械関連の回答はChatGPTすごい。
若干、フィールドが違うところ指定したりしたので記述を変えたりはしました。ので、ChatGPTに質問する内容をカスタムして聞けば、極論、後はコピペでもいけるかもです。
コメント