【Dataform】リリース構成をREST APIで操作するには?

前回JavaScriptでDataformの定義を行う記事を書きました。記事では手動でリリース構成(Release Configurations)を行っている前提でお話をしましたが、今回はリリース構成を外部からREST APIで操作してみよう!というものです。

Dataformのリリース構成(Release Configuration)とは?

Dataformを利用する際は最初にリポジトリ、ワークスペース、リリース構成、ワークフローを作成します。それぞれ、だいたい以下のようなイメージです。

  • リポジトリ
    • Gitのリポジトリと同じようなイメージでいいと思います。プロダクト単位に1つ作るイメージ
  • ワークスペース
    • 「開発ワークスペースを使用すると、他のユーザーに影響を与えることなくコードを開発し、変更を commit して、リモートの Git リポジトリに commit を push できます。」と説明にあります。Gitのブランチのイメージです
  • リリース構成
    • ワークスペースにコミットされてたSQLXまたはJavaScriptを使って、定義したクエリや依存関係のコンパイルを行います。
    • コンパイルのタイミング(cron)、スキーマ(=データセット)の接尾辞、テーブルの接頭辞、コンパイル変数を指定できます。
  • ワークフロー
    • コンパイルされたクエリを実行し、実際にBigQueryからデータを取得したり、データをストアしたりします。
    • クエリの実行タイミング(cron)、実行するクエリや依存関係を含めるかの選択ができます。
リリース構成画面
ワークフロー画面

今回操作するリリース構成で大事なポイントは、リリース構成ごとにスキーマやテーブル名、変数を使える点です。例えば、クライアントごとにリリース構成を用意することで異なるテーブルからデータ取得して異なるテーブルに保存する、ということが実現できます。

REST APIでDataformを操作する

リリース構成は管理画面で手作業で設定するものになりますが、大量になるとミスが発生しそうです。そのため、APIを使って外部からリリース構成を操作できると便利そうですね。ここではREST APIでDataform操作する方法を紹介します。

今回はAdvanced REST Clinetを使って一番簡単なリリース構成一覧のGETを試してみます。

まずはアクセスポイントですが、以下ドキュメントに記載があります

https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories.releaseconfigs

LIST(GET)の項目には

/v1beta1/{name=projects/*/locations/*/repositories/*}/releaseConfigs

とあるので、

https://dataform.googleapis.com/v1beta1/projects/<GCPプロジェクト名>/locations/<プロジェクトのロケーション名>/repositories/<リポジトリ名>/releaseConfigs

ということになりそうです(ちょっと確証がありません。分かる方コメントください!)

あとは、GCPの認証トークンが必要になります。これはgcloud CLIを使って取得可能です。gcloud CLIがインストールされていない場合は、以下のページからOSに合った方法でインストールしてください。

https://cloud.google.com/sdk/docs/install?hl=ja

gcloudで以下のコマンドを実行すると認証トークンが取得できます。

gcloud auth print-access-token

取得されたトークンをAdvanced REST ClientのBearerのtokenに入力して実行してみましょう。

リリース構成の情報がjsonで返ってきましたね。

まとめ

今回はDataformのリリース構成をREST APIを使って操作する方法を紹介しました。記事ではGETだけでしたが、ドキュメントにあるcreate, delete, patchなどを使って外部サービスから定義を増やしたり更新したりできそうですね。

カテゴリー: GCP / データ基盤
GLASSで一緒に働いてみませんか?