BigQuery ソース プラグインを使用すると、BigQuery テーブルに接続してデータを読み込むことができます。BigQuery テーブルのデータは Cloud Storage の一時的な場所にエクスポートされ、そこからパイプラインに読み込まれます。
始める前に
Cloud Data Fusion には 2 つのサービス アカウントがあります。
- 設計時のサービス アカウント: Cloud Data Fusion API サービス エージェント
- 実行時のサービス アカウント: Compute Engine サービス アカウント
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 プロジェクトで、Compute Engine サービス アカウントに次の IAM ロールまたは権限を付与します。
- 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 のデータセットまたはテーブルに対して割り当てることもできます。
ストレージのレガシー バケット書き込み(
roles/storage.legacyBucketWriter
)。この事前定義ロールには、次の必要な権限が含まれています。storage.buckets.get
storage.objects.get
storage.objects.list
このロールとこれらの権限は、ユースケースに応じて Cloud Storage バケットに対して割り当てることもできます。
プラグインを構成する
- Cloud Data Fusion ウェブ インターフェースに移動し、[Studio] をクリックします。
- [Realtime] ではなく、[Data Pipeline - Batch] が選択されていることを確認します。
- [Source] メニューで、[BigQuery] をクリックします。BigQuery ノードがパイプラインに表示されます。
- ソースを構成するには、BigQuery ノードに移動して [プロパティ] をクリックします。
次のプロパティを入力します。完全版リストについては、プロパティをご覧ください。
- BigQuery ノードのラベルを入力します(例:
BigQuery tables
)。 接続の詳細を入力します。新しい 1 回限りの接続または再利用可能な既存接続を設定できます。
新しい接続
BigQuery に 1 回限りの接続を追加するには、次の操作を行います。
- [Project ID] フィールドの値は、自動検出された値のままにします。
- BigQuery データセットが別のプロジェクトにある場合は、[Dataset Project ID] フィールドに ID を入力します。
[Service account type] フィールドで、以下のいずれかを選択してそのフィールドにコンテンツを入力します。
- ファイルパス
- JSON
再利用可能な接続
既存の接続を再利用する手順は次のとおりです。
- [接続を使用] をオンにします。
- [接続を参照] をクリックします。
接続名([BigQuery デフォルト] など)をクリックします。
省略可: 接続が存在せず、再利用可能な新しい接続を作成する場合は [接続を追加] をクリックし、本ページにある [新しい接続] タブの手順をご参照ください。
[参照名] フィールドに、リネージに使用する名前を入力します。
省略可: インスタンスでデータセットがすでに使用可能な場合は、[参照] をクリックして読み取るデータを選択します。
[データセット] フィールドに、テーブルを含むデータセットの名前を入力します。
[テーブル] フィールドにテーブルの名前を入力します。
接続をテストするには、[Get schema] をクリックします。
省略可: [パーティション開始日] フィールドに、開始日文字列(この値を含む、
2021-01-11
など)を入力します。省略可: [パーティション終了日] フィールドに、終了日文字列(この値を含む、
2024-01-11
など)を入力します。省略可: [フィルタ] フィールドに、BigQuery の
WHERE
句を入力します。省略可: [Temporary bucket name] フィールドに、Cloud Storage バケットの名前を入力します。
省略可: [Encryption Key Name] フィールドに、Cloud Key Management Service(Cloud KMS)の暗号鍵名を入力します。詳細については、鍵のリソース名を取得するをご覧ください。
省略可: [ビューのクエリを有効にする] をオンにします。有効にする場合は、次の操作を行います。
- [一時テーブル作成プロジェクト] フィールドに、一時テーブルを作成するプロジェクト名を入力します。
- [Temporary table creation dataset] フィールドに、一時テーブルが作成されるデータセット名を入力します。
省略可: [検証] をクリックして、見つかったエラーに対処します。
[閉じる] をクリックします。 プロパティが保存され、Cloud Data Fusion ウェブ インターフェースでデータ パイプラインの構築を続行できます。
- BigQuery ノードのラベルを入力します(例:
プロパティ
プロパティ | マクロ対応 | 必要なプロパティ | 説明 |
---|---|---|---|
ラベル | × | ○ | データ パイプラインのノードの名前。 |
接続を使用 | × | × | ソースへの再利用可能な接続を参照します。接続を参照するときに表示される接続の追加、インポート、編集の詳細については、接続を管理するをご覧ください。 |
接続 | ○ | ○ | [接続を使用] がオンになっている場合は、選択した再利用可能な接続の名前がこのフィールドに表示されます。 |
プロジェクト ID | ○ | × | [接続を使用] がオフになっている場合にのみ使用されます。BigQuery ジョブが実行されるプロジェクト向けのグローバル固有識別子です。 デフォルトは auto-detect です。 |
データセットのプロジェクト ID | ○ | × | [接続を使用] がオフになっている場合にのみ使用されます。データセットが、BigQuery ジョブを実行するプロジェクトとは異なるプロジェクトに存在する場合、この値は、BigQuery データセットを含むプロジェクトのグローバル固有識別子になります。値が指定されていない場合、このフィールドはデフォルトで プロジェクト ID の値になります。プロジェクトの BigQuery データを読み取るには、指定したサービス アカウントに BigQuery データ閲覧者のロールを付与する必要があります。 |
サービス アカウントの種類 | ○ | × | 次のいずれかのオプションを選択します。
|
サービス アカウント ファイルのパス | ○ | × | サービス アカウント タイプの値が [ファイルパス] の場合にのみ使用されます。認証に使用するサービス アカウント キーのローカル ファイル システム上のパス。ジョブが 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 |
string 、datetime (ISO 8601 形式) |
STRUCT |
record |
TIME |
time (マイクロ秒) |
TIMESTAMP |
timestamp (マイクロ秒) |
JSON |
unsupported |
次のステップ
- Cloud Data Fusion のプラグインについて学習する。