BigQuery バッチソース

このページでは、Cloud Data Fusion での BigQuery バッチソース プラグインの構成について説明します。

BigQuery ソース プラグインを使用すると、BigQuery テーブルに接続してデータを読み込むことができます。BigQuery テーブルのデータは、Cloud Storage の一時的な場所にエクスポートされ、そこからパイプラインに読み込まれます。

始める前に

Cloud Data Fusion には通常、次の 2 つのサービス アカウントがあります。

BigQuery バッチソース プラグインを使用する前に、各サービス アカウントに次のロールまたは権限を付与します。

Cloud Data Fusion API サービス エージェント

このサービス アカウントには、すでに必要な権限がすべて付与されているため、権限を追加する必要はありません。参考までに、次の権限があります。

  • bigquery.datasets.get
  • bigquery.tables.create
  • bigquery.tables.get
  • bigquery.tables.updateData
  • bigquery.tables.update
  • bigquery.tables.export

デフォルトの設計時のサービス アカウントに加えて名前空間のサービス アカウントを使用している場合は、上記のリストから権限を追加します。

Compute Engine サービス アカウント

Google Cloud プロジェクトで、次の IAM のロールまたは権限を Compute Engine サービス アカウントに付与します。

  • BigQuery ジョブユーザーroles/bigquery.jobUser)。この事前定義ロールには、必要な bigquery.jobs.create 権限が含まれています。
  • BigQuery データ編集者roles/bigquery.dataEditor)。この事前定義ロールには、次の必要な権限が含まれています。

    • bigquery.datasets.get
    • bigquery.tables.create
    • bigquery.tables.get
    • bigquery.tables.updateData
    • bigquery.tables.update
    • bigquery.tables.export

これらのロールと権限は、ユースケースに応じて BigQuery のデータセットまたはテーブルに対して割り当てることもできます。

  • Storage レガシー バケット書き込みroles/storage.legacyBucketWriter)。この事前定義ロールには、次の必要な権限が含まれています。

    • storage.buckets.get
    • storage.objects.get
    • storage.objects.list

このロールとこれらの権限は、ユースケースに応じて Cloud Storage バケットに対して割り当てることもできます。

プラグインを構成する

  1. Cloud Data Fusion ウェブ インターフェースに移動し、[Studio] をクリックします。
  2. [Realtime] ではなく、[Data Pipeline - Batch] が選択されていることを確認します。
  3. [Source] メニューで、[BigQuery] をクリックします。BigQuery ノードがパイプラインに表示されます。
  4. ソースを構成するには、BigQuery ノードに移動して [プロパティ] をクリックします。
  5. 次のプロパティを入力します。完全版リストについては、プロパティをご覧ください。

    1. BigQuery ノードのラベルを入力します(例: BigQuery tables)。
    2. 接続の詳細を入力します。新しい 1 回限りの接続または再利用可能な既存接続を設定できます。

      新しい接続

      BigQuery に 1 回限りの接続を追加する手順は次のとおりです。

      1. [Project ID] フィールドの値は、自動検出された値のままにします。
      2. BigQuery データセットが別のプロジェクトにある場合は、[Dataset Project ID] フィールドに ID を入力します。
      3. [Service account type] フィールドで、以下のいずれかを選択してそのフィールドにコンテンツを入力します。

        • ファイルパス
        • JSON

      再利用可能な接続

      既存の接続を再利用する手順は次のとおりです。

      1. [接続を使用] をオンにします。
      2. [接続を参照] をクリックします。
      3. 接続名([BigQuery デフォルト] など)をクリックします。

      4. 省略可: 接続が存在せず、再利用可能な新しい接続を作成する場合は [接続を追加] をクリックし、本ページにある [新しい接続] タブの手順をご参照ください。

    3. [参照名] フィールドに、リネージに使用する名前を入力します。

    4. 省略可: データセットがインスタンスですでに使用可能な場合は、[参照] をクリックして読み取るデータを選択します。

    5. [データセット] フィールドに、テーブルを含むデータセットの名前を入力します。

    6. [テーブル] フィールドにテーブルの名前を入力します。

    7. 接続をテストするには、[スキーマを取得] をクリックします。

    8. 省略可: [パーティション開始日] フィールドに、開始日文字列(この値を含む、2021-01-11 など)を入力します。

    9. 省略可: [パーティション終了日] フィールドに、終了日文字列(この値を含む、2024-01-11 など)を入力します。

    10. 省略可: [フィルタ] フィールドに、BigQuery の WHEREを入力します。

    11. 省略可: [一時的なバケット名] フィールドに、Cloud Storage バケットの名前を入力します。

    12. 省略可: [暗号鍵名] フィールドに、Cloud Key Management Service(Cloud KMS)の暗号鍵名を入力します。詳細については、鍵のリソース名を取得するをご覧ください。

    13. 省略可: [ビューのクエリを有効にする] をオンにします。有効にする場合は、次の操作を行います。

      • [一時テーブル作成プロジェクト] フィールドに、一時テーブルを作成するプロジェクト名を入力します。
      • [一時テーブル作成データセット] フィールドに、一時テーブルを作成するデータセット名を入力します。
    14. 省略可: [検証] をクリックして、見つかったエラーに対処します。

    15. [閉じる] をクリックします。 プロパティは保存され、Cloud Data Fusion ウェブ インターフェースでデータ パイプラインを引き続き構築できます。

