🐕‍🦺

Dataformのregion設定でハマったこと(2023/5)

2023/05/16に公開

DataformとGoogle BQを連携する際のregion設定でハマったので解決策をシェアです。

ハマった点

Dataformのリポジトリ作成でMulti-regionsを設定できないため、googleBQとDataformの連携に苦労してしまった。

googleBQのmulti-regionsは以下の通り。詳細はこちら

BigQuery には次の 2 種類のデータとコンピューティング ロケーションがあります。

リージョンは、ロンドンなどの特定の地理的な場所となります。

マルチリージョンは、米国などの複数のリージョンを含む広い地理的なエリアとなります。マルチリージョン ロケーションは、シングル リージョンよりも大きい割り当てを提供できます。

解決策・結論

Dataformのリポジトリ作成時にus-central1,us-east1,us-west1のいずれかを作成しinitializeすると、dataform.jsonのdefaultLocationがUSで設定される。

dataform.json
{
  "defaultSchema": "dataform",
  "assertionSchema": "dataform_assertions",
  "warehouse": "bigquery",
  "defaultDatabase": "confident-truth-370200",
  "defaultLocation": "US"
}

dataform.jsonのdefaultLocationとgoogleBQのデータセットのロケーションが一致していれば、googleBQのテーブルからデータを読み込むことができる。
上のjsonファイルの場合だと、defaultLocationがUSなので、googleBQのmulti-regionsのUSと対応している。(公式ドキュメントに記載されていたわけではなく、コードの挙動からそのように推測している。)

Dataformのレポジトリを作成した際のロケーションは関係ない。

極端な例だと、以下の設定でもBQからデータを取り込むことができる。

  • レポジトリ作成時のロケーション ... US
  • dataform.jsonのdefaultLocation ... asia-northeast1
  • BQのデータセットのロケーション ... asia-northeast1

BQの2つのロケーションからDataformに取り込むことは、2023年5月時点では難しい。(ソース)

Discussion