Использование 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 определяет, какое поле вы будете использовать для разделов.

Другие вопросы по тегам