Apache nifi NiFi:ReplaceText替代方案修改JSON
我的NiFi应用程序接收两种不同类型的JSON。 首先,它们看起来像:Apache nifi NiFi:ReplaceText替代方案修改JSON,apache-nifi,Apache Nifi,我的NiFi应用程序接收两种不同类型的JSON。 首先,它们看起来像: [ { "campaign": { "resourceName": "customers/8952771329/campaigns/11381694617", "status": "ENABLED", "name": "Saint_Spring_Ac
[
{
"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值nameadGroup
更改为ad.group.id
,为此,我还使用了ReplaceText
如果没有两个
ReplaceText
处理器,我能更快地完成吗?看看下面的处理器……我认为使用它们是一种替代方法:
震动传输MJSON:
更新记录:
看看下面的处理器……我认为使用它们可以是一种选择:
震动传输MJSON:
更新记录: