GCPでDataformがパブリックプレビューになったので触ってみた
投稿者:今井 雄大
初めに
こんにちは。CI部の今井です。
最近 Dataform というサービスが GCP でパブリックプレビューになりましたね!
この Dataform というサービスは Google が2020年に買収したサービスで、 SQL の Workflow を実行しやすいサービスであるといえます。
私は案件の中で WEB 版のDataformを触っていたため、使いやすくなると考えられる GCP 版が出ることを今か今かと待っていました。
Dataform の特徴を以下のように Google は述べています。
・コラボレーションとデータ パイプラインの作成 – SQL でデータ ワークフローを開発し、Git を介して他のユーザーとコラボレーションを行うことができます。自動的に他のユーザーにも表示されるデータ ドキュメントを含めることも可能です。
・データ パイプラインのデプロイ – ダウンストリーム データセットを段階的に更新するデータ ワークフローをスケジュールすることで、論理データを最新の状態に保ち、コストとレイテンシを削減できます。
・データ品質の確保 – SQL でデータ品質チェックを定義し、それらのチェックが不合格になったときにアラートを自動的に受信できます。ログ、変更履歴、依存関係グラフを表示して、データの変更を把握できます。
今回触る GCP 版 Dataform はパブリックプレビューのため以下の画像のような依存関係グラフといった一部機能はまだ使うことができません。
ですが基本的な機能は使うことができますし、サービスの使用料は無料(クエリの課金に関しては BigQuery に含まれる)なので、触っていきたいと思います。
本ブログでは GitHub への接続まで行いません。詳しくは公式ドキュメントをご確認ください。
API の有効化からリポジトリの作成まで
まず最初に Dataform の API を有効化します。
再度、Dataform のリンク先に行き、以下の画面で CREATE REPOSITORY を押下します。
そして、リポジトリ名とリポジトリを作成するリージョンを指定します。
現在選択できるリージョンは EU と US のみしか選択できませんが、プレビュー版ではなくなった時には ASIA も選択できるようになると思います。
今回は US のリージョンを選択し、作成します。
作成した後に Dataform 用のサービスエージェントのアカウント(service-プロジェクトID@gcp-sa-dataform.iam.gserviceaccount.com)も一緒に作成されます。
このアカウントに BigQuery ユーザーのロールを付与する必要がありますので、メモに残しておくことをお勧めします。
メモした後に完了ボタンを押下します。
上記により、 GCP 側に Dataform 用のリポジトリを作成することができました。
そして、メモに取ったアカウントに BigQuery ユーザーのロールを付与します。
今回はロールの付与は主題ではないので省きます。
次は Workspace の作成から SQLX の作成まで行います。
Workspace の作成から SQLX の作成まで
作成したリポジトリ内に移動した後、 CREATE WORKSPACE のボタンを押下します。
試しに test という Workspaceを作成しました。
この作成した Workspace 内に移動して、 INITIALIZE WORKSPACE を押下します。
しばらくすると複数のファイルが作成されます。
作成された複数のファイルの中に、 dataform.json というファイルがあるので、 defaultLocation の行の US を あなたの BigQuery のデータセットが存在しているロケーションに変更します。(私の場合はasia-northeast1)
そのあとに、 definitions フォルダ内に作成された sample.sqlx を開きます。
そして、今回はタグを指定して SQL を実行したいと考えたため、以下のように SQLX を変更します。
そして、START EXECUTION からタグを選択し、 tags の中から TEST を選択します。
そのあと、サイドメニューが出てくるので、その中にある START EXECUTION を押して、 SQL を実行させます。
上記の SQL が実行され成功した場合は、 dataform というデータセットが作成され、sample というビューが作成されているはずです。
失敗した場合は、メモに取ったアカウントに BigQuery ユーザーのロールを付与することを忘れている可能性があります。
今回はロールの付与は主題ではないので省いています。
最後に
今回は Dataform のリポジトリを GitHub に連携せずに SQLX の実行までを行いました。
基本的には GitHub に接続し、運用する必要がありますが、 GCP 版の Dataform に手軽に触るため行いませんでした。
実際の案件では接続が必須になりますのでご注意ください。
今後、アップデートを重ねて機能が追加されていくと思いますので楽しみですね。
引き続き注視するようにします!
ご一読、ありがとうございました。