外部データソースに対するテーブル定義ファイルの作成

このページでは、外部データソースに対するテーブル定義ファイルを作成する方法を説明します。外部データソース(フェデレーション データソースとも呼ばれます)は、データが BigQuery に格納されていない場合でも直接クエリできるデータソースです。

テーブル定義ファイル

テーブル定義ファイルには、外部テーブルのスキーマ定義とメタデータ(テーブルのデータ フォーマットや関連プロパティなど)が記述されています。テーブル定義ファイルを作成するときに、スキーマの自動検出を有効にして、外部データソースのスキーマを定義できます。コマンドラインを使用する場合には、スキーマをインラインで指定できます。また、スキーマ定義を含む JSON ファイルを使用することもできます。

テーブル定義ファイルは、BigQuery CLI や API とともに使用されます。GCP Console または従来の BigQuery ウェブ UI を使用して外部テーブルを作成する場合は、テーブル定義ファイルを使用しません。

テーブル定義を作成できる外部データソースは次のとおりです。

  • Cloud Storage

    • カンマ区切り値(CSV)
    • JSON(改行区切り)
    • Avro ファイル
    • Cloud Datastore エクスポート ファイル
    • Cloud Firestore エクスポート ファイル
  • Google ドライブ

    • カンマ区切り値(CSV)
    • JSON(改行区切り)
    • Avro ファイル
    • Google スプレッドシート(最初のタブのみ)
  • Cloud Bigtable

始める前に

テーブル定義ファイルを作成するには、データソースの URI が必要です。

外部の永続テーブルと一時テーブル

永続テーブルまたは一時テーブルを使用すると、BigQuery で外部データソースに対してクエリを実行できます。永続テーブルを使用する場合には、BigQuery データセット内に外部データソースにリンクするテーブルを作成します。テーブルが永続的であるため、データセット レベルでアクセス制御を行い、基礎となる外部データソースにアクセスできる他のユーザーとテーブルを共有できます。テーブルに対するクエリはいつでも実行できます。

一時テーブルを使用して外部データソースに対してクエリを実行する場合には、クエリを含むコマンドを送信し、外部データソースにリンクする一時テーブルを作成します。一時テーブルを使用する場合、BigQuery データセット内にテーブルを作成しません。テーブルはデータセットに永続的に保存されないため、このテーブルを他のユーザーと共有することはできません。一時テーブルを使用して外部データソースにクエリを実行する方法は、外部データに 1 回限りのアドホック クエリを実行する場合、あるいは抽出、変換、読み込み(ETL)プロセスを行う場合に便利です。

テーブル定義ファイルには、外部の永続テーブルまたは一時テーブルを記述できます。

スキーマの自動検出を使用してテーブル定義を作成する

インライン スキーマの説明またはスキーマ ファイルを使用せずに CSV、JSON または Google スプレッドシート ファイルを指定する場合、テーブル定義ファイルで --autodetect フラグを使用して "autodetect" オプションを true に設定します。自動検出を有効にすると、BigQuery はスキーマを可能な限り自動的に推測します。詳細については、BigQuery でのスキーマの自動検出をご覧ください。

スキーマの自動検出は、次のテーブル定義を作成する場合に使用できます。

  • Cloud Storage または Google ドライブに保存された JSON ファイル
  • Cloud Storage または Google ドライブに保存された CSV ファイル
  • Google ドライブに保存された Google スプレッドシート ファイル

JSON のテーブル定義

