簡體   English   中英

Apache Nifi 中 JoltTransformJson 處理器中的 SQL 友好日期格式

[英]SQL friendly date format in a JoltTransformJson Processor in Apache Nifi

我需要將輸入日期更改為 SQL 友好格式才能將其插入數據庫。 嘗試插入數據庫時​​,我在imported_at 和processing_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 轉換為 processing_at 2. 覆蓋 processing_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 規范中,我更新了默認操作: { "operation": "default", "spec": { "processed_at": null, "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

現在流程將行插入到數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM