はじめに
Tableauにデータを蓄積していく中で、Box接続するの便利ですよね
今回はBOXで蓄積したデータをprepで読み込んで、データ更新をしていく方法を記載していきます
PrepへBox接続方法
https://help.tableau.com/current/pro/desktop/ja-jp/examples_box.htm
接続の+ボタンからBoxを選択してください
Boxを使ったデータ更新方法
データをユニオン
-
挿入したBoxファイルをクリック
-
設定、テーブル、データサンプル、変更のタブがでてくるので、テーブルをクリックする
-
ソース>複数のテーブルでユニオンを選択
-
次の場所で検索>フォルダ場所を指定する
(読み込みをサブフォルダーまで含める場合は、サブフォルダーを含めるにチェックする) -
ファイルフィルターで読み込みたいファイル名を記載する
変動する名前がある場合は、*とする
例えば、2024年1月利用料金.csv、2024年2月利用料金.csvなど年月でファイル名の前の部分が変動する場合は、「*利用料金.csv」という記載になる
Boxを使ったデータ更新方法(応用編)
ステータス変更などがあってただ純粋にユニオンしていくだけではうまくいかないケースがあったので、私が使った打開策をここで展開します
ステータス変更によるデータ更新の課題点
- 毎週、毎月、csvダウンロードして、データを蓄積していきたいが、日々ステータス変更が変わっていく可能性ある
- 蓄積するデータを重複させずに、ステータス変更データも更新させたい
打開策
- 重複判定し、重複排除
毎週、毎月データを蓄積させていくと、過去の案件が重複するので、重複を排除する
重複判定
IF ({PARTITION[申請番号], [ステータス]: { ORDERBY [Table Names] DESC: ROW_NUMBER() } } = 1) THEN '一意' ELSE '重複' END
重複排除
NOT ((([重複する行はありますか?] == "重複") AND NOT (ISNULL([重複する行はありますか?]))))
- ステータスを採番する(以下のステータスは例)
ステータス採番
IF [ステータス] = '処理中' THEN
1
ELSEIF [ステータス] = '承認' THEN
2
ELSEIF [ステータス] = '取り下げ' THEN
3
ELSEIF [ステータス] = '否認' THEN
4
ELSE
NULL
END
- 進行しているステータスを把握する
各案件に対して最大のステータス採番(=進行しているステータス)を取得する
MAXステータス
{FIXED [申請番号]:MAX([ステータス採番])}
- 最大のステータス採番と一致する行にフラグを立てる
ステータス採番が最大のステータス採番と一致する場合に1、それ以外の場合に0を返す計算フィールド
ステータスフラグ
IF [ステータス採番] = [MAXステータス] THEN 1 ELSE 0 END
- ステータスフラグを1だけに選択する
この処理で、前のステータスの情報を排除する
おしまいの言葉
文章に書くと短いが、ここにたどり着くまで長かった…
途中で混乱してもつまずいても、師匠が相談に乗ってくれたのが本当にありがたかったです
人のあたたかさを感じて、今日も頑張るんだぞう