BigQuery внешние таблицы с питоном - PullRequest
0 голосов
/ 12 февраля 2019

Как я могу создать внешние таблицы (источник федеративных данных) в BigQuery с помощью python (google-cloud-bigquery)?

Я знаю, что вы можете использовать такие команды bq, но это не так, как я хочусделайте это:

bq mk --external_table_definition=path/to/json tablename
bq update tablename path/to/schemafile

with external_table_definition as:
{
  "autodetect": true,
  "maxBadRecords": 9999999,
  "csvOptions": {
    "skipLeadingRows": 1
  },
  "sourceFormat": "CSV",
  "sourceUris": [
    "gs://bucketname/file_*.csv"
  ]
}

и такой файл схемы:

[
  {
    "mode": "NULLABLE", 
    "name": "mycolumn1", 
    "type": "INTEGER"
  }, 
  {
    "mode": "NULLABLE", 
    "name": "mycolumn2", 
    "type": "STRING"
  }, 
  {
    "mode": "NULLABLE", 
    "name": "mycolumn3", 
    "type": "STRING"
  }
]

Спасибо за вашу помощь!Lars

1 Ответ

0 голосов
/ 12 февраля 2019
table_id = 'table1'

table = bigquery.Table(dataset_ref.table(table_id), schema=schema)
external_config = bigquery.ExternalConfig('CSV')
external_config = {
  "autodetect": true,
  "options": {
    "skip_leading_rows": 1
  },
  "source_uris": [
    "gs://bucketname/file_*.csv"
  ]
}
table.external_data_configuration = external_config
table = client.create_table(table) 

Формат схемы:

schema = [
    bigquery.SchemaField(name='mycolumn1', field_type='INTEGER', is_nullable=True),
    bigquery.SchemaField(name='mycolumn2', field_type='STRING', is_nullable=True),
    bigquery.SchemaField(name='mycolumn3', field_type='STRING', is_nullable=True),
]
...