Я использую представление 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 |
+------------|--------+
Он перезаписывает данные в обоих случаях.
TIMESTAMP
в таблице BigQuery, верно? Однако я не думаю, что есть способ использоватьDATE
. - person Elliott Brossard   schedule 23.08.2018TIMESTAMP
, но возникла другая проблема. Отредактировал вопрос. Есть ли где-нибудь ветка с запросом функции? - person Josh Laird   schedule 24.08.2018