3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TROCCO®Advent Calendar 2024

Day 20

TROCCOでデータ転送~データチェックまでを1クリックでできるように設定してみた

Last updated at Posted at 2024-12-20

はじめに

先日開催した01(zeroOne)の講演を見ていて、改めてデータの信頼性って大事だなと思いました。
TROCCOのワークフローでは、転送・加工したデータが欲しい状態になっているか確認する「データチェック」ができるので、これを使ってデータの信頼性を高めていきたいと思います!

今回のゴール

下記の3つをワークフローに組み込んで、1クリックでできるようにする

  • データ転送
  • データ加工
  • データチェック

データチェックって何??

DWHに対してクエリを発行して、クエリ結果とエラー条件を突合し、条件に合致する場合に該当のタスクをエラーとする機能です。

今回の想定

  • APIを使用して下記の条件でデータを取得し、DWHへ転送します
    1. 東京エリアの店舗のみ
    2. 50件分のデータを取得する
    3. 取得した日時がわかるようにする

データ転送(APIでデータを取得して、DWHへ送る)

TROCCOのデータ転送機能を使っていきます。
データを入れるDWHの整備やAPIの利用については過去の記事で紹介したので詳しい内容は今回は省きます!

下記のように設定して 東京エリアの店舗50件分json形式 で取得するように指定します

image.png

image.png

プレビューを見てみると、1カラムにすべての情報が入った状態でした

image.png

情報量がとにかく多いので、ほしい情報だけ抜き取ります
今回はカラム定義を使って指定してみました

スクリーンショット 2024-12-18 204102.png

こんな感じで、指定した情報を1カラムにまとめて出力してくれました
この後加工を加えればいい感じになりそうなのでこのまま進めていきます

image.png

image.png

APIで取得したデータには、データの取得日時が含まれなかったのでTROCCOの設定で転送日時のカラムを追加してくれるようにします

image.png

保存して、データ加工に進んでいきます

データ加工

転送したままの状態だとすごく見辛いため、下記のような形にしたいです

現状

image.png

理想

image.png

TROCCOのデータマート定義(DWHに対してクエリが発行できる機能)を設定します
TOP画面より、データマート定義の新規追加をクリックし、先ほどデータを転送したDWH(今回はSnowflake)を選択します

スクリーンショット 2024-12-18 205625.png

スクリーンショット 2024-12-18 205733.png

設定の名前や、Snowflakeへの接続情報などを指定して下へ進むとこんな感じでクエリを書く項目があります
SELECT文だけでどうにかなる場合はデータ転送モード、それ以外の場合は自由記述モードをつかいます

image.png

クエリは難しいのでChatGPTに頑張ってもらいました!

これも保存して、ついにワークフローの設定に入っていきます

ワークフローの設定

ワークフローの設定をしていきます
TOP画面より、ワークフローの新規追加をクリックします

スクリーンショット 2024-12-18 211025.png

遷移先は細かい設定になるので、今回は飛ばしてさっそくここまで設定したデータ転送の設定とデータマート定義をワークフローに組み込んでいきます

こんな感じの画面が出てくるので、フローの一番初めに実行してほしいデータ転送を指定します

スクリーンショット 2024-12-18 211617.png

スクリーンショット 2024-12-18 211743.png

タスクがフローに追加されました

スクリーンショット 2024-12-18 211857.png

データマート定義も同じく追加していきます

スクリーンショット 2024-12-18 212013.png

データ転送とデータマート定義をつなぎます
これでデータ転送後にデータを加工するところまで1クリックでできるようになりました!

スクリーンショット 2024-12-18 212140.png

右上の自動レイアウトをクリックすると、自動でいい感じに並べ替えてくれます

データチェックを設定する

今回は、データ取得条件としている下記を満たすため3つのデータチェックを行います。

取得条件
1. 東京エリアの店舗のみ
2. 50件分のデータを取得する
3. 取得した日時がわかるようにする

データチェック
1.エリア情報のカラムに「東京」が50件ぴったり入っているか
2.店舗情報が50件ぴったりあるか
3.データ取得日時カラムにジョブ実行日時と等しいものが50件ぴったりあるか

では、データチェックの設定をしていきます
ワークフローに組み込めるタスクとしてデータチェックがあるのでクリックします

スクリーンショット 2024-12-18 213759.png

クエリを書く場所とエラー条件が指定できるようになっています

スクリーンショット 2024-12-18 213840.png

まず、1.エリア情報のカラムに「東京」が50件ぴったり入っているかをチェックするため、クエリを書いてエリア情報カラムの「東京」をカウントします

image.png

「東京」が50件に等しくない場合はエラーとなるようにエラー条件を指定します

スクリーンショット 2024-12-19 172054.png

保存すると、ワークフローにタスクとして追加されます

image.png

同じように、2.店舗情報が50件ぴったりあるかチェックするクエリを書いて保存します

最後に、3.データ取得日時カラムにジョブ実行日時と等しいものが50件ぴったりあるかのチェックについて設定します
転送日時を毎回手動で指定するのは面倒なのでカスタム変数を利用して設定します

image.png

クエリの$day$にタスクを実行した日付を毎回入れてくれるようにしました!

保存して全部繋げるとこんな感じになります

image.png

いざ実行

実行ボタンを押して、正常に完了するか試してみます

スクリーンショット 2024-12-19 185453.png

待っていると、すべてのタスクが正常に完了していることが確認できました!

image.png

転送されたデータを見ても、すべて50件分・取得要件から外れることなく格納されていて問題ないことがわかりました

image.png

おわりに

今回は結構設定内容が多くなりましたが、データマート定義のクエリの記述以外はGUIでの操作とかなり簡単なクエリのみで実行しているのでスムーズにできました!

スケジュール設定などを使って自動でデータを連携している場合、いざデータを使うぞ!というときになってデータの不備に気づくこともあるかもしれません
データの転送時に大事な部分はチェックするようひと手間加えておくことでこのような事態を防ぐことができます!ぜひお試しください!

この設定しようと思った当初は、何故かデータチェックのタスク1つでチェックしたい内容をすべて記述しきらないといけないと思い込んでいました...
SQL初心者すぎてどうやって書くんだろう~~~~いいやり方ないかな??、と社内の事例など見ていたところ、 データチェックのタスクって複数入れていいんだ! と気づきかなりシンプルな設定にすることができました!
データチェックのタスクを複数に分けることで、どの部分でエラーが発生したかも簡単に見えるようになるのでこっちのほうが便利ですね

また、何か自分的気づきがあったら記事を書こうと思います!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?