Мне не ясно, что именно вы передаете с этой переменной table_ref
, поэтому я собираюсь объяснить, что ожидает этот метод, надеюсь, что это поможет вам сделать все правильно.
Примечание : будьте осторожны, ваш client
объект используется как client_bq
, он не запускается.
Метод client.get_table(table_ref)
( документы ) ожидает table_ref
, что в соответствии с документацией является указателем на таблицу, и если table_ref
является string
, он должен включать project ID
, dataset ID
и table ID
, каждый из которых отделен .
(точкой), например, от опубликованного c набора данных BigQuery:
table_ref = "bigquery-public-data.noaa_historic_severe_storms.storms_2019"
С учетом этого table_ref
должен работать следующий код:
client = bigquery.Client(project="my_project_id")
client.get_table(table_ref)
С другой стороны, если вы хотите создать table_ref
как объект Table
, обратите внимание, что вам не нужно указывать schema
, этот параметр является необязательным ( документы ).
table_ref = bigquery.table.Table("bigquery-public-data.noaa_historic_severe_storms.storms_2019")
Если ваша цель - создать действительный schema
, в документах указано, что это сборка с SchemaField
объектами, документация я На данный момент это лучший справочник, если вы хотите получить образец, вы можете получить его, сохранив объект Table
и получив атрибут schema
следующим образом:
>>> table = client.get_table(table_ref)
>>> table.schema
(запустив код в Python консоли)
Пример вывода:
[SchemaField('magnitude', 'FLOAT', 'NULLABLE', 'Description', ()),
SchemaField('magnitude_type', 'STRING', 'NULLABLE', 'Description', ()),
SchemaField('flood_cause', 'STRING', 'NULLABLE', 'Description', ())]