前回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を試してみます。
まずはアクセスポイントですが、以下ドキュメントに記載があります
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などを使って外部サービスから定義を増やしたり更新したりできそうですね。
株式会社GLASS CTO。2010年、株式会社日立製作所にてIT新技術の調査・検証、Project Management Office、システム開発、マーケティング業務に携わる。2017年、株式会社Webios 取締役副社長 / CTO に就任。2018年、GLASS開発チームに参画。
AWS,GCPでのクラウドシステム開発、Ruby,PHPでのスクラッチ開発、CMS,ECパッケージでのサイト構築(WordPress / WooCommerce, MovableType, EC-CUBEなど)、kintoneでのシステム開発などに携わっている。