当前位置: 首页 > news >正文

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', '')})})}

相关文章:

APACHE NIFI学习之—UpdateAttribute

UpdateAttribute 描述: 通过设置属性表达式来更新属性,也可以基于属性正则匹配来删除属性 标签: attributes, modification, update, delete, Attribute Expression Language, state, 属性, 修改, 更新, 删除, 表达式 参数: 如下列表中,必填参数则…...

BIT-7文件操作和程序环境(16000字详解)

一:文件 1.1 文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明…...

冥想第九百二十八天

1.今天周三,今天晚上日语课上了好久,天气也不好, 2.项目上全力以赴的一天。 3.感谢父母,感谢朋友感谢家人,感谢不断进步的自己。...

深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)

目录 前言 环境配置 Quartz 什么是Quartz? 应用场景 核心组件 Job JobDetail Trigger CronTrigger SimpleTrigger Scheduler 任务存储 RAM JDBC 导入依赖 定时任务 销量统计 Redis检测 使用 ​编辑 注意事项 前言 在悦享校园1.0中引入了Quart…...

Lucene-MergePolicy详解

简介 该文章基于业务需求背景,因场景需求进行参数调优,下文会尽可能针对段合并策略(SegmentMergePolicy)的全参数进行说明。 主要介绍TieredMergePolicy,它是Lucene4以后的默认段的合并策略,之前采用的合并…...

数据的加解密

