意外とハマったのでメモ
こんな感じにスキーマを取得して、
bigquery = Google::Cloud::Bigquery.new(project_id: PROJECT_ID)
template_table = bigquery.dataset(DATASET_ID).table(source_table_id)
schema = template_table.schema
こんな感じにそのスキーマを指定してもなぜかschemaを認識してくれない。
bigquery.dataset(DATASET_ID).dataset.load_job(destination_table_id, "GCSのパス", schema: schema)
取得したスキーマを一旦シリアライズしてからデシリアライズするとうまくいく。
sio = StringIO.new
Google::Cloud::Bigquery::Schema.dump(schema, sio)
schema2 = Google::Cloud::Bigquery::Schema.load(sio)
bigquery.dataset(DATASET_ID).dataset.load_job(destination_table_id, "GCSのパス", schema: schema2)
このあたりが影響していそうだが、詳細なメカニズムは不明。