APACHE NIFI学习之—UpdateAttribute

UpdateAttribute

描述:

通过设置属性表达式来更新属性,也可以基于属性正则匹配来删除属性

标签:

attributes, modification, update, delete, Attribute Expression Language, state, 属性, 修改, 更新, 删除, 表达式

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.

名字默认值允许值列表描述
删除属性正则将删除与正则匹配相匹配的数据流上的属性, Existing attributes that match will be deleted regardless of whether they are updated by this processor. 支持表达式语言 (支持流属性和变量)
存储状态不存储不存储仅本地存储是否需要存储状态,选择“无状态”将提供以无状态方式单纯的更新流文件属性。选择有状态将不仅在数据流上存储属性,还存储组件状态。 可查看组件'高级设置'的'状态用法'章节获取更多信息
状态变量初始化值用于设置变量状态的初始值。 当状态中没有一个变量的值时,该值仅被用在@OnScheduled方法中。如果是有状态的,则该参数是必须的,但也可以设置为空

动态参数:

名字描述
A FlowFile attribute to updateThe value to set it to更新或设置一个数据流属性,该参数可通过动态参数的键值来设置,且与属性对应。 支持表达式语言 (支持流属性和变量)

连线:

名字描述
success所有成功的数据流将输出到此连线

读取属性:

未提供。

写入属性:

名字描述
See additional details组件可以添加或删除0到多个属性描述,参见附加详细信息

状态管理:

范围描述
LOCAL提供选项来存储数据流的属性值,也引用有状态变量

限制:

该组件没有限制

输入流要求:

组件必须提供输入流。

系统资源考量:

未提供。

* 遇到的问题

问题1:如何在Nifi中将属性设置为空字符串

解决方法:${literal("")}

试试

attribute_name

${literal("")}

问题2:增加一个属性

id2 233

img

输出结果:

问题3:条件判断

高级用法,添加规则条件,符合条件时update指定的属性值

  1. 点击ADVANCED

    img

  2. 添加一个rule,如果id的值等于11,就修改id的值为22

    img

  3. 结果输出:

    img

问题4:将属性提取到内容

  • 需要增加ReplaceText组件

${dict.51字段}

问题5:删除某一些的属性

(orderParties|containerList|goods)

  • UpdateAttribute(清除body以外属性)

(body.+)

img

Delete Attributes Expression

(SP.*\.[0-9]+.*)

Delete Attributes Expression

bkCargo.*  

它表示要删除以 "bkCargo." 开头的所有属性。这种方式允许您一次性删除多个属性,只要它们都以相同的前缀开始。

举个例子,假设您有属性 bkCargo.namebkCargo.typebkCargo.weight 等等,使用 bkCargo.* 表达式会删除所有以 "bkCargo." 开头的属性,将它们从数据中删除。

问题6:日期获取

  1. 获取前一天的数据

dict.startTime:${now():format("yyyy-MM-dd", "GMT"):toDate('yyyy-MM-dd'):addDays(0):format("yyyy-MM-dd", "GMT")}T00:00:00dict.endTime:${now():format("yyyy-MM-dd", "GMT"):toDate('yyyy-MM-dd'):addDays(0):format("yyyy-MM-dd", "GMT")}T23:59:59
  1. 获取前2个月至今的数据

dict.startTime:${now():format("yyyy-MM", "GMT+8"):toDate('yyyy-MM'):addMonths(-1):format("yyyy-MM", "GMT")}-01T00:00:00dict.endTime:${now():format("yyyy-MM-dd", "GMT+8")}T${now():format("HH:mm:ss", "GMT+8")}
  1. updateAttribute组件获取当前时间

${now():format('yyyy-MM-dd HH:mm:ss')}

问题7:JsonPath表达式解读

dict.BLiStotalNoofPackages

${bkCargo:jsonPath('$[?(@.cargoFlag in ["M"])]'):jsonPath('$.noOfPackage')}

