Использование Dataprep для записи только в раздел даты в таблице разделов даты
Я использую представление BigQuery для извлечения вчерашних данных из таблицы BigQuery, а затем пытаюсь записать данные в секционированную таблицу дат, используя Dataprep.
Моя первая проблема заключалась в том, что Dataprep не мог правильно подобрать DATE
введите столбцы, но преобразуйте их в TIMESTAMP
работает (спасибо Эллиоту).
Однако при использовании Dataprep и установке выходной таблицы BigQuery у вас есть только 3 варианта: Append
, Truncate
или же Drop
существующая таблица. Если таблица разделена на даты и вы используете Truncate
он удалит все существующие данные, а не только данные в этом разделе.
Есть ли другой способ сделать это, что я должен использовать? Моя альтернатива - использовать Dataprep для перезаписи таблицы, а затем использовать Cloud Composer для запуска некоторого SQL-кода, помещающего эти данные в таблицу с разбивкой по датам. В идеале, я бы хотел сделать это только с Dataprep, но сейчас это кажется невозможным.
Схема таблицы BigQuery:
Детали раздела:
Данные, которые я принимаю, просты. В одном потоке:
date | name
2018-08-08 | Josh1
2018-08-08 | Josh2
В другом потоке:
date | name
2018-08-09 | Josh1
2018-08-09 | Josh2
Он перезаписывает данные в обоих случаях.
0 ответов
Вы можете создать базу многораздельных таблиц DATE. Данные, записанные в многораздельную таблицу, автоматически доставляются в соответствующий раздел.
Данные, записанные в многораздельную таблицу, автоматически доставляются в соответствующий раздел в зависимости от значения даты (выраженного в формате UTC) в столбце разделения.
Добавьте данные, чтобы новые данные были добавлены в разделы.
Вы можете создать таблицу с помощью команды bq:
bq mk --table --expiration [INTEGER1] --schema [SCHEMA] --time_partitioning_field date
time_partitioning_field определяет, какое поле вы будете использовать для разделов.