dataform-osmosis で Dataform の SQLX ファイルを簡単リファクタリング!
Dataform Osmosis とは?
dataform-osmosis
は、Dataform で管理する SQLX ファイルを効率的に整理・整備するための CLI ツールです。このツールを使うことで、BigQuery のテーブル構造と SQLX ファイルの整合性を保ちながら、リファクタリングやメンテナンスを簡単に行うことができます。
Dataform 界隈では、dbt-osmosis
のような便利なエコシステムがまだ整っておらず、Dataform ユーザーが効率的に SQLX ファイルを管理できるツールが不足しています。そこで、必要なツールがなければ作るしかないと考え、dataform-osmosis
を開発しました。
Dataform のお世話になっている自分が、何か恩返しとして貢献できないかと考え、Dataform のコミュニティに役立つこのツールを公開することにしました。
主な機能
- BigQuery のカラム情報の同期:SQLX ファイルに BigQuery のカラム情報を自動的に追加
- カラム説明の継承:参照元テーブルから同じカラム名の説明を継承し、説明不足を補完
インストール方法
dataform-osmosis
は npm パッケージとして公開しています。以下のコマンドで簡単にインストールできます。
npm install -g dataform-osmosis
使い方
Dataform プロジェクトの検証
Dataform プロジェクトの設定を検証するには、次のコマンドを実行します:
dataform-osmosis valid
このコマンドは、BigQuery の設定を確認し、Dataform CLI が正しくセットアップされていることを確認します。
SQLX ファイルのリファクタリング
SQLX ファイルのカラム情報を更新して整列するには、以下のコマンドを使用します:
dataform-osmosis refactor -f [file_or_directory]
例えば以下のように table1 に依存する table2 があるとします。
table2.sqlx
には columns
が定義しておらずカラムの説明やポリシータグが付与されていません。
config {
type: "table",
"columns": {
id: "id",
name: {
description: "name",
bigqueryPolicyTags: ["projects/example-project/locations/us/taxonomies/123456789/policyTags/123456789"]
}
}
}
SELECT id,
name
FROM ${ref('table0')}
config {
type: "table"
}
SELECT *
FROM ${ref('table1')}
この状態で dataform-osmosis を実行すると table1.sqlx
の説明やポリシータグを table2.sqlx
が引き継ぐことができます。
> dataform-osmosis sqlx refactor -f definitions/
📁 Refactoring definitions/table1.sqlx
📁 Refactoring definitions/table2.sqlx
🔍️ Loading Dataform Project...
🔍️ Compiling Dataform Project...
🔍️ Loading BigQuery tables in dataform...
🔄 Refactoring definitions/table1.sqlx...
🔨 Updated SQLX file: definitions/table1.sqlx
✅️ Refactored definitions/table1.sqlx
🔄 Refactoring definitions/table2.sqlx...
🔨 Updated SQLX file: definitions/table2.sqlx
✅️ Refactored definitions/table2.sqlx
config {
"type": "table",
"columns": {
"id": {
"description": "id"
},
"name": {
"description": "name",
"bigqueryPolicyTags": [
"projects/example-project/locations/us/taxonomies/123456789/policyTags/123456789"
]
}
}
}
SELECT *
FROM ${ref('table1')}
設定方法
dataform-osmosis では、BigQuery のプロジェクト設定を workflow_settings.yaml ファイルを通じて設定できます。
defaultProject: your-project-id
defaultLocation: asia-northeast1
defaultDataset: dataform
defaultAssertionDataset: dataform_assertions
ぜひ使ってみてください!
Dataform をお使いの皆様にとって、dataform-osmosis が SQLX ファイル管理の効率化に役立つことを願っています。ぜひ使ってみてフィードバックをいただけると幸いです!
今後も機能追加や改善を行っていく予定ですので、気軽に Issue や PR でのご協力もお待ちしております!
Discussion