这段代码是使用 JSONPath 表达式来从 JSON 数据中提取信息的。JSONPath 是一种类似于 XPath 的查询语言,用于从 JSON 结构中选择和提取数据。让我一步步解释这段代码的含义:

  1. ${bkCargo:jsonPath('$[?(@.cargoFlag in ["M"])]')}: 这部分的含义是从一个名为 bkCargo 的 JSON 对象中,使用 JSONPath 查询,筛选出具有 cargoFlag 属性值为 "M" 的元素。换句话说,这部分代码会返回一个包含满足条件的货物的数组或集合。

  2. :jsonPath('$.noOfPackage'): 这部分的含义是在上一步得到的满足条件的货物数组中,再次使用 JSONPath 查询,提取每个货物元素的 noOfPackage 属性值,即货物的包裹数量。

综合起来,整个代码的目的是从名为 bkCargo 的 JSON 数据中,选取具有 cargoFlag 属性值为 "M" 的货物,并且提取这些货物的包裹数量(noOfPackage 属性值)。最终,这段代码将会返回一个包含满足条件货物的包裹数量的数组或集合。

问题8:数据分流合并数据

8.1 初始化分段合并所需参数

infosp.count:

2

infosp.identifier:

${UUID()}

8.2 设置分段合并所需参数1

infosp.index:

1

8.2 设置分段合并所需参数2

infosp.index:

2

8.3 设置复原infosp分段参数

fragment.count:

${infosp.count}

fragment.identifier:

${infosp.identifier}

fragment.index:

${infosp.index}

问题9:多条件判断

dict.运输条款END2等于CY的时候等于Y

dict.运输条款END2等于CFS的时候等于S

dict.运输条款END2等于DOOR的时候等于D

${dict.运输条款END2:equals('CY'):ifElse('Y', ${dict.运输条款END2:equals('CFS'):ifElse('S', ${dict.运输条款END2:equals('DOOR'):ifElse('D', '')})})}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145578.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 剑指 Offer II 046. 二叉树的右视图

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个二叉树的 根节点 root,请找出该二叉树的 最底…

react create-react-app v5 从零搭建项目

前言: 好久没用 create-react-app做项目了,这次为了个h5项目,就几个页面,决定自己搭建一个(ps:mmp 好久没用,搭建的时候遇到一堆问题)。 我之前都是使用 umi 。后台管理系统的项目 使用 antd-…

【C++】C++11------线程库

目录 线程库接口线程接口使用lock_guard与unique_lockmutex(互斥锁)lock_guardunique_lock 原子性操作库条件变量(condition_variable) 线程库接口 在C11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口&#x…

使用Python进行App用户细分

App用户细分是根据用户与App的互动方式对用户进行分组的任务。它有助于找到保留用户,找到营销活动的用户群,并解决许多其他需要基于相似特征搜索用户的业务问题。这篇文章中,将带你完成使用Python进行机器学习的App用户细分任务。 App用户细…

图片分割处理(以玉米颗粒的图片分割为例)

问题: 为完成玉米颗粒分类任务,现需要处理训练图片,将以下图片中的玉米颗粒进行分割: 目标: 操作步骤(完整代码附在最后,该部分为解释说明) 一、提取通道并进行二值化 # 提取蓝…

解决Nacos配置刷新问题: 如何启用配置刷新功能以及与`@RefreshScope`注解的关联问题

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

三、2023.9.29.C++面向对象.3

文章目录 33、简述一下什么是面向对象?34、简述一下面向对象的三大特征?35、简述一下 C 的重载和重写,以及它们的区别?36、说说 C 的重载和重写是如何实现的?37、说说构造函数有几种,分别什么作用?38、只定…

SpringBoot+MinIO8.0开箱即用的启动器

一、代码拉取及安装 1.码云地址 https://gitee.com/qiangesoft/rdp-starter/tree/master/rdp-starter-minio 2.本地安装 二、代码接入 存储路径规则可配置桶访问权限可配置可配置初始生成多个桶 1.引入依赖 <dependency><groupId>com.qiangesoft.rdp</gro…

会议AISTATS(Artificial Intelligence and Statistics) Latex模板参考文献引用问题

前言 在看AISTATS2024模板的时候&#xff0c;发现模板里面根本没有教怎么引用&#xff0c;要被气死了。 如下&#xff0c;引用(Cheesman, 1985)的时候&#xff0c;模板是自己手打上去的&#xff1f;而且模板提供的那三个引用&#xff0c;根本也没有Cheesman这个人&#xff0c…

Mybatis 二级缓存(使用Ehcache作为二级缓存)

