Skip to content

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 側の設定 ​

  1. グローバルナビ > ワークスペース設定 > コネクション を開き、コネクションを追加 を選択します
  2. Google BigQuery を選びます
  3. コネクション名 を入力します
  4. アクセスレベル を選択します
  5. JSONキーファイル の ファイルアップロード でサービスアカウントキーをアップロードします(Client Email は JSON から自動入力されます)
  6. プロジェクトID を入力します(JSON の project_id が初期値として入る場合があります。手動変更も可能です)
  7. (任意)ロケーション を選択します(ロケーション)
  8. 接続テスト を行い、コネクションを保存します
  9. 保存後に表示される同期対象の画面で、同期するデータセットを選びます(テーブルメタデータの同期)。スキップもできます

ロケーション ​

コネクションに ロケーション を指定すると、そのコネクションで実行する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 permission
  • Not found: Dataset <project>:<dataset> was not found in location <location>

前者は権限のエラーに見えますが、多くの場合の原因は、SQLの実行先と、参照しているデータセット(または他の SQLブロックの実行結果)とのロケーションの違いです。BigQuery は、ロケーションが異なるデータを1つのSQLで参照しようとすると、グローバルクエリとして実行しようとするため、このエラーになります。権限を付与するのではなく、次の順に確認してください。

  1. SQLのデータセット名・プロジェクト名に誤りがなく、データセットが存在することを確認します
  2. SQLが参照しているデータセットのロケーションを確認します。1つのSQLで参照するデータセットは、同じロケーションにそろえます(レプリカを含む)
  3. コネクションにロケーションを指定するか、ロケーションごとにコネクションを作成します
  4. 他の SQLブロックを参照するSQLだけでエラーになる場合は、キャッシュを使わない 最新データで実行 で解消するかを確認します。解消する場合も、3 の設定にすると再発を防げます