大大毛
的笔记
  DDM's Note
哪怕没有办法一定有说法,
就算没有鸽子一定有乌鸦,
固执无罪 梦想有价,
让他们惊讶.
posts - 14, comments - 23, trackbacks - 0, articles - 58
::
首页
:: ::
联系
:: ::
管理
RouteOnAttribute的用法
Posted on 2019-04-11 16:55
大大毛
阅读(1778)
评论(0)
编辑
收藏
所属分类:
Nifi
RouteOnAttribute
这个组件的是用途是根据Attribute的值进行Route分流,从输入输出的角度来看,它可以把一个Input分成多个Output出来,它的分支不同于程序中的Switch语法,而等效于多条的IF语句,也就是说若Output的条件全部都符合,它是可以把1个输出Copy到多个输出的,所以它也可以用于条件复制的应用上。
关于资料落地的文章里我有提到过Route的使用范围,它应该用在能够以Key做分支条件的场景,也就是说相同的Key一定会走固定的Output出来,这样才不会出现资料乱序的状况。下面有两个示例,第一个是典型的分支用法,第二个比较有意思,它的作用相当于Oracle中的Decode语法
示例1
使用Route做流程的分支,根据一个叫SO的栏位是否为空决定走不同的流程(左右的UpdateAttribute可以把它们想象成两个完全不同的处理流程来看)
RouteOnAttribute
,
作用是根据Attribute的Bool值来决定是否进入该分支
HasSO / NonSO
:这是我自行定义的两个Route名称 (不是属性名称),Value是一个表达式,若它的值=true,则Output会进该Route
Nifi的表达式语法不怎么好写,官方的文档上有些东西并不支持 (不确定是不是Nifi版本缘故)。这里还是可以看得出来就只是判断一个叫SO的Attribute的值是否为空 --- 还记得有些Processor里面还有叫"Null Value Representation"的属性吧,若是那里配成"null"那这里也要与之匹配。
经过该Processor处理后,SO为空的会走右端逻辑,而不为空的则会走左段逻辑,同时它会加多一个叫"RouteOnAttribute.Route"的Attribute,内容即为Route名称
示例2:
根据多个栏位是否有值(不为空),让它们能够进入不同的Route,后面再根据Route名称去动态的取值,它的特点是Nifi流程并没有出现分支(Connection上是勾了所有的Route),只是为不同的数据设上了一个变量名称
RouteOnAttribute
,
借用
分支名称在后面搞事,这里相当于是给资料加上了一个变量名称
MO / MODELFAMILY / UPN / USN
:这是定义的四个Route名称,判断条件都很简单,就只是不为空
值得注意的是这4个条件并非是互斥条件,比如有一笔资料它的MO、USN都不为空,那么就会同时进入两个Route进行输出,所以
Output笔数会是2
下面这是进入UPN这个Route后的资料上的Attribute: "RouteOnAttribute.Route"
UpdateAttribute
,
比较精彩的用法
mqttTopic
:这是定义的一个MQTT的Topic变量,它的内容是可变动的,会根据Route的不同产生不同的结果
MO/MODELFAMILY/UPN/USN这4个条件有任一不为空,则会要求推送Topic: xxxx/【Type】/【Value】/yyyy
【Type】: 为"mo"、"modelfamily"、"upn"、"usn"这四个值之一
【Value】: 为MO/MODELFAMILY/UPN/USN这四个Attribute的取值 (即 ${MO} / ${MODELFAMILY} / ${UPN} / ${USN} 的值),这里使用了双层
${${"RouteOnAttribute.Route"}}
的取值方法来实现动态的取用变量值
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Nifi同步数据的几种方法
RouteOnAttribute的用法
Kafka资料落地至MariaDB (带Key的新增、修改和删除)
Kafka资料落地至MariaDB (带Key的新增、修改)
Oracle资料推送MQTT
Powered by:
BlogJava
Copyright © 大大毛
日历
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
公告
果然是不能想得太好。
随笔分类
(4)
VB培训(4)
文章分类
(59)
JAVA
(6)
Spring
(3)
Hibernate
Struts
(12)
NET
VB
(2)
ASP
(1)
ASP.NET
(6)
HTML
(3)
400
(2)
I4.0
Nifi
(5)
Angular
(1)
SQL
(15)
常用算法
(1)
其它
(2)
积分与排名
积分 - 59487
排名 - 876
最新评论
1. re: 手工添加MyEclipse的XML文件模板[未登录]
请问,eclipse下面有没有呢?现在想要实现eclipse的xml的模板进行配置修改,简单说,就是把新建时候的名字作为其中的一个tag;找了很久没有找到方法
--allen
2. re: 第二章 Visual Basic 基础语法
受益匪浅,多谢!
--yuleself
3. re: 数字填空
评论内容较长,点击标题查看
--去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去
4. re: Checkbox联动演示
dcdc
--dcd
5. re: 利用TN5250NF下載檔案的自動化處理
請教若密碼要動態生成,是否有辦法呢?
謝謝
--江佳桂
i am ddm