自動検出を有効にし、Cloud Storage または Google ドライブに保存された改行区切りの JSON ファイル用のテーブル定義を作成することができます。

Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドで --autodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI(例: gs://mybucket/myfile)で置き換えます。

    bq mkdef --autodetect --source_format=NEWLINE_DELIMITED_JSON "[BUCKET_URI]" > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect"true に設定されています。

    {
      "autodetect": true,
      "sourceFormat": "NEWLINE_DELIMITED_JSON",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。JSON ソースファイルに固有の設定はありませんが、一般設定の多くが JSON ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。スキーマの自動検出については、configuration.query.tableDefinitions.(key).autodetect をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドで --autodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。

    bq mkdef --autodetect --source_format=NEWLINE_DELIMITED_JSON "[DRIVE_URI]" > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect"true に設定されています。

    {
      "autodetect": true,
      "sourceFormat": "NEWLINE_DELIMITED_JSON",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。JSON ソースファイルに固有の設定はありませんが、一般設定の多くが JSON ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。スキーマの自動検出については、API リファレンスの configuration.query.tableDefinitions.(key).autodetect をご覧ください。

CSV のテーブル定義

自動検出を有効にし、Cloud Storage または Google ドライブに保存された CSV ファイル用のテーブル定義を作成することができます。

Google Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドで --autodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI(例: gs://mybucket/myfile)で置き換えます。

    bq mkdef --autodetect --source_format=CSV "[BUCKET_URI]" > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect"true に設定されています。

    {
      "autodetect": true,
      "csvOptions": {
        "allowJaggedRows": false,
        "allowQuotedNewlines": false,
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "quote": "\"",
        "skipLeadingRows": 0
      },
      "sourceFormat": "CSV",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。たとえば、ファイルにヘッダー行が含まれている場合、"skipLeadingRows"1 に変更します。

    "allowJaggedRows" など、CSV ファイル固有の設定があります。詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。スキーマの自動検出オプションについては、configuration.query.tableDefinitions.(key).autodetect をご覧ください。CSV オプションの詳細については、configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドで --autodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。

    bq mkdef --autodetect --source_format=CSV "[DRIVE_URI]" > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect"true に設定されています。

    {
      "autodetect": true,
      "csvOptions": {
        "allowJaggedRows": false,
        "allowQuotedNewlines": false,
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "quote": "\"",
        "skipLeadingRows": 0
      },
      "sourceFormat": "CSV",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。たとえば、ファイルにヘッダー行が含まれている場合、"skipLeadingRows"1 に変更します。

    "allowJaggedRows" など、CSV ファイル固有の設定があります。詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。スキーマの自動検出オプションについては、API リファレンスの configuration.query.tableDefinitions.(key).autodetect をご覧ください。CSV オプションの詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

Google スプレッドシートのテーブル定義

自動検出を有効にし、Google ドライブに保存された Google スプレッドシート ファイル(最初のタブのみ)用のテーブル定義を作成することができます。

CLI

  1. コマンドライン ツールの mkdef コマンドで --autodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。

    bq mkdef --autodetect --source_format=GOOGLE_SHEETS "[DRIVE_URI]" > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect"true に設定されています。

    {
      "autodetect": true,
      "sourceFormat": "GOOGLE_SHEETS",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。Google スプレッドシート ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.(key).googleSheetsOptions をご覧ください。共通設定の多くが Google スプレッドシート ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。スキーマの自動検出オプションについては、API リファレンスの configuration.query.tableDefinitions.(key).autodetect をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。スキーマの自動検出オプションについては、API リファレンスの configuration.query.tableDefinitions.(key).autodetect をご覧ください。Google スプレッドシート ファイル固有の設定については、configuration.query.tableDefinitions.(key).googleSheetsOptions をご覧ください。

インライン スキーマを使用してテーブル定義を作成する

自動検出を使用しない場合、インライン スキーマ定義を使用してテーブル定義ファイルを作成することができます。インライン スキーマ定義を使用するには、コマンドラインに [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] の形式でフィールドとデータ型を指定します。

インライン スキーマ定義は、次のテーブル定義を作成するときに使用できます。

  • Cloud Storage または Google ドライブに保存された JSON ファイル
  • Cloud Storage または Google ドライブに保存された CSV ファイル
  • Google ドライブに保存された Google スプレッドシート ファイル

JSON のテーブル定義

インライン スキーマを使用して、Cloud Storage または Google ドライブに保存された改行区切りの JSON ファイル用のテーブル定義を作成することができます。

Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI(例: gs://mybucket/myfile)で置き換えます。[FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] はスキーマ情報(例: Name:STRING,Address:STRING)で置き換えます。

    bq mkdef --noautodetect --source_format=NEWLINE_DELIMITED_JSON "[BUCKET_URI]" [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "NEWLINE_DELIMITED_JSON",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。JSON ソースファイルに固有の設定はありませんが、一般設定の多くが JSON ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。[FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] はスキーマ情報(例: Name:STRING,Address:STRING)で置き換えます。

    bq mkdef --noautodetect --source_format=NEWLINE_DELIMITED_JSON "[DRIVE_URI]" [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "NEWLINE_DELIMITED_JSON",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。JSON ソースファイルに固有の設定はありませんが、一般設定の多くが JSON ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

CSV のテーブル定義

インライン スキーマを使用して、Cloud Storage または Google ドライブに保存された CSV ファイル用のテーブル定義を作成することができます。

Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI(例: gs://mybucket/myfile)で置き換えます。[FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] はスキーマ情報(例: Name:STRING,Address:STRING)で置き換えます。

    bq mkdef --noautodetect --source_format=CSV "[BUCKET_URI]" [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "csvOptions": {
        "allowJaggedRows": false,
        "allowQuotedNewlines": false,
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "quote": "\"",
        "skipLeadingRows": 0
      },
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "CSV",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。たとえば、ファイルにヘッダー行が含まれている場合、"skipLeadingRows"1 に変更します。

    "allowJaggedRows" など、CSV ファイル固有の設定があります。詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。CSV ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。[FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] はスキーマ情報(例: Name:STRING,Address:STRING)で置き換えます。

    bq mkdef --noautodetect --source_format=CSV "[DRIVE_URI]" [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "csvOptions": {
        "allowJaggedRows": false,
        "allowQuotedNewlines": false,
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "quote": "\"",
        "skipLeadingRows": 0
      },
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "CSV",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。たとえば、ファイルにヘッダー行が含まれている場合、"skipLeadingRows"1 に変更します。

    "allowJaggedRows" など、CSV ファイル固有の設定があります。詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。CSV ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

Google スプレッドシートのテーブル定義

インライン スキーマを使用して、Google ドライブに保存された Google スプレッドシート ファイル(最初のタブのみ)用のテーブル定義を作成することができます。

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。[FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] はスキーマ情報(例: Name:STRING,Address:STRING)で置き換えます。

    bq mkdef --noautodetect --source_format=GOOGLE_SHEETS "[DRIVE_URI]" [FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE] > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "googleSheetsOptions": {
        "skipLeadingRows": 0
      },
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
        ]
      },
      "sourceFormat": "GOOGLE_SHEETS",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。Google スプレッドシート ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.sheetsOptions をご覧ください。共通設定の多くが Google スプレッドシート ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。Google スプレッドシート ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.sheetsOptions をご覧ください。

JSON スキーマ ファイルを使用してテーブル定義を作成する

自動検出やインライン スキーマ定義を使用しない場合、JSON スキーマ ファイルを作成して、テーブル定義ファイルの作成時にこのファイルを参照することもできます。JSON スキーマ ファイルは手動で作成し、ローカルマシンに保存する必要があります。Cloud Storage または Google ドライブでは JSON スキーマ ファイルの参照はサポートされていません。

JSON スキーマ ファイルは、次のテーブル定義を作成するときに使用できます。

  • Cloud Storage または Google ドライブに保存された JSON ファイル
  • Cloud Storage または Google ドライブに保存された CSV ファイル
  • Google ドライブに保存された Google スプレッドシート ファイル

JSON のテーブル定義

JSON スキーマ ファイルを使用して、Cloud Storage または Google ドライブに保存されている改行区切りの JSON ファイル用のテーブル定義を作成することができます。

Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI(例: gs://mybucket/myfile)で置き換えます。[PATH_TO_SCHEMA] はローカルマシンにある JSON スキーマ ファイルの場所で置き換えます。

    bq mkdef --noautodetect --source_format=NEWLINE_DELIMITED_JSON "[BUCKET_URI]" [PATH_TO_SCHEMA] > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "NEWLINE_DELIMITED_JSON",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。JSON ソースファイルに固有の設定はありませんが、一般設定の多くが JSON ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。[PATH_TO_SCHEMA] はローカルマシンにある JSON スキーマ ファイルの場所で置き換えます。

    bq mkdef --noautodetect --source_format=NEWLINE_DELIMITED_JSON "[DRIVE_URI]" [PATH_TO_SCHEMA] > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "NEWLINE_DELIMITED_JSON",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。JSON ソースファイルに固有の設定はありませんが、一般設定の多くが JSON ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

CSV のテーブル定義

JSON スキーマ ファイルを使用して、Cloud Storage または Google ドライブに保存されている CSV ファイル用のテーブル定義を作成することができます。

Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI(例: gs://mybucket/myfile)で置き換えます。[PATH_TO_SCHEMA] はローカルマシンにある JSON スキーマ ファイルの場所で置き換えます。

    bq mkdef --noautodetect --source_format=CSV "[BUCKET_URI]" [PATH_TO_SCHEMA] > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "csvOptions": {
        "allowJaggedRows": false,
        "allowQuotedNewlines": false,
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "quote": "\"",
        "skipLeadingRows": 0
      },
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "CSV",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。たとえば、ファイルにヘッダー行が含まれている場合、"skipLeadingRows"1 に変更します。

    "allowJaggedRows" など、CSV ファイル固有の設定があります。詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。CSV ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。[PATH_TO_SCHEMA] はローカルマシンにある JSON スキーマ ファイルの場所で置き換えます。

    bq mkdef --noautodetect --source_format=CSV "[DRIVE_URI]" [PATH_TO_SCHEMA] > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "csvOptions": {
        "allowJaggedRows": false,
        "allowQuotedNewlines": false,
        "encoding": "UTF-8",
        "fieldDelimiter": ",",
        "quote": "\"",
        "skipLeadingRows": 0
      },
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
          ...
        ]
      },
      "sourceFormat": "CSV",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。たとえば、ファイルにヘッダー行が含まれている場合、"skipLeadingRows"1 に変更します。

    "allowJaggedRows" など、CSV ファイル固有の設定があります。詳細については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。CSV ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.(key).csvOptions をご覧ください。

Google スプレッドシートのテーブル定義

JSON スキーマファイルを使用して、Google ドライブに保存された Google スプレッドシート ファイル(最初のタブのみ)用のテーブル定義を作成することができます。

CLI

  1. コマンドライン ツールの mkdef コマンドで --noautodetect フラグを使用し、テーブル定義を作成します。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI(例: https://drive.google.com/open?id=123ABCD123AbcD123Abcd)で置き換えます。[PATH_TO_SCHEMA] はローカルマシンにある JSON スキーマ ファイルの場所で置き換えます。

    bq mkdef --noautodetect --source_format=GOOGLE_SHEETS "[DRIVE_URI]" [PATH_TO_SCHEMA] > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" は有効になっていません。スキーマ情報はテーブル定義ファイルに書き込まれます。

    {
      "googleSheetsOptions": {
        "skipLeadingRows": 0
      },
      "schema": {
        "fields": [
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          },
          {
            "name": "[FIELD]",
            "type": "[DATA_TYPE]"
          }
        ]
      },
      "sourceFormat": "GOOGLE_SHEETS",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。Google スプレッドシート ファイル固有の設定については、API リファレンスの configuration.query.tableDefinitions.sheetsOptions をご覧ください。共通設定の多くが Google スプレッドシート ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

Avro テーブル定義を作成する

Avro ファイルを外部データソースとして使用する場合、BigQuery はソースデータを使用してスキーマを自動的に取得します。Avro ファイルのテーブル定義を作成する際に、スキーマの自動検出を使用する必要はなく、インライン スキーマ定義やスキーマ ファイルを指定する必要もありません。

Cloud Storage または Google ドライブに保存された Avro データ用のテーブル定義を作成することができます。

Cloud Storage

CLI

  1. コマンドライン ツールの mkdef コマンドを使用して、テーブル定義を作成します。Avro ファイルに --noautodetect フラグを使用する必要はありません。Avro ファイルの場合、スキーマの自動検出は無効になります。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[BUCKET_URI]Cloud Storage の URI で置き換えます。

    bq mkdef --source_format=AVRO "[BUCKET_URI]" > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" の設定は不要です。

    {
      "sourceFormat": "AVRO",
      "sourceUris": [
        "[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。Avro ソースファイルに固有の設定はありませんが、一般設定の多くが Avro ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

Google ドライブ

CLI

  1. コマンドライン ツールの mkdef コマンドを使用して、テーブル定義を作成します。Avro ファイルに --noautodetect フラグを使用する必要はありません。Avro ファイルの場合、スキーマの自動検出は無効になります。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] はテーブル定義ファイルの名前で置き換え、[DRIVE_URI]Google ドライブの URI で置き換えます。

    bq mkdef --source_format=AVRO "[DRIVE_URI]" > /tmp/[FILE_NAME]
    
  2. テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect"true に設定されています。

    {
      "autodetect": true,
      "sourceFormat": "AVRO",
      "sourceUris": [
        "[DRIVE_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。Avro ソースファイルに固有の設定はありませんが、一般設定の多くが Avro ファイルに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

Cloud Datastore と Cloud Firestore のエクスポート テーブル定義の作成

Cloud Datastore または Cloud Firestore のエクスポートを外部データソースとして使用する場合、BigQuery は自己記述型のソースデータを使用して、スキーマを自動的に取得します。Cloud Datastore と Cloud Firestore のバックアップ ファイルのテーブル定義を作成する際に、スキーマの自動検出を使用する必要はなく、インライン スキーマ定義やスキーマ ファイルを指定する必要もありません。

Cloud Storage に保存されている Cloud Datastore と Cloud Firestore のエクスポート データ用のテーブル定義ファイルを作成することができます。

CLI

  1. コマンドライン ツールの mkdef コマンドを使用して、テーブル定義を作成します。Cloud Datastore または Cloud Firestore バックアップ ファイルで --noautodetect フラグを使用する必要はありません。これらのファイルタイプでは、スキーマの自動検出が無効になります。mkdef コマンドでは、テーブル定義ファイルが JSON 形式で生成されます。次の例では、テーブル定義を作成し、出力をファイル /tmp/[FILE_NAME] に書き込んでいます。[FILE_NAME] をテーブル定義ファイルの名前に置き換え、[BUCKET_URI]Cloud Storage の URI に置き換えます。DATASTORE_BACKUP ソース形式は、Cloud Datastore と Cloud Firestore の両方で使用されます。

    bq mkdef --source_format=DATASTORE_BACKUP "[BUCKET_URI]" > /tmp/[FILE_NAME]
    
  2. (省略可)テキスト エディタでテーブル定義ファイルを開きます。たとえば、コマンド nano /tmp/[FILE_NAME] を実行して、ファイルを nano で開きます。ファイルは次のようになります。"autodetect" の設定は不要です。

    {
      "sourceFormat": "DATASTORE_BACKUP",
      "sourceUris": [
        "gs://[BUCKET_URI]"
      ]
    }
    
  3. (省略可)テーブル定義ファイルを手動で編集し、設定の変更、追加、削除を行います。Cloud Datastore と Cloud Firestore のエクスポート ファイルに固有の設定はありませんが、一般的な設定の多くはこれらのファイルタイプに適用されます。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

API

BigQuery API を使用している場合は、ジョブ構成の一部としてテーブル定義を定義します。詳細については、API リファレンスの configuration.query.tableDefinitions をご覧ください。

Cloud Bigtable テーブル定義を作成する

Cloud Bigtable 用のテーブル定義は、JSON 形式のファイルとして手動で生成する必要があります。Cloud Bigtable データソースの場合、現在、mkdef コマンドでテーブル定義を作成できません。また、スキーマの自動検出もサポートされていません。Cloud Bigtable テーブル定義オプションの一覧については、API リファレンスの configuration.query.tableDefinitions.(key).bigtableOptions をご覧ください。

Cloud Bigtable の JSON テーブル定義ファイルは次のようになります。BigQuery は、このテーブル定義ファイルを使用して単一の列ファミリーからデータを読み取り、値をバイナリでエンコードされた整数として解釈します。

{
    "sourceFormat": "BIGTABLE",
    "sourceUris": [
        "https://googleapis.com/bigtable/projects/[PROJECT_ID]/instances/[INSTANCE_ID]/tables/[TABLE_NAME]"
    ],
    "bigtableOptions": {
        "columnFamilies" : [
            {
                "familyId": "family_int",
                "type": "INTEGER",
                "encoding": "BINARY"
            }
        ],
    }
}

テーブル定義ファイルでワイルドカードを使用する

Cloud Storage のデータが、共通のベース名を共有する複数のファイルに分割されている場合は、テーブル定義ファイルの URI でワイルドカードを使用できます。ベース名の後にアスタリスク(*)を付けて、バケットとファイル名を引用符で囲みます。たとえば、fed-sample000001.csvfed-sample000002.csv という 2 つのファイルがある場合、バケット URI は "gs://mybucket/fed-sample*" となります。

バケット内のオブジェクト(ファイル名)について使用できるワイルドカードは 1 つのみです。ワイルドカードは、オブジェクト名の中や末尾に使用できます。バケット名にワイルドカードを付けることはできません。

Cloud Bigtable データの場合、指定できる URI は 1 つだけです。これは Cloud Bigtable テーブルに対する完全かつ有効な HTTPS URL でなければなりません。Cloud Datastore バックアップの場合、指定できる URI は 1 つだけで、最後に .backup_info を付ける必要があります。

次のものにテーブル定義ファイルを作成する場合、* ワイルドカード文字は使用できません。

  • Cloud Bigtable データソース
  • Cloud Storage に保存されている Cloud Datastore のエクスポート
  • Cloud Storage に保存されている Cloud Firestore のエクスポート
  • Google ドライブに保存されているデータ
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。