在云数据融合中转换为日期

时间:2019-12-07 11:55:02

标签: google-cloud-data-fusion cdap

我们如何在云数据融合中将字符串转换为日期?

我有一列值说是20191120(yyyyMMdd的格式),我想将此列加载到bigquery中的表中作为日期。表列数据类型也是日期。

到目前为止,我一直在尝试使用“ parse-as-simple-date”将字符串转换为时间戳,然后尝试使用format-date将其转换为“ yyyy-MM-dd”格式,但这步骤将其转换为字符串,最终加载失败。我什至试图在o / p模式中将日期列明确提到为日期。但是它在运行时失败。

我尝试将其作为时间戳保留在管道中,并尝试将日期加载到Bigquery日期类型中。

我注意到错误来自op字段dt_1与avro整数不兼容。数据融合是在加载之前在内部将提取物转换为Avro吗? AVRO没有引起问题的日期数据类型?

3 个答案:

答案 0 :(得分:1)

为后代添加答案:

您可以尝试执行这些操作

  1. 转到wrangler中的LocalDateTime列
  2. 打开下拉菜单,然后单击“自定义转换”
  3. 键入timestamp.toLocalDate()(时间戳为列名)

在最后一步之后,应将其转换为LocalDate类型,您可以将其写入bigquery。希望这会有所帮助

答案 1 :(得分:1)

对于这种特定的日期格式,Wrangler Transform 指令将是:

parse-as-simple-date date_field_dt yyyyMMdd
set-column date_field_dt date_field_dt.toLocalDate()

如果目的地是日期类型,则需要第二行。

跳过空值:

set-column date_field_dt empty(date_field_dt) ? date_field_dt : date_field_dt.toLocalDate()

参考文献:

https://github.com/data-integrations/wrangler/blob/develop/wrangler-docs/directives/parse-as-simple-date.md

https://github.com/data-integrations/wrangler/blob/develop/wrangler-docs/directives/parse-as-date.md

答案 2 :(得分:0)

您可以尝试使用Wrangler通过Data Fusion解析输入数据。

为了对其进行测试,我复制了一个工作流程,在该工作流程中,数据融合管道中输入了来自BigQuery的数据。然后,将这些数据解析为正确的类型,然后将其再次导出回BigQuery。请注意,公共数据集为“ austin_311”,我使用了“ 311_request”表,因为其中某些列是TIMESTAMP类型。

我完成的步骤如下:

  1. 我使用以下命令查询了包含TIMESTAMP数据的公共数据集:

    select * from `bigquery-public-data.austin_311.311_request`
    limit 1000;
    
  2. 我已将其上传到Google Cloud Storage。

  3. 我在this之后创建了一个新的Data Fusion批处理管道。

  4. 我已经使用Wrangler将CSV数据解析为自定义“简单数据” yyyy-MM-dd HH:mm:ss

  5. 我已将管道结果导出到BigQuery。

This qwiklab已帮助我完成了这些步骤。

结果:

按照上述步骤,我已经能够将Data Fusion数据导出到BigQuery,并且DATE字段按预期导出为TIMESTAMP。