Как преобразовать метку времени Avro Logical типа в дату Avro Logical Type с помощью UpdateRecord в Apache Nifi? - PullRequest
0 голосов
/ 12 марта 2020

Я загружаю данные из Oracle в Bigquery. Я хотел добавить дополнительный столбец в таблицу Bigquery на основе существующего столбца в Oracle.

Я создал простой поток. ExecuteSQL ->UpdateRecord -> PutBigQueryBatch

В Oracle у меня есть столбцы A (строка), B (строка) и C (отметка времени).

Для проверки работоспособности этого потока я создал новое свойство '/ D' в UpdateRecord со значением '/ A'. Выходные данные имели дополнительный столбец D со значением, аналогичным значению A (строка). Это сработало отлично.

Для проверки работоспособности этого потока я создал новое свойство '/ D' в UpdateRecord со значением '/ C'. Выходные данные имели дополнительный столбец D со значением, равным C (логический тип AVRO timestamp-millis). Это также сработало.

Я хочу загрузить данные в Bigquery, но столбец D как тип данных BigQuery Date вместо типа данных BigQuery Timestamp.

Как преобразовать логический тип Avro Timestamp -миллис к логическому типу Avro Дата?

Пример:

Oracle:

            A            |            B            |            C                
-----------------------------------------------------------------------------
            1            |            2            |2013-12-10T13:24:40.000Z

Bigquery:

            A            |            B            |            C             |        D       
-------------------------------------------------------------------------------------------------
            1            |            2            | 2013-12-10T13:24:40.000Z |    2013-12-10

Схема вывода в 'поле' от ExecuteSQL:

{ "name": "A",  "type": ["null","string"] },
{ "name": "C",  "type": { "type" : "string","logicalType" : "timestamp-millis" } },
{ "name": "B",  "type": ["null","string"] }
...