Dataformで複数プロジェクトかつ複数環境にリリースする方法

こんにちは。SCSKの磯野です。

Dataformで、同一のSQLXファイルから複数環境(dev、prod)向けにリリースを行う方法を記載します。

使用するプロジェクトが1種類(project-a-dev、project-a-prd)であれば、下記公式ドキュメントの方法で問題ないと思います。
スキーマとプロジェクトごとに開発と本番環境を分割する | Dataform | Google Cloud

今回は、複数のプロジェクトかつ複数環境(project-a-dev、project-a-prd、project-b-dev、project-b-prd)を使用する場合におけるリリース方法を記載します。

ユースケース

本記事は、以下のユースケースにおけるリリース方法を記載しています。

  • 実行環境は、開発(dev)と本番(prod)の2つ
  • 開発テーブルと本番テーブルで共通のSQLXファイルを使いたいが、プロジェクトは分けたい
  • 1つのリポジトリで複数のプロジェクトへのリリースを管理したい

 

リリース方法概要

カスタムコンパイル変数を使用します。主な手順は以下の通りです。

  1. workflow_settings.yamlでコンパイル変数を定義する。デフォルトの値としてdev環境で使用する値を設定する
    dev環境でリリースする際は、デフォルトの値を使用する。
  2. prod環境でリリースする際は、リリース構成にてコンパイル変数をオーバーライドする
設定 開発環境(dev) 本番環境(prod)
Google Cloud プロジェクト project-a-dev
project-a-dev
project-a-prd
project-a-prd
Gitのブランチ ワークスペースの名前 main
ワークスペースのコンパイルのオーバーライド なし なし
リリース構成 なし
※ワークスペースから、手動で「実行を開始」する。
production
※カスタムコンパイル変数にてそれぞれのプロジェクトをオーバーライド

 

リリース方法詳細

事前準備

workflow_settings.yaml

vars:
  projectADefault: "project-a-dev"
  projectBDefault: "project-b-dev"

definitions/project_a/analytics/sample_table_a.sqlx

config {
type: "table",
database: dataform.projectConfig.vars.projectADefault,
schema: "analytics",
name: "sample_table_a",
}

SELECT * FROM
${ref("sample_table_b")}

definitions/project_b/mydataset/sample_table_b.sqlx

config {
type: "declaration",
database: dataform.projectConfig.vars.projectBDefault,
schema: "mydataset",
name: "sample_table_b",
}

リリース構成

  • リリースID:production
  • git Commitish:main
  • コンパイル変数
    キー
    projectADefault project-a-prod
    projectBDefault project-b-prod

    これにより、コンパイル変数がオーバーライドされる。

手順

開発環境(dev)の場合

ワークスペースから、手動で「実行を開始」します。

カスタムコンパイル変数を上書きせずに実行することで、デフォルトのコンパイル変数の設定で実行可能です。

本番環境(prod)の場合

<手動実行の場合>

  1. 事前にmainブランチへマージ・コンパイルしておく
  2. 手動ワークフローの実行にて、リリース構成productionを指定して実行。
    →オーバーライドされた状態で実行される

<スケジュール実行の場合>

リリース構成productionを指定してワークフロー構成を作成する

 

まとめ

いかがだったでしょうか。

今回はDataformにて、カスタムコンパイル変数を使用する場合におけるリリース方法をご紹介しました。

本記事が皆様のお役に立てれば幸いです。

 

著者について

データエンジニア。データ分析基盤の開発を主に担当しています。AWS・GCP学習中です!

磯野桃子をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(Google Cloud)は、Google Cloudの多彩なAIや各種サービスを活用したワンストップソリューションを提供します。SCSKのノウハウや体制を有効活用し、業務課題の解決に必要な全体検討と組み合わせで、最適な業務実装まで支援します。

Google Cloudデータ分析・活用基盤
シェアする
タイトルとURLをコピーしました