Appearance
BigQuery
Codatum から BigQuery に接続し、SQLの実行やデータの管理ができます。コネクション全体の説明は コネクション を参照してください。
BigQuery 側の準備
サービスアカウントとサービスアカウントキーを用意し、対象プロジェクト・データセットに必要なロールまたは権限を付与します。
| 付与先 | ロール(または同等の権限) |
|---|---|
| プロジェクト | BigQuery Job User(または bigquery.jobs.create) |
| プロジェクト | BigQuery Read Session User(または bigquery.readsessions.create / getData / update) |
| データセット | BigQuery Data Viewer(または bigquery.tables.getData / bigquery.datasets.get / bigquery.tables.get / bigquery.tables.list) |
(オプション)プロジェクト ID の入力を省略してデータセット・テーブル情報を同期したい場合は、対象プロジェクトに resourcemanager.projects.get を付与します。
あとで使うため、対象の プロジェクトID を控えておいてください。
Codatum 側の設定
- グローバルナビ > ワークスペース設定 > コネクション を開き、コネクションを追加 を選択します
- Google BigQuery を選びます
- コネクション名 を入力します
- アクセスレベル を選択します
- JSONキーファイル の ファイルアップロード でサービスアカウントキーをアップロードします(Client Email は JSON から自動入力されます)
- プロジェクトID を入力します(JSON の
project_idが初期値として入る場合があります。手動変更も可能です) - (任意)ロケーション を選択します(ロケーション)
- 接続テスト を行い、コネクションを保存します
- 保存後に表示される同期対象の画面で、同期するデータセットを選びます(テーブルメタデータの同期)。スキップもできます
ロケーション
コネクションに ロケーション を指定すると、そのコネクションで実行するSQLの実行先を、指定したロケーションに固定できます。
TIP
意図しないロケーションで SQL が実行されないように、ロケーションの明示的な指定を推奨します。複数のロケーションにデータがある場合(レプリカを含む)は、ロケーションごとにコネクションを作成してください。以下の機能を利用して、1つのコネクションで複数のロケーションにまたがって SQL を実行すると、Codatum のキャッシュ機能による最適化が正しく動作せず、エラーになる場合があります。
選択できる値
既定は 指定しない(自動) です。
| 値 | SQLの実行先 |
|---|---|
| 指定しない(自動) | 参照するテーブルから BigQuery が実行先を決めます |
| US(マルチリージョン) | US |
| asia-northeast1(東京) | asia-northeast1 |
| asia-northeast2(大阪) | asia-northeast2 |
| asia-northeast3(ソウル) | asia-northeast3 |
| asia-east1(台湾) | asia-east1 |
| asia-southeast1(シンガポール) | asia-southeast1 |
| australia-southeast1(シドニー) | australia-southeast1 |
| us-central1(アイオワ) | us-central1 |
| us-east1(サウスカロライナ) | us-east1 |
| us-east4(北バージニア) | us-east4 |
| us-west1(オレゴン) | us-west1 |
テーブルメタデータの同期
ロケーションを指定した場合、テーブルメタデータの同期は次のようになります。
- コネクションのロケーションに存在しない(レプリカを含む)データセットは、同期エラーになります。同期対象から外してください
- サービスアカウントにプロジェクトの
BigQuery Data Viewer(またはbigquery.datasets.get)が付与されている場合は、同期対象の画面で、データセットのレプリカのロケーションも表示されます
- サービスアカウントにプロジェクトの
- datasetを自動追加 を有効にすると、コネクションのロケーションに存在すると確認できたデータセットだけが追加されます
ロケーションに関するエラーが出る場合
SQLを実行すると、次のようなエラーになることがあります。
Access Denied: Project <project>: User does not have bigquery.jobs.createGlobalQuery permissionNot found: Dataset <project>:<dataset> was not found in location <location>
前者は権限のエラーに見えますが、多くの場合の原因は、SQLの実行先と、参照しているデータセット(または他の SQLブロックの実行結果)とのロケーションの違いです。BigQuery は、ロケーションが異なるデータを1つのSQLで参照しようとすると、グローバルクエリとして実行しようとするため、このエラーになります。権限を付与するのではなく、次の順に確認してください。