如何使用Apache Nifi中的UpdateRecord将Avro逻辑类型timestamp-millis转换为Avro逻辑类型日期?

时间:2020-03-12 11:50:18

标签: google-bigquery apache-nifi avro

我正在将数据从Oracle加载到Bigquery。我想基于Oracle中的现有列在Bigquery表中添加一个附加列。

我创建了一个简单的流程。 ExecuteSQL ->UpdateRecord -> PutBigQueryBatch

在Oracle中,我有A(string),B(string)和C(timestamp)列。

为了测试该流程是否有效,我在UpdateRecord中创建了一个新属性'/ D',其值为'/ A'。输出数据具有附加列D,其值与A(string)相同。效果很好。

为了测试此流程是否有效,我在UpdateRecord中创建了一个新属性'/ D',其值为'/ C'。输出数据具有附加列D,其值与C(AVRO逻辑类型timestamp-millis)相同。这也很好。

我想将数据上传到Bigquery,但将D列作为BigQuery Date数据类型而不是BigQuery Timestamp数据类型上传。

如何将Avro逻辑类型Timestamp-millis转换为Avro逻辑类型Date?

示例:

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"] }

0 个答案:

没有答案