apache-nifi - Apache Nifi 中 JoltTransformJson 处理器中 SQL 友好的日期格式

标签 apache-nifi jolt

我需要将输入日期更改为 SQL 友好格式才能将其插入数据库。尝试插入数据库时​​,imported_at 和processed_at 均出现错误。

我的流程:JoltTransformJSON -> ConvertJsonToSql -> PutSql

输入:

{
  "transactionDate": "2018-01-01T18:06:00",
}

我的规范:

[
  {
    "operation": "shift",
    "spec": {
      "transactionDate": "processed_at"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "processed_at": "=${processed_at.replaceAll('T',' '):toDate('yyyy-MM-dd HH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}"
    }
  },
  {
    "operation": "default",
    "spec": {
      "processed_at": null,
      "imported_at": "${now():format('yyyy-MM-dd HH:mm:ss')}"
    }
  }
]

我的想法是这样的: 1.将transactionDate转移到processed_at 2.重写processed_at并通过toDate函数将其转换为日期 3.通过format函数将其格式化为我想要的格式

这不起作用,在最好的情况下,我要么得到一个空的processed_at,要么得到初始值。

我试过了

${processed_at.replaceAll('T',' '):toDate('yyyy-MM-dd HH:mm:ss'):format('yyyy-MM-dd HH:mm:ss') )}

${processed_at:toDate('yyyy-MM-ddTHH:mm:ss'):format('yyyy-MM-dd HH:mm:ss')}

最佳答案

显然,我无法使用 JoltTransformJSON 处理器中的 jolt 规范中的表达式语言访问 JSON 属性。

我的工作方式是:

  1. 我在 JoltTransformJSON 之前添加了一个 EvaluateJSONPath 处理器,并将 processed_at 提取为 Flowfile 属性。 我的流程如下所示:EvaluateJSONPath -> JoltTransformJSON -> ConvertJsonToSql -> PutSql

  2. 在 JoltTransformJSON 中,我现在可以访问之前提取的 Flowfile 属性 processed_at。在 Jolt 规范中,我更新了默认操作: { “操作”:“默认”, “规范”:{ “processed_at”:空, "processed_at": "${processed_at:replace('T', ''):toDate('yyyy-MM-ddHH:mm:ss'):format('yyyy-MM-dd HH:mm:ss.SSS' )}" } }

  3. 表达式语言中正确的 SQL 日期字段格式为:yyyy-MM-dd HH:mm:ss.SSS

现在流程将行插入数据库。

关于apache-nifi - Apache Nifi 中 JoltTransformJson 处理器中 SQL 友好的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52611258/

相关文章:

java - 在 Jolt 中向数组添加默认值

json - Jolt 变换 - 如何用字段值重命名字段?

java - JOLT - 根据 if 条件在 JSONArray 中添加字段

json - 如何使用jolt将嵌套数据变成线性数据

apache-nifi - Apache Nifi GetFTP 处理器动态输入

java - 用于从 NiFi 中的文件中提取文本的正则表达式

docker - Nifi 容器正在运行但无法通过 UI 访问

hadoop - PutHDFS关于Apache NiFi错误

json - 需要帮助找出如何修复颠簸规范

csv - 尼菲 : Need clarification on the Merge Content processor