文章目录 分类特点业务的使用补充 分类 对称加密算法非对称加密算法 特点 对称加密算法 : 加密效率高 !加密和解密都使用同一款密钥 但是有一个问题 : 密钥如何从服务端发给客户端? (假如你直接先将密钥发给对方,要是在过程中被黑客技术破解了,那后面的消息也就泄漏了) (后…...

【Spring】更简单的读取和存储对象

更简单的读取和存储对象 一. 存储 Bean 对象1. 前置工作:配置扫描路径2. 添加注解存储 Bean 对象Controller(控制器存储)Service(服务存储)Repository(仓库存储)Component(组件存储&…...

【LeetCode热题100】--108.将有序数组转换为二叉搜索树

108.将有序数组转换为二叉搜索树 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 二叉搜索树的中序遍历是升序…...

Redis学习笔记(下):持久化RDB、AOF+主从复制(薪火相传,反客为主,一主多从,哨兵模式)+Redis集群

十一、持久化RDB和AOF 持久化:将数据存入硬盘 11.1 RDB(Redis Database) RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。 备份…...

【智能家居项目】裸机版本——设备子系统(LED Display 风扇)

🐱作者:一只大喵咪1201 🐱专栏:《智能家居项目》 🔥格言:你只管努力,剩下的交给时间! 输入子系统中目前仅实现了按键输入,剩下的网络输入和标准输入在以后会逐步实现&am…...

[Linux]记录plasma-wayland下无法找到HDMI接口显示器的问题解决方案

内核:Linux 6.5.5-arch1-1 Plasma 版本:5.27.8 窗口系统:Wayland 1 问题 在前些时候置入了一块显示器,接口较多,有 HDMI 接口,type-C 接口。在 X11 中可以找到外接显示器,但是卡顿明显&#xf…...

【计算机网络】高级IO之select

文章目录 1. 什么是IO?什么是高效 IO? 2. IO的五种模型五种IO模型的概念理解同步IO与异步IO整体理解 3. 阻塞IO4. 非阻塞IOsetnonblock函数为什么非阻塞IO会读取错误?对错误码的进一步判断检测数据没有就绪时,返回做一些其他事情完整代码myt…...

如何设计一个高效的应用缓冲区【一个动态扩容的buffer类】

文章目录 前言一、为什么需要设计应用层缓冲区必须要有 output buffer目的问题output buffer的解决方案: 必须要有 input buffer总结 二、设计要点三、buffer设计思路基础函数关于iovec与readv readfd如何实现动态扩容 问题 前言 在上一个博客,我们介绍…...

图像处理初学者导引---OpenCV 方法演示项目

OpenCV 方法演示项目 项目地址:https://github.com/WangQvQ/opencv-tutorial 项目简介 这个开源项目是一个用于演示 OpenCV 方法的工具,旨在帮助初学者快速理解和掌握 OpenCV 图像处理技术。通过这个项目,你可以轻松地对图像进行各种处理&a…...

管道-匿名管道

一、管道介绍 管道(Pipe)是一种在UNIX和类UNIX系统中用于进程间通信的机制。它允许一个进程的输出直接成为另一个进程的输入,从而实现数据的流动。管道是一种轻量级的通信方式,用于协调不同进程的工作。 1. 创建和使用管道&#…...

【JavaEE基础学习打卡08】JSP之初次认识say hello!

目录 前言一、JSP技术初识1.动态页面2.JSP是什么3.JSP特点有哪些 二、JSP运行环境配置1.JDK安装2.Tomcat安装 三、编写JSP1.我的第一个JSP2.JSP执行过程3.在IDEA中开发JSP 总结 前言 📜 本系列教程适用于JavaWeb初学者、爱好者,小白白。我们的天赋并不高…...

使用序列到序列深度学习方法自动睡眠阶段评分

深度学习方法,用于使用单通道脑电图进行自动睡眠阶段评分。 def build_firstPart_model(input_var,keep_prob_0.5):# List to store the output of each CNNsoutput_conns []######### CNNs with small filter size at the first layer ########## Convolutionnetw…...

【算法】排序——选择排序和交换排序(快速排序)

主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法头疼记:算法专栏…...

Docker 容器监控 - Weave Scope

Author:rab 目录 前言一、环境二、部署三、监控3.1 容器监控 - 单 Host3.2 容器监控 - 多 Host 总结 前言 Docker 容器的监控方式有很多,如 cAdvisor、Prometheus 等。今天我们来看看其另一种监控方式 —— Weave Scope,此监控方法似乎用的人…...

Spring Boot集成redis集群拓扑动态刷新

项目场景: Spring Boot集成Redis集群,使用lettuce连接Cluster集群实例。 问题描述 redis其中一个节点挂了之后,springboot集成redis集群配置信息没有及时刷新,出现读取操作报错。 java.lang.IllegalArgumentException: Connec…...

XSP25全协议 100W PD快充诱骗芯片_串口读电压电流信息

在Type-C快充技术普及的今天,快充诱骗协议芯片成为小家电、智能硬件、锂电设备等产品实现高效取电的核心器件。XSP25作为汇铭达推出的Type‑C受电端(Sink)多功能快充取电芯片,以全协议兼容、100W大功率输出、串口智能通信、极简外…...

AI编码助手重复犯错?4大策略构建可控的智能编程伙伴

1. 项目概述:当AI编码助手陷入“重复犯错”的怪圈最近和几个团队的技术负责人聊天,发现大家都有个共同的烦恼:项目里引入的AI编码助手(或者叫AI编程副驾),用着用着就发现它好像“不长记性”。同一个项目里&…...

【仅限首批内测团队获取】AI Agent Serverless标准化交付套件(含Terraform模块+OpenTelemetry追踪模板+合规审计清单)

更多请点击: https://intelliparadigm.com 第一章:AI Agent Serverless应用的演进逻辑与范式跃迁 AI Agent 与 Serverless 的融合并非技术堆叠,而是计算范式在智能体自治性、事件驱动粒度和资源契约关系三重维度上的结构性重构。早期云函数仅…...

Apache Weex内存泄漏终极解决方案:7个技巧让应用性能飙升

Apache Weex内存泄漏终极解决方案:7个技巧让应用性能飙升 【免费下载链接】incubator-weex Apache Weex (Incubating) 项目地址: https://gitcode.com/gh_mirrors/in/incubator-weex Apache Weex作为一款高性能的跨平台移动开发框架,在带来便捷开…...

DeepFlow:基于eBPF与Wasm的零代码全栈可观测性平台实战解析

1. 项目概述:从零代码到全栈可观测,DeepFlow 如何重塑云原生与AI应用的监控体验 如果你正在管理一个由微服务、容器和AI模型构成的复杂云原生环境,那么“可观测性”这个词对你来说,可能既熟悉又头疼。熟悉的是,你知道没…...

EDA工具选型实战:从价格到价值的深度迁移指南

1. 从价格战到价值战:一次EDA工具市场策略的深度复盘十年前,当Altium宣布将其旗舰PCB设计软件Altium Designer的价格下调约75%时,整个电子设计自动化(EDA)圈子都炸开了锅。这无异于在由Cadence、Mentor Graphics&#…...

学术生产力革命已来,NotebookLM Agent如何把文献综述时间压缩83%?实测数据首次公开!

更多请点击: https://intelliparadigm.com 第一章:NotebookLM Agent研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度理解与推理的 AI 助手,其内置的 Agent 能力可显著提升学术研究、技术调研与知识整合效率。当启用 Agent 模…...

DeepSeek总结的pg_clickhouse v0.3.0的新特性

来源:https://justatheory.com/2026/05/pg_clickhouse-0.3.0/ pg_clickhouse 的新特性 日期: 2026年5月11日 关于 pg_clickhouse 项目的新闻汇总。 新特性 首先,几周前 ClickHouse 博客发表了《pg_clickhouse 的新特性》一文,其中我介绍了该扩…...

长沙定制开发本地生活APP打造城市便民消费场景

随着长沙城市发展,市民对便民消费的需求越来越高,长沙本地生活APP定制开发也逐渐成为本地商家、政企单位布局数字化的重要选择。不同于通用模板APP,长沙定制本地生活APP可根据长沙本地特色,整合餐饮、生鲜、家政、休闲娱乐、政务便…...

2026年5月PLC厂家:十大品牌专业评测解决工厂自动化选型难

摘要当制造业加速迈向智能化和柔性生产,PLC作为工业自动化的核心控制单元,其选型直接决定了产线效率、系统稳定性与长期运营成本。然而,面对众多品牌在技术路线、开放程度、生态兼容性上的显著分化,决策者常陷入“性能与成本如何平…...