2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Google Cloud】実践編 Dataformを使ってSQLでELT処理を実装する

Last updated at Posted at 2024-09-03

概要

GCPのサービスの一つであるDataformについて、以下の2部構成でまとめいる記事のうち、本記事は実践編です

初級編:https://qiita.com/Memmbers_DataAdventure/items/c39f06bf029bc8c75722
実践編:★本記事

データ分析に関係する業務の人目線での記事となっておりますが、参考になれば幸いです

この記事では、Google Cloud Platform (GCP) のサービスであるDataformの実践的な使い方について説明します
実践編として、5つの機能を紹介し、データ分析に携わる方々にとって役立つ内容となっています

1. 対象を指定して実行する

データ分析において、上流システムの一部不具合により、GCP上に構築したワークフローの中の特定の機能やシナリオを再実行したい場面があります。そんな時に便利な機能が「対象を指定して実行する」機能です

この機能は、SQLXのconfigブロックでtagsを作成し、実行時にそのtagsを指定することで簡単に行えます

以下のようにtagsを含むsqlxを作成
タグ付与.PNG

以下のように「実行開始」から作成したtagsの選択が可能
タグ実行.PNG

2. 全件洗い替えと差分更新

全件更新とは、対象のテーブルをゼロから再作成する処理です
一方、差分更新とは、集計元と集計先の差分のみを更新する処理です

Dataform上での実施方法は以下の通りです

  • 全件更新: ワークフロー上で「フル更新で実行」のオプションを選択する
  • 差分更新: incrementalテーブルタイプのテーブルを作成し使用する

ここでは差分更新の際のサンプルを以下に示します

configブロックで、incrememntalタイプを定義し、sqlにて差分の条件を記述することで、この条件に該当する差分を更新することが可能

部分実行.PNG

3. テストと通知

データ分析で使用するデータにnull値や重複があると、正確な分析が困難になります
Dataformのassertionsオプションを使用することで、事前にこれらの問題を検知することが可能です

例えば、nullでないことをチェックするには以下のようにする
テスト.PNG

実行ログやテスト結果が保存されるテーブルから結果を確認することができます

以下のように確認

テスト結果の確認3_1.png

4. その他の便利機能

その他、個人的におすすめな便利機能があるので、簡単に紹介します

4.1. カスタム変数の利用

Dataformではカスタム変数を使用することができます
カスタム変数を使用し、動的に値を変更したい場合に使うことができます

詳細は、以下の各ドキュメントをご覧ください

4.2. 他サービスとの連携

また、ワークフローを構築すると、都度ログを確認する作業が必要になります
この作業を効率化するために、エラー検知とその結果をSlackに通知する仕組みを構築することが可能です
これにより、エラーが発生した場合のみ通知を受け取り、その通知でログを確認することができます

詳細な手順は以下の記事を参照してください

まとめ

Dataformを使用してSQLのワークフローを構築し、管理・運用するための実践的な機能を紹介しました
これらの機能を効果的に利用することで、データ品質の向上や開発生産性の向上に貢献できれば幸いです

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?