はじめに
先日開催した01(zeroOne)の講演を見ていて、改めてデータの信頼性って大事だなと思いました。
TROCCOのワークフローでは、転送・加工したデータが欲しい状態になっているか確認する「データチェック」ができるので、これを使ってデータの信頼性を高めていきたいと思います!
今回のゴール
下記の3つをワークフローに組み込んで、1クリックでできるようにする
- データ転送
- データ加工
- データチェック
データチェックって何??
DWHに対してクエリを発行して、クエリ結果とエラー条件を突合し、条件に合致する場合に該当のタスクをエラーとする機能です。
今回の想定
- APIを使用して下記の条件でデータを取得し、DWHへ転送します
1. 東京エリアの店舗のみ
2. 50件分のデータを取得する
3. 取得した日時がわかるようにする
データ転送(APIでデータを取得して、DWHへ送る)
TROCCOのデータ転送機能を使っていきます。
データを入れるDWHの整備やAPIの利用については過去の記事で紹介したので詳しい内容は今回は省きます!
下記のように設定して 東京エリアの店舗 を 50件分、json形式 で取得するように指定します
プレビューを見てみると、1カラムにすべての情報が入った状態でした
情報量がとにかく多いので、ほしい情報だけ抜き取ります
今回はカラム定義を使って指定してみました
こんな感じで、指定した情報を1カラムにまとめて出力してくれました
この後加工を加えればいい感じになりそうなのでこのまま進めていきます
APIで取得したデータには、データの取得日時が含まれなかったのでTROCCOの設定で転送日時のカラムを追加してくれるようにします
保存して、データ加工に進んでいきます
データ加工
転送したままの状態だとすごく見辛いため、下記のような形にしたいです
現状
理想
TROCCOのデータマート定義(DWHに対してクエリが発行できる機能)を設定します
TOP画面より、データマート定義の新規追加をクリックし、先ほどデータを転送したDWH(今回はSnowflake)を選択します
設定の名前や、Snowflakeへの接続情報などを指定して下へ進むとこんな感じでクエリを書く項目があります
SELECT文だけでどうにかなる場合はデータ転送モード、それ以外の場合は自由記述モードをつかいます
クエリは難しいのでChatGPTに頑張ってもらいました!
これも保存して、ついにワークフローの設定に入っていきます
ワークフローの設定
ワークフローの設定をしていきます
TOP画面より、ワークフローの新規追加をクリックします
遷移先は細かい設定になるので、今回は飛ばしてさっそくここまで設定したデータ転送の設定とデータマート定義をワークフローに組み込んでいきます
こんな感じの画面が出てくるので、フローの一番初めに実行してほしいデータ転送を指定します
タスクがフローに追加されました
データマート定義も同じく追加していきます
データ転送とデータマート定義をつなぎます
これでデータ転送後にデータを加工するところまで1クリックでできるようになりました!
右上の自動レイアウトをクリックすると、自動でいい感じに並べ替えてくれます
データチェックを設定する
今回は、データ取得条件としている下記を満たすため3つのデータチェックを行います。
取得条件
1. 東京エリアの店舗のみ
2. 50件分のデータを取得する
3. 取得した日時がわかるようにする
データチェック
1.エリア情報のカラムに「東京」が50件ぴったり入っているか
2.店舗情報が50件ぴったりあるか
3.データ取得日時カラムにジョブ実行日時と等しいものが50件ぴったりあるか
では、データチェックの設定をしていきます
ワークフローに組み込めるタスクとしてデータチェックがあるのでクリックします
クエリを書く場所とエラー条件が指定できるようになっています
まず、1.エリア情報のカラムに「東京」が50件ぴったり入っているかをチェックするため、クエリを書いてエリア情報カラムの「東京」をカウントします
「東京」が50件に等しくない場合はエラーとなるようにエラー条件を指定します
保存すると、ワークフローにタスクとして追加されます
同じように、2.店舗情報が50件ぴったりあるかチェックするクエリを書いて保存します
最後に、3.データ取得日時カラムにジョブ実行日時と等しいものが50件ぴったりあるかのチェックについて設定します
転送日時を毎回手動で指定するのは面倒なのでカスタム変数を利用して設定します
クエリの$day$
にタスクを実行した日付を毎回入れてくれるようにしました!
保存して全部繋げるとこんな感じになります
いざ実行
実行ボタンを押して、正常に完了するか試してみます
待っていると、すべてのタスクが正常に完了していることが確認できました!
転送されたデータを見ても、すべて50件分・取得要件から外れることなく格納されていて問題ないことがわかりました
おわりに
今回は結構設定内容が多くなりましたが、データマート定義のクエリの記述以外はGUIでの操作とかなり簡単なクエリのみで実行しているのでスムーズにできました!
スケジュール設定などを使って自動でデータを連携している場合、いざデータを使うぞ!というときになってデータの不備に気づくこともあるかもしれません
データの転送時に大事な部分はチェックするようひと手間加えておくことでこのような事態を防ぐことができます!ぜひお試しください!
この設定しようと思った当初は、何故かデータチェックのタスク1つでチェックしたい内容をすべて記述しきらないといけないと思い込んでいました...
SQL初心者すぎてどうやって書くんだろう~~~~いいやり方ないかな??、と社内の事例など見ていたところ、 データチェックのタスクって複数入れていいんだ! と気づきかなりシンプルな設定にすることができました!
データチェックのタスクを複数に分けることで、どの部分でエラーが発生したかも簡単に見えるようになるのでこっちのほうが便利ですね
また、何か自分的気づきがあったら記事を書こうと思います!