上一篇我们介绍了mybatis中二级缓存的使用&#xff0c;本篇我们在此基础上介绍Mybatis中如何使用Ehcache作为二级缓存。 如果您对mybatis中二级缓存的使用不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis 二级缓存https://blog.c…

Fake Maxpooling 二维滑动窗口

先对每一行求一遍滑动窗口&#xff0c;列数变为(列数-k1) 再对每一列求一遍滑动窗口&#xff0c;行数变为(行数-k1) 剩下的就是每一个窗口里的最大值啦 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing nam…

AIGC 绘画Stable Diffusion工具的安装与使用

我们先让ChatGPT来帮我们回答一下,什么是Stable Diffusion Stable Diffusion 是一种基于概率模型的图像生成技术。它通过对图像空间中每个像素的颜色值进行推断,从而生成具有高度真实感和细节的图像。 Stable Diffusion 使用一种称为扩散过程的方法来生成图像。在生成过程中…

测试用例的编写(面试常问)

作者&#xff1a;爱塔居 专栏&#xff1a;软件测试 作者简介&#xff1a;不断总结&#xff0c;才能变得更好~踩过的坑&#xff0c;不能再踩~ 文章简介&#xff1a;常见的几个测试用例。 一、淘宝购物车 二、登录页面 三、三角形测试用例 abc结果346普通三角形333等边三角形334…

【计算机网络笔记五】应用层(二)HTTP报文

HTTP 报文格式 HTTP 协议的请求报文和响应报文的结构基本相同&#xff0c;由四部分组成&#xff1a; ① 起始行&#xff08;start line&#xff09;&#xff1a;描述请求或响应的基本信息&#xff1b;② 头部字段集合&#xff08;header&#xff09;&#xff1a;使用 key-valu…

[JAVAee]MyBatis

目录 MyBatis简介 MyBatis的准备工作 框架的添加 连接数据库字符串的配置 MyBatis中XML路径的配置 ​编辑 MyBatis的使用 各层的实现 进行数据库操作 增加操作 拓展 修改操作 删除操作 查询操作 结果映射 单表查询 多表查询 like模糊查询 动态SQL / MyBa…

第7讲:VBA中利用FIND的代码实现单值查找实例

【分享成果&#xff0c;随喜正能量】心真如&#xff0c;随缘生起一切法&#xff0c;一切法还归于真如。《大乘起信论》讲心真如门就是体&#xff0c;心生灭门就是相用&#xff0c;心生灭、心真如都从一心而起&#xff0c;离开心别无二法。我们想从心真如门修行不易进入&#xf…

基于PHP+MySQL的家教平台

摘要 设计和实现基于PHP的家教平台是一个复杂而令人兴奋的任务。这个项目旨在为学生、家长和教师提供一个便捷的在线学习和教授平台。本文摘要将概述这个项目的关键方面&#xff0c;包括用户管理、课程管理、支付处理、评价系统、通知系统和安全性。首先&#xff0c;我们将建立…

【JVM】双亲委派模型

双亲委派模型 1. 什么是双亲委派模型2. 双亲委派模型的优点 1. 什么是双亲委派模型 提到 类加载 机制&#xff0c;不得不提的一个概念就是“双亲委派模型”。 双亲委派模型指的就是 JVM 中的类加载器如何根据类的全限定名找到 .class 文件的过程 类加载器: JVM 里面专门提供…

小谈设计模式(6)—依赖倒转原则

小谈设计模式&#xff08;6&#xff09;—依赖倒转原则 专栏介绍专栏地址专栏介绍 依赖倒转原则核心思想关键点分析abc 优缺点分析优点降低模块间的耦合度提高代码的可扩展性便于进行单元测试 缺点增加代码的复杂性需要额外的设计和开发工作 Java代码实现示例分析 总结 专栏介绍…

正态分布的概率密度函数|多种正态分布检验|Q-Q图

正态分布的概率密度函数&#xff08;Probability Density Function&#xff0c;简称PDF&#xff09;的函数取值是指在给定的正态分布参数&#xff08;均值 μ 和标准差 σ&#xff09;下&#xff0c;对于特定的随机变量取值 x&#xff0c;计算得到的概率密度值 f(x)。这个值表示…