JOLT:如何在动态JSON密钥上将datestimate转换为epoch

bwntbbo3  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(83)

[编辑]我有一个用例,我必须将datetimestamp字段转换为epoch,但字段未标准化,因为在某些流文件中,我们可能无法接收datetime字段,我的转换使用EvaluateJsonPathJoltTransformation JSON完美工作。

我的输入

{    
  "updated_on": "2023-03-14 03:56:22",
  "created_on": "2023-03-14 03:56:22"
}

字符串

我的震动规格

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "assign": "${assign:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}",
      "updated_on": "${updated_on:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}",
      "i_date": "${i_date:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}",
      "created_on": "${created_on:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}"
    }
  }
]

期望输出

{
  "updated_on": "1678766182",
  "created_on": "1678766182"
}


的数据
但我仍然不明白为什么我得到的错误,每当任何一个或两个datetimestamp字段失踪了四个

z6psavjg

z6psavjg1#

让我们重现你的情况;
通过添加四个过程:

GetFile

    • 输入目录 *- [已定义](示例:C:\ApacheNifi\App\JSON),其中有一个以 flowfile II 为内容的flowfile.json
    • 保留源文件 *- true
      EvaluateJSONPath
    • 目标 *- * 流文件属性 * //将在下一次(Jolt)转换中单独使用

添加属性:

Property    Value
   ----------- -------------
   created_on  $.created_on
   updated_on  $.updated_on

字符串

  • Path not found behavior- skip =>会有属性的键名,而值为**""(例如 {“created_on”:“1678755382000”,“updated_on”:“"}),如果相关属性(在本例中为updated_on**)不存在于 flowfile.json 文件中。
    JoltTransformJSON
    *规格
[
  {
    "operation": "modify-overwrite-beta", // replacing "default" with this is important in order to 
                                          // be able to override the values of the existing attributes
    "spec": {      
      "updated_on":"${updated_on:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}",
      "created_on":"${created_on:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}"      
    }
  }
]

*LogAttribute

x1c 0d1x的数据

  • 每个进程运行一次 *,LogAttribute 除外

因此,您可以从last Connection的上下文菜单中的List queue中获得类似于您定义为flowfile II的 * 期望结果 * 的结果。

相关问题