created: 2023-02-12T00:27:32.157Z

BigQuery の外部テーブルとして Google Sheets を使うときにヘッダ行を無視する設定

bq mk コマンドに --external_table_definition オプションとして定義ファイルを渡すことになる。

$ gcloud auth activate-service-account me@myproj-123456.iam.gserviceaccount.com --key-file=./functions/rw.json
$ bq mk -t --external_table_definition bigquery/schema/mytbl.def.json myds.mytbl

過去に定義をインラインで渡すことがあったが、ヘッダ行をスキップしたりあとはシートの range を指定したりとか気の利いた設定がしたい場合は、インラインではできなくて定義ファイルが必要なようだ。

ヘッダ行をスキップする設定はこの部分。

  "googleSheetsOptions": {
    "skipLeadingRows": 1
  }

定義ファイル全体はこんな感じ。

{
  "schema": {
    "fields": [
      {
        "name": "area_group_code",
        "type": "string"
      },
      {
        "name": "area_group_name",
        "type": "string"
      },
    ]
  },
  "sourceFormat": "GOOGLE_SHEETS",
  "sourceUris": [
    "https://docs.google.com/spreadsheets/d/xxxxxxxxxx-hPJg/edit#gid=0"
  ],
  "googleSheetsOptions": {
    "skipLeadingRows": 1
  }
}

参考

ミッドライフ・クライシスがよくわかる 人生を豊かにする40代からの思考法 (ニュートン新書)
[ad] ミッドライフ・クライシスがよくわかる 人生を豊かにする40代からの思考法 (ニュートン新書)
スザンヌ シュミット, 岡本 祐子 (単行本(ソフトカバー))