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

Dataformの環境構築してみた① ~ ワークスペースの作成 ~

Last updated at Posted at 2024-10-14

はじめに

Dataformに関連して、GitHub Actionsを使ったデプロイフローの構築や、複数プロジェクトにまたがる開発環境と本番環境の設定を行ってみました。

この具体的な実装方法を、以下の3つの記事に分けて共有したいと思います。

  1. Dataformの環境構築してみた① ~ Dataformのワークスペースの作成 ~
  2. Dataformの環境構築してみた② ~ GitHub Actionsを使ったコンパイル ~
  3. Dataformの環境構築してみた③ ~ 開発環境と本番環境の構築(マルチプロジェクト) ~

Dataformの導入を検討している方や、マルチプロジェクト環境での運用を考えている方の参考になれば幸いです。

作るもの

3つの記事を通して、以下に示す開発&適用&パイプライン実行の流れを実現しようと思います。

開発環境と本番環境ともに、

first_name family_name
太郎 山田

というテーブルを、

full_name
山田 太郎

に変換するという単純な処理をサンプルとして実現します。

ワークスペース作成手順

BigQueryにテーブル作成

Dataformから参照予定のテーブルをBigQueryに作成します。

まずは、BigQueryのデータセットを作成します。

Screenshot 2024-10-10 at 8.13.48.png

次に、以下のコマンドでCSVファイルを作成し、BigQueryにアップロードします。

echo "太郎,山田" > ~/Desktop/temp.csv

Screenshot 2024-10-10 at 8.16.08.png

アップロード後、以下のようにテーブルが作成されていることを確認します。
Screenshot 2024-10-14 at 16.17.41.png

Dataform レポジトリ作成

SQLワークフローなどを格納するレポジトリを、Dataformの画面から作成します。
Screenshot 2024-10-14 at 15.12.03.png

最初のレポジトリを作成すると、ワークフロー実行時などに利用されるサービスアカウントが自動で作成されます。
Dataformによって作られるデフォルトのサービスアカウントは、service-<プロジェクトの番号>@gcp-sa-dataform.iam.gserviceaccount.comです。
そのサービスアカウントに、以下のように権限を割り当てます。

Screenshot 2024-10-14 at 15.26.09.png

Dataform ワークスペース作成

作成したレポジトリの詳細画面を開き、以下のようにワークスペースを作成します。
ワークスペースとは、Gitでいうとfeatureブランチのようなものです。
新しい機能を開発する際には、ワークスペースを使って開発&検証していきます。

Screenshot 2024-10-08 at 12.14.37.png
Screenshot 2024-10-08 at 12.15.03.png
Screenshot 2024-10-08 at 12.15.24.png

次に、レポジトリの「Settings」でスキーマの接尾辞に「${workspaceName}」を設定します。
こうすることで、ワークフロー実行時にワークスペース名が接尾辞として追加されたデータセットが作成され、各ワークスペースの実行結果が混在しないように設定できます。

Screenshot 2024-10-14 at 15.40.18.png

Screenshot 2024-10-14 at 15.37.57.png

作成したワークスペースの詳細画面に移動すると表示される「ワークスペースを初期化」というボタンを押して、ワークスペースを初期化しましょう。
デフォルトでいくつかのファイルが作成されます。

Screenshot 2024-10-08 at 12.15.43.png
Screenshot 2024-10-10 at 8.34.34.png

Dataform ソースコード記載

ワークスペース初期化時に作成された以下のファイルは不要なので削除します。

  • /definitions/first_view.sqlx
  • /definitions/second_view.sqlx

次に、/definitions/sources.jsを作成し、データ取得元となるテーブルを定義します。

declare({
    database: "Google Cloudのプロジェクト名",
    schema: "dataset1",
    name: "names",
})

/definitions/fullnames.sqlxを作成し、以下のようにSQLワークフローを定義します。

config {
    type: "table"
}


SELECT
  CONCAT(family_name, ' ', first_name) AS fullname
FROM
  ${ref('names')}

動作確認

「実行を開始」から「All ACTIONS」を選択し、処理を実行します。
Screenshot 2024-10-08 at 12.34.46.png

Screenshot 2024-10-14 at 16.45.50.png

実行結果として、BigQueryに「fullnames」というテーブルが作成されます。

Screenshot 2024-10-10 at 8.43.27.png

参考

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