プロパティ

プロパティ マクロ対応 必須プロパティ 説明
ラベル × データ パイプラインのノードの名前。
接続を使用 × × ソースへの再利用可能な接続を参照します。接続を参照するときに表示される接続の追加、インポート、編集の詳細については、接続を管理するをご覧ください。
接続 [接続を使用] がオンになっている場合は、選択した再利用可能な接続の名前がこのフィールドに表示されます。
プロジェクト ID × [接続を使用] がオフになっている場合にのみ使用されます。BigQuery ジョブが実行されるプロジェクト向けのグローバル固有識別子です。
デフォルトは auto-detect です。
データセットのプロジェクト ID × [接続を使用] がオフになっている場合にのみ使用されます。データセットが、BigQuery ジョブを実行するプロジェクトとは異なるプロジェクトに存在する場合、この値は、BigQuery データセットを含むプロジェクトのグローバル固有識別子になります。値が指定されていない場合、フィールドはデフォルトでプロジェクト ID の値になります。プロジェクトの BigQuery データを読み取るには、BigQuery データ閲覧者のロールを、指定したサービス アカウントに付与する必要があります。
サービス アカウントの種類 × 次のいずれかのオプションを選択します。
  • ファイルパス: サービス アカウントが配置されているパス。
  • JSON: サービス アカウントの JSON コンテンツ。
サービス アカウント ファイルのパス × サービス アカウント タイプの値が [ファイルパス] の場合にのみ使用されます。認証に使用するサービス アカウント キーのローカル ファイル システム上のパス。ジョブが Dataproc クラスタで実行される場合は、値を自動検出に設定します。他のタイプのクラスタでジョブが実行される場合、クラスタ内の各ノードにファイルが存在する必要があります。
デフォルトは auto-detect です。
サービス アカウント JSON × サービス アカウント タイプの値が JSON の場合にのみ使用されます。サービス アカウントの JSON ファイル コンテンツ。
参照名 × リネージやメタデータのアノテーションなど、他のサービスに対してこのソースを一意に識別する名前。
データセット テーブルが属するデータセット。データセットは、特定のプロジェクト内に含まれています。データセットは、テーブルとビューへのアクセスを整理して制御する最上位のコンテナです。
テーブル 読み取り元のテーブル。テーブルでは、個々のレコードが行の形式にまとめられています。各レコードは列(フィールドとも呼ばれる)で構成されています。すべてのテーブルは、列名、データ型、その他の情報を記述するスキーマによって定義されます。
パーティション開始日 × パーティション開始日(この値を含む)。yyyy-mm-dd として指定します。値が指定されていない場合、パーティション終了日までのすべてのパーティションが読み取られます。
パーティション終了日 × パーティション終了日(この値は含まれない)。yyyy-mm-dd として指定します。値が指定されていない場合、パーティション開始日以降のすべてのパーティションが読み取られます。
フィルタ × 指定条件でフィルタリングを行う SQL クエリ。たとえば、次のクエリは Roster テーブルから、SchoolID 列の値が SchoolID > 52 であるすべての行を返します。
SELECT * FROM Roster WHERE SchoolID > 52;。これは、BigQuery の WHEREと同じように機能します。
一時バケット名 × 一時データ ストレージ用の Cloud Storage バケット。存在しない場合は、自動作成されます。一時データは読み取り後に削除されます。名前を指定しない場合は一意のバケットが作成され、実行が終了すると削除されます。
暗号鍵の名前 × プラグインによって作成されたバケットに書き込まれるデータを暗号化する鍵。バケットが存在する場合、この値は無視されます。詳しくは、CMEK をご覧ください。
ビューのクエリを有効にする × BigQuery の論理ビューとマテリアライズド ビューをオン / オフにします。BigQuery ビューはデフォルトでは有効になっていないため、ビューにクエリを実行すると、パフォーマンスのオーバーヘッドが生じる可能性があります。
デフォルトはオフです。
一時テーブル作成プロジェクト × [ビューのクエリを有効にする] がオンになっている場合にのみ使用されます。一時テーブルを作成する必要があるプロジェクト名。デフォルトでは、テーブルが存在するプロジェクトと同じプロジェクトになります。
一時テーブル作成データセット × 一時テーブルを作成する必要がある、指定プロジェクト内のデータセット。デフォルトでは、テーブルが存在するデータセットと同じデータセットになります。
出力スキーマ 読み取り先テーブルのスキーマ。[スキーマを取得] をクリックすると取得できます。

データ型マッピング

次の表は、BigQuery のデータ型と対応する CDAP の型を示しています。

BigQuery のデータ型 CDAP スキーマのデータ型
BOOL boolean
BYTES bytes
DATE date
DATETIME datetime, string
FLOAT64 double
GEO unsupported
INT64 long
NUMERIC decimal
BIGNUMERIC decimal
REPEATED array
STRING stringdatetime(ISO 8601 形式)
STRUCT record
TIME time(マイクロ秒)
TIMESTAMP timestamp(マイクロ秒)
JSON unsupported

次のステップ