Apache nifi NiFi:ReplaceText替代方案修改JSON

Apache nifi NiFi:ReplaceText替代方案修改JSON,apache-nifi,Apache Nifi,我的NiFi应用程序接收两种不同类型的JSON。 首先,它们看起来像: [ { "campaign": { "resourceName": "customers/8952771329/campaigns/11381694617", "status": "ENABLED", "name": "Saint_Spring_Ac

我的NiFi应用程序接收两种不同类型的JSON。 首先,它们看起来像:

[
  {
    "campaign": {
      "resourceName": "customers/8952771329/campaigns/11381694617",
      "status": "ENABLED",
      "name": "Saint_Spring_Active Minerals_oct-nov_2020_trueview_skip_5766500views",
      "id": "11381694617"
    },
    "metrics": {
      "interactionEventTypes": [
        "VIDEO_VIEW"
      ],
      "clicks": "6",
      "videoQuartileP100Rate": 0.44493171079034244,
      "videoQuartileP25Rate": 0.9747718298919024,
      "videoQuartileP50Rate": 0.7339309987701469,
      "videoQuartileP75Rate": 0.5337562301767105,
      "videoViewRate": 0.4471109114825628,
      "videoViews": "27872",
      "viewThroughConversions": "0",
      "contentBudgetLostImpressionShare": 0.0000013066088274492382,
      "contentImpressionShare": 0.0999,
      "contentRankLostImpressionShare": 0.9001,
      "conversionsValue": 0,
      "conversions": 0,
      "costMicros": "9338700950",
      "ctr": 0.00009624947864865732,
      "currentModelAttributedConversions": 0,
      "currentModelAttributedConversionsValue": 0,
      "engagementRate": 0,
      "engagements": "0",
    },
    "segments": {
      "device": "CONNECTED_TV",
      "date": "2020-12-20"
    }
  }
]

第二:

[
  {
    "adGroup": {
      "resourceName": "customers/5404177717/adGroups/110501283582",
      "campaign": "customers/5404177717/campaigns/11628802542"
    },
    "metrics": {
      "interactionEventTypes": [
        "CLICK"
      ],
      "clicks": "1",
      "averageCpm": 95497428.02172929,
      "gmailForwards": "0",
      "gmailSaves": "0",
      "gmailSecondaryClicks": "0",
      "impressions": "4418",
      "interactionRate": 0.00022634676324128565,
      "interactions": "1"
    },
    "adGroupAd": {
      "resourceName": "customers/5404177717/adGroupAds/110501283582~480227690139",
      "status": "ENABLED",
      "ad": {
        "resourceName": "customers/5404177717/ads/480227690139",
        "id": "480227690139",
        "name": "20 sec perek"
      },
      "adGroup": "customers/5404177717/adGroups/110501283582"
    },
    "segments": {
      "device": "DESKTOP",
      "date": "2020-11-21"
    }
  }
]


我的数据库中已有2个表用于保存此数据。我有一个属性
table.name
,只是为了不创建同一个块,而只是表名不同

我的下一块是
json
。在此之后,我将使用搜索值为的
ReplaceText
(替换值为空字符串):
(customers\\/${client.customer.id}\\\\\\/活动\\\/\\\\\\\\/${client.customer.id}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/${adGroups\\\\\/)

为什么会这样?从这一行:
“adGroup”:“customers/5404177717/adGroups/110501283582”
我只需要最后一个值
110501283582
作为广告组id。从这一行:
“campaign”:“customers/5404177717/campaiments/1162802542”
我只需要
1162802542
<代码>${client.customer.id}
可以不同,所以我使用EL特性

此外,我需要将json值name
adGroup
更改为
ad.group.id
,为此,我还使用了
ReplaceText


如果没有两个
ReplaceText
处理器,我能更快地完成吗?


看看下面的处理器……我认为使用它们是一种替代方法:
震动传输MJSON
更新记录

看看下面的处理器……我认为使用它们可以是一种选择:
震动传输MJSON
更新记录