Экспорт данных таблиц BigQuery в Google Cloud Storage с предложением where с использованием python - PullRequest
0 голосов
/ 11 июня 2018

Я хочу экспортировать данные таблиц из BigQuery в Google Cloud Storage.Проблема в том, что мне нужны данные от даты1 до даты2, а не данные всей таблицы.

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    # Location must match that of the source table.
    location='US')  # API request
extract_job.result()  

Это то, что я нашел в справке Google Cloud.Нет места для добавления запроса или ограничения данных с помощью оператора where.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

К сожалению, это будет двухэтапный процесс.Сначала нужно построить таблицу результатов, а затем экспортировать результат.С точки зрения затрат влияние должно быть минимальным - вы будете платить за хранилище, используемое временной таблицей, с результатом, но стоимость составит 0,02 долл. США за ГБ в месяц - поэтому, если вам удастся завершить задачу за 1 час - стоимость будет составлять 0,000027 долл. США за ГБ

job_config = bigquery.QueryJobConfig()
gcs_filename = 'file_*.gzip'

table_ref = client.dataset(dataset_id).table('my_temp_table')
job_config.destination = table_ref

job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE

# Start the query, passing in the extra configuration.
query_job = client.query(
    """#standardSql
    select * from `project.dataset.table` where <your_condition> ;""",
    location='US',
    job_config=job_config)

while not query_job.done():
    time.sleep(1)

#check if table successfully written
print("query completed")
job_config = bigquery.ExtractJobConfig()
job_config.compression = bigquery.Compression.GZIP
job_config.destination_format = (
    bigquery.DestinationFormat.CSV)
job_config.print_header = False

destination_uri = 'gs://{}/{}'.format(bucket_name, gcs_filename)

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    job_config=job_config,
    location='US')  # API request
extract_job.result()
print("extract completed")
0 голосов
/ 11 июня 2018

Используя предоставленный вами код (после этого документа ), вы можете экспортировать только всю таблицу в GCS, а не результат запроса.

В качестве альтернативы вы можете скачайте и сохраните результат запроса в локальном файле и загрузите его в GCS.Или еще проще: сохраните результат запроса в новой таблице BigQuery и полностью экспортируйте эту новую таблицу в GCS с использованием кода, который вы использовали.

...