Как я могу перенести таблицу с разделением по времени приема между регионами в BigQuery?

#google-bigquery

#google-bigquery

Вопрос:

Я хочу перенести мою таблицу с разделением по времени приема из одного региона в другой (используя пользовательские скрипты Python), но когда я извлекаю и загружаю их, все они попадают в сегодняшний раздел, так как именно тогда они попадают в таблицу.

Как я могу убедиться, что новая таблица содержит ту же структуру разделения по времени приема, что и исходная?

Ответ №1:

Вы можете извлечь определенные разделы внутри таблицы, используя клиентскую библиотеку Python. Таким образом, вместо извлечения всей таблицы, вы можете указать, какой раздел вы хотите, с помощью синтаксиса декоратора ( project.dataset.table$YYYYMMDD для таблиц с разделением по дням или project.dataset.table$YYYYMMDDHH для таблиц с разделением по часам приема), а затем просто загрузить их в раздел, используя тот же формат декоратора.

Вот некоторый код;

 table_partition = client.get_table("my-project.my_dataset.mytable$20200727")
job_config = bigquery.job.ExtractJobConfig()
job_config.compression = bigquery.Compression.GZIP
job_config.destination_format = (bigquery.DestinationFormat.NEWLINE_DELIMITED_JSON)
extract_job = client.extract_table(table_partition, "gs://my-bucket", location="US", job_config=job_config)
job_result = extract_job.result()
  

Вы можете найти список всех ваших разделов по времени приема, используя этот запрос:

 SELECT DISTINCT _PARTITIONTIME AS pt
FROM `my-project.my_dataset.mytable`
  

Комментарии:

1. Полезно знать! Спасибо.