<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大大毛 的筆記

      DDM's Note

    哪怕沒有辦法一定有說法,
    就算沒有鴿子一定有烏鴉,
    固執(zhí)無罪 夢想有價,
    讓他們驚訝.

    posts - 14, comments - 23, trackbacks - 0, articles - 58
       :: 首頁 ::  :: 聯(lián)系 ::  :: 管理

    RouteOnAttribute的用法

    Posted on 2019-04-11 16:55 大大毛 閱讀(1865) 評論(0)  編輯  收藏 所屬分類: Nifi
    RouteOnAttribute
        這個組件的是用途是根據(jù)Attribute的值進(jìn)行Route分流,從輸入輸出的角度來看,它可以把一個Input分成多個Output出來,它的分支不同于程序中的Switch語法,而等效于多條的IF語句,也就是說若Output的條件全部都符合,它是可以把1個輸出Copy到多個輸出的,所以它也可以用于條件復(fù)制的應(yīng)用上。
        關(guān)于資料落地的文章里我有提到過Route的使用范圍,它應(yīng)該用在能夠以Key做分支條件的場景,也就是說相同的Key一定會走固定的Output出來,這樣才不會出現(xiàn)資料亂序的狀況。下面有兩個示例,第一個是典型的分支用法,第二個比較有意思,它的作用相當(dāng)于Oracle中的Decode語法

    示例1
        使用Route做流程的分支,根據(jù)一個叫SO的欄位是否為空決定走不同的流程(左右的UpdateAttribute可以把它們想象成兩個完全不同的處理流程來看)




        RouteOnAttribute作用是根據(jù)Attribute的Bool值來決定是否進(jìn)入該分支

    • HasSO / NonSO:這是我自行定義的兩個Route名稱 (不是屬性名稱),Value是一個表達(dá)式,若它的值=true,則Output會進(jìn)該Route
      • Nifi的表達(dá)式語法不怎么好寫,官方的文檔上有些東西并不支持 (不確定是不是Nifi版本緣故)。這里還是可以看得出來就只是判斷一個叫SO的Attribute的值是否為空 --- 還記得有些Processor里面還有叫"Null Value Representation"的屬性吧,若是那里配成"null"那這里也要與之匹配。
    • 經(jīng)過該P(yáng)rocessor處理后,SO為空的會走右端邏輯,而不為空的則會走左段邏輯,同時它會加多一個叫"RouteOnAttribute.Route"的Attribute,內(nèi)容即為Route名稱

    示例2:
        根據(jù)多個欄位是否有值(不為空),讓它們能夠進(jìn)入不同的Route,后面再根據(jù)Route名稱去動態(tài)的取值,它的特點(diǎn)是Nifi流程并沒有出現(xiàn)分支(Connection上是勾了所有的Route),只是為不同的數(shù)據(jù)設(shè)上了一個變量名稱



        RouteOnAttribute借用分支名稱在后面搞事,這里相當(dāng)于是給資料加上了一個變量名稱

    • MO / MODELFAMILY / UPN / USN:這是定義的四個Route名稱,判斷條件都很簡單,就只是不為空
      • 值得注意的是這4個條件并非是互斥條件,比如有一筆資料它的MO、USN都不為空,那么就會同時進(jìn)入兩個Route進(jìn)行輸出,所以Output筆數(shù)會是2
      • 下面這是進(jìn)入UPN這個Route后的資料上的Attribute: "RouteOnAttribute.Route"



        UpdateAttribute比較精彩的用法

    • mqttTopic:這是定義的一個MQTT的Topic變量,它的內(nèi)容是可變動的,會根據(jù)Route的不同產(chǎn)生不同的結(jié)果
      • 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"}}的取值方法來實(shí)現(xiàn)動態(tài)的取用變量值



    i am ddm

    主站蜘蛛池模板: 日韩一级视频免费观看| 国产大片免费天天看| 香蕉97超级碰碰碰免费公| 亚洲AV无码专区亚洲AV伊甸园| 一区二区免费电影| 亚洲熟伦熟女新五十路熟妇| 边摸边脱吃奶边高潮视频免费| 日韩精品视频免费观看| 国产精品无码亚洲精品2021| 亚洲精品视频免费看| 91av视频免费在线观看| 亚洲成a人片在线观看中文app| 久久www免费人成看片| 亚洲人精品亚洲人成在线| 免费被黄网站在观看| 亚洲色欲久久久久综合网| 国产免费MV大全视频网站 | 蜜臀AV免费一区二区三区| 亚洲资源在线视频| 久久久久久99av无码免费网站 | 久久夜色精品国产噜噜噜亚洲AV| 美女视频黄的免费视频网页| 91精品国产亚洲爽啪在线影院| h在线观看视频免费网站| 亚洲国产成人精品无码区花野真一 | 久久久久亚洲AV无码专区网站| 中国一级特黄的片子免费| 久久亚洲AV成人无码电影| 日韩欧美一区二区三区免费观看| 性色av极品无码专区亚洲| 久久精品国产亚洲Aⅴ香蕉| 日本高清免费观看| 亚洲中文字幕无码av| 国产av无码专区亚洲国产精品| 未满十八18禁止免费无码网站| 亚洲中文字幕无码中文| 亚洲日韩在线中文字幕第一页| 久久99国产乱子伦精品免费| 亚洲av无码专区在线电影 | 国产亚洲精品资在线| 亚洲视频在线免费播放|