【RPA进阶】 高级数据操作

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
🐬个人主页:会敲键盘的肘子
🐰系列专栏:UiPath
🦀专栏简介:UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。


在这里插入图片描述

🌈写在前面:

在RPA之前的博客中,我们已经了解了使用一些常见数据类型(如字符串、列表和字典)的基本数据操作。

在本文中,我们将介绍一些更高级的数据处理技术。我们将使用DateTime变量,并学习如何使用Select方法筛选DataTables


👉本文关键字:RPA、UiPath、Low-code、No-code、.Net

文章目录

      • 1️⃣ 背景
        • ♈ 什么是RPA
        • ♉ 什么是UiPath
        • ♊ 为什么使用UiPath
        • ♌ 本文收获
        • ♎ 环境
      • 2️⃣ DateTime
        • ♉ 概述
        • ♈ 业务场景
        • ♊ 示例
          • ⭐ ToString(“yyyy-MM-ddThh:mm:sszzz”)
          • ⭐ DateTime.Parse
          • ⭐ DateTime.ParseExact
          • ⭐.AddHours
          • ⭐ .Subtract
          • ⭐ Math.Abs
      • 3️⃣ Select方法
        • ♉ 概述
        • ♈ 业务场景
        • ♊ 示例
      • 4️⃣ 总结
      • 5️⃣ 参考资料

1️⃣ 背景

♈ 什么是RPA

RPA(Robotic process automation) 代表机器人过程自动化

它是一种软件程序,可在与计算机应用程序交互时模仿人类行为并实现重复的、基于规则的流程的自动化。

♉ 什么是UiPath

UiPath 是一种机器人流程自动化工具,用于自动化枯燥和重复的任务。它由罗马尼亚企业家 Daniel Dines 和 Marius Trica 于 2005 年创立。它还消除了自动化无聊任务的人工干预,并为所有活动提供了拖放功能,它是最简单的 RPA 工具。

♊ 为什么使用UiPath

UiPath在传统的RPA的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。

♌ 本文收获

  • 使用DateTime变量执行数据操作。
  • 使用Select方法筛选DataTables。

♎ 环境

  • UiPath Studio Community 2022.4.3

  • Windows 10

  • .Net

2️⃣ DateTime

♉ 概述

顾名思义,DateTime(System.DateTime)是一种变量类型,它使您能够存储有关日期和时间的信息。

这种类型的变量可以在系统名称空间System.DateTime下并选择.Net类型窗口中找到。

♈ 业务场景

在以下情况下使用时间敏感的文档(如发票):

  • 时间格式在整个过程中变化。

  • 在处理文档时需要增加或减少特定的时间量。

♊ 示例

我们将首先声明一个名为DateTimeVar的变量。

我们使用System.DateTime类型。用Now初始化变量,这是一个返回当前日期和时间的方法。

在这里插入图片描述

要将DateTime变量转换为字符串,我们将使用ToString方法。这将以不变区域性格式显示日期。要将结果打印到输出面板,我们将添加一个LogMessage活动,并键入DateTime变量.ToString作为消息。

在这里插入图片描述

现在让我们运行文件。日期和时间打印在“输出”面板中。

⭐ ToString(“yyyy-MM-ddThh:mm:sszzz”)

如果我们想将日期转换为特定的字符串格式,可以通过将所需的格式指定为ToString方法的参数来实现。让我们将此日期转换为ISO 8601格式,这是一种标准化的国际日期格式。无论何时,我们都要确保月份使用大写“M”,分钟使用小写“m”。我们将使用小写“h”表示12小时格式,使用大写“H”表示24小时格式。“T”是用作ISO格式分隔符的字符,“zzz”表示时区。

DateTimeVar.ToString(“yyyy-MM-ddThh:mm:sszzz”)

在这里插入图片描述

我们再次运行该文件以查看结果。

正如我们在输出面板中看到的,我们有年、月、日、小时、分钟、秒和时区。

在这里插入图片描述

⭐ DateTime.Parse

接下来,让我们看看如何使用DateTime处理从String到DateTime的转换DateTime.Parse方法。默认情况下,如果我们使用DateTime.Parse方法,Studio将假定提供的日期是根据不变量区域性格式化的。

我们将在日志消息之前添加一个Assign活动,并在To字段中添加变量。

在这里插入图片描述

在“值”字段中,我们将使用DateTime。解析将2021 4月16日的字符串转换为DateTime。字符串中日期的格式为:月、日、年。

DateTime.Parse(“04/16/2021”)

在这里插入图片描述
在这里插入图片描述

让我们尝试以另一种格式提供字符串类型的日期,看看它是否仍然被识别。我们将使用日、月、年。

DateTime.Parse(“16/04/2021”)

在这里插入图片描述

正如我们所看到的,它抛出了一个错误,因为在不变量文化格式中,月份必须是第一个,而16不是有效的月份号。

在这里插入图片描述

⭐ DateTime.ParseExact

对于我们确切知道接收日期的格式的情况,我们可以使用DateTime.ParseExact需要两个额外的参数:一个用于预期格式,另一个用于指定区域性。

DateTime.ParseExact(“16/04/2021”,”dd/MM/yyyy”, CultureInfo.InvariantCulture)

在这里插入图片描述

让我们再次运行该文件。

我们已经解决了这个问题,并且在“输出”面板中正确显示了日期。

在这里插入图片描述

如果我们可能以多种格式接收日期,我们可以将它们指定为类似这样的字符串数组。要像这样使用ParseExact,我们还需要提供第四个参数DateTimeStyles,它提供有关所提供日期格式的附加信息。要指定的典型值是1。

DateTime.ParseExact(“16/04/2021”,{”dd/MM/yyyy”, “dd.MM.yyy”}, CultureInfo.InvariantCulture, DateTimeStyles.None)

在这里插入图片描述
在这里插入图片描述

让我们再次运行工作流。

它使用当前字符串格式的日期。让我们用第二种格式来测试它。我们将运行该项目。我们可以在输出面板中注意到,结果保持不变

在这里插入图片描述

⭐.AddHours

在不同的过程中可能有用的操作是从Datetime变量中添加或减去时间。这可以通过使用以下方法来完成。

我们只需键入“Add”,然后键入所需的时间单位。在这种情况下,我们将添加“小时”。

作为参数,我们需要提供要添加的单元数。让我们将当前时间加上两个小时。

DateTimeVar.AddHours(2) 

在这里插入图片描述

现在让我们运行工作流!这是我们的结果。

在这里插入图片描述

如果我们想减去时间单位,我们将使用负值作为参数。让我们从当前时间中减去15小时,然后单击跑步。

DateTimeVar.AddHours(-15)

看起来我们的约会已经减去了15个小时。

让我们尝试另一个例子,这次我们增加14天。

DateTimeVar.AddDays(14)

这同样有效!

在这里插入图片描述
在这里插入图片描述

⭐ .Subtract

接下来,让我们看看如何评估两个日期之间的差异。我们需要了解自年初以来已经过去了多少天

为此,我们需要声明一个新的DateTime变量,我们将其命名为“StartOfYear”。此变量将存储一年中的第一天。让我们将类型设置为DateTime,并使用DateTime。用于设置日期的Parse方法。

在这里插入图片描述

要输出差值,我们可以使用减法。让我们根据需要的结果选择时间单位。

让我们为这个例子选择几天,然后运行我们的项目。

DateTimeVar.Subtract(StartOfYear).TotalDays.ToString

在这里插入图片描述

距离年初已经过去了108天半。

在这里插入图片描述

如果我们从较早的日期中减去较晚的日期,结果将为正。如果切换顺序,结果将为负。

StartOfYear.Subtract(DateTimeVar).TotalDays.ToString 

我们得到了预期的结果。

在这里插入图片描述
在这里插入图片描述

⭐ Math.Abs

如果顺序不相关,我们只想得到一个肯定的结果,我们可以使用Math.Abs方法显示绝对值。

Math.Abs(StartOfYear.Subtract(DateTimeVar).TotalDays).ToString

在这里插入图片描述
在这里插入图片描述

运行该项目以查看结果。减法的另一种选择是只在两个日期之间使用减号。

在这里插入图片描述

Math.Abs((StartOfYear-DateTimeVar).TotalDays).ToString 

我们得到了同样的结果。

在这里插入图片描述

3️⃣ Select方法

♉ 概述

Select方法通常用于检索DataTable中与筛选条件匹配的行项数组。

♈ 业务场景

使用select方法使用多个条件筛选数据表,然后将结果输出到不同的数据表。

♊ 示例

让我们看看我们的数据。这里我们有一份待租公寓的清单。正如我们所看到的,数据的结构是一个表。

在这里插入图片描述

我们希望将此电子表格中的信息存储在DataTable变量中,并使用Select方法使用多个条件筛选公寓。

让我们从一个简单的选择开始。我们会取回所有宠物友好型公寓。为此,我们将首先在项目中添加Read Range活动,指明包含列表的文件,然后删除“范围”属性字段中的值。

在这里插入图片描述

接下来,我们将创建一个DataTable变量,在其中存储结果。让我们把它命名为Apartments

为了从列表中筛选公寓,我们只需要添加一个Assign活动并键入Select语法。

对于输出,我们可以使用原始DataTable变量或创建一个新变量。

我们将其命名为FilteredApartments,我们还需要将其类型更新为System.Data.DataTable。

在这里插入图片描述

让我们在Assign活动的“To”字段中添加新变量。

对于“值”字段,我们将打开“表达式编辑器”(Expression Editor),以便可以完整地查看“选择”(Select)语法。

我们将首先输入Apartments,输入变量的名称.CopyToDataTable

在括号内,我们需要提供用于在引号之间过滤的表达式,因为它需要采用字符串格式。

让我们把这个分解。我们必须在方括号之间提供列名,然后是运算符,然后是所需的值。如果所需的值也是字符串,我们将其添加到撇号之间。过滤器表达式是在引号之间输入的,因为它是一个字符串。让我们添加.CopyToDataTable

在这里插入图片描述

接下来,我们希望添加一条日志消息,以标记进程的结束并切换断点。

我们将在调试模式下快速运行工作流文件,并在Locals面板中查看发生了什么。

看起来执行已到达断点。

在这里插入图片描述

Locals面板上的快速注释。它显示属性或活动以及用户定义的变量和参数。当我们想在任何时候检查流程的执行时,这是一个非常方便的工具。

在Locals面板中的Variables下,我们可以看到输入和输出变量Apartments和FilteredApartment。

当我们单击公寓的“查看更多”按钮时,我们可以看到原始的DataTable。

当我们单击FilteredApartments变量的View More(查看更多)时,我们可以看到只包含宠物友好型公寓的过滤后的公寓。完美的

好的,到目前为止,我们只使用一个标准过滤了输入DataTable。让我们看看如何添加更多内容。

现在,我们想找回所有价格在400到800之间、房间数量不同于1的宠物友好型公寓。

让我们转到我们的Assign活动并修改我们之前添加的语法。

为了获得我们想要的结果,我们将在条件之间使用逻辑运算符AND。

我们希望“价格”列中的值大于400且小于800,并且“房间数列”中的值不等于1。

我们可以添加一个排除标准,方法是将其括在括号中,并在前面输入“NOT”。

还要注意,我们没有对任何数值使用撇号。

在这里插入图片描述

让我们以调试模式运行工作流文件。

正如我们所看到的,只有4套公寓符合我们的标准。

在这里插入图片描述

但是,如果我们应用的标准太严格,数据表中没有返回任何行,会发生什么?

为了测试这一点,让我们删除前面的标准,然后更新语法以仅检索价格低于100的公寓。

在这里插入图片描述

让我们运行工作流文件。

我们收到名为“使用select筛选数据表”的Assign活动引发的错误。由于筛选太严格,因此没有留下行。

我们很可能会在生产中遇到这种情况。那么我们该如何解决这个问题呢?

在这里插入图片描述

我们可以通过在语法中添加if运算符来防止此错误。基本上,如果没有返回行,我们将只克隆原始数据表。

让我们花点时间来理解这个表达式。

该条件测试Select方法的结果。.Any方法返回一个布尔值,如果至少返回一行,该值为True,如果没有返回任何行,则为False。

如果条件为True,我们将像前面的情况一样继续过滤。如果条件为False,我们克隆ApartmentsDataTable变量的结构,以便将其分配给FilteredApartments。

在这里插入图片描述

让我们再运行一次我们的项目。

正如预期的那样,我们有一个原始数据表的空克隆。

在这里插入图片描述

4️⃣ 总结

  • 我们可以使用System声明DateTime变量。DateTime类型并使用Now方法分配当前日期。

  • 我们可以使用ToString方法将DateTime值转换为字符串。我们可以使用DateTime。解析方法以将字符串值转换为DateTime。

  • 我们可以使用DateTime。当我们确切知道将以字符串形式接收日期的格式时,使用ParseExact方法。

  • Add方法允许我们在处理DateTime变量时加减时间。

  • 要获得两个日期之间的差异,我们可以使用减法。最后,但并非最不重要的是,Math.Abs方法帮助我们获得日期差的绝对值。

5️⃣ 参考资料

DateTime Variables


⭐写在结尾:

文章中出现的任何错误请大家批评指出,一定及时修改。

希望写在这里的小伙伴能给个三连支持

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT会取代RPA?ta自己可不是这么说的!

先说一个AI热知识:ChatGPT 的推出在科技界引发了一场狂潮。 聊天机器人ChatGPT以及其背后的AI大模型GPT,在2023年引爆全球。GPT 全称为 Generative Pre-trained Transformer,是一种使用人工神经网络的深度学习技术,能够使机器像人…

Chatgpt超级写手+RPA采集工具,解决内容创作问题的自动化神器

你是否曾经为了寻找优质内容而感到束手无策?是否曾经因为时间成本高而感到头疼?是否曾经因为原创难度大而心生畏惧? 作为一名内容创作者,你一定会深有体会。如何在这个信息爆炸的时代中找到最优质的内容,是每个内容创作…

10几个国内AI大模型,让你的工作学习效率翻倍!

文章目录 前言1.道和顺ChatIC2.星期五3.文心一言4.讯飞星火认知大模型5.通义千问6.商汤-日日新7.Moss8.ChatGLM9. 360智脑写在最后 ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入…

刚刚!商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此...

金磊 发自 凹非寺量子位 | 公众号 QbitAI 国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”&am…

商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此【转载】

国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”,不仅体现了它是商汤自家“商字…

商汤版ChatGPT,有点牛逼,超预期了

金磊 发自 凹非寺 量子位 | 公众号 QbitAI 国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”&a…

商汤版ChatGPT来了!基于千亿参数大模型,谈笑风生,有“商”有 “量”!

来源:量子位 国产ChatGPT之战,已然是大步迈进白热化阶段。 商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”,不仅体现了它是商汤自家“商字…

商汤版ChatGPT发布千亿参数大模型:商量!开放API ,体验实录在此!

来源:量子位 | 公众号 QbitAI 国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。 单单是这个名字,便值得说道一番。 商量的“商”&am…

商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型!

编辑 | 量子位 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat)。…

商汤加入 ChatGPT 战局,发布“商量”语言大模型!

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 近日,AI 大模型落地的机器人应用赛道上,多了一位新成员——商量(SenseChat),它是由商汤科技研发而成,和 ChatGPT 有些类似&#x…

商汤版 ChatGPT 正式发布

点击“开发者技术前线”,选择“星标” 让一部分开发者看到未 来源:量子位 | 公众号 QbitAI 国产ChatGPT之战,已然是大步迈进白热化阶段。 就在刚刚,商汤正式发布自研类ChatGPT产品,名曰商量(SenseChat&…

常用的外贸英语口语汇总

一. 关于询盘,有哪些外贸英语: May I have an idea of your prices? 可以了解一下你们的价格吗? Can you give me an indication of price? 你能给我一个估价吗? Please let us know your lowest possible prices for the …

外贸询盘、对话、常用话术英语(上)

外贸常用话术 1 I’ve come to make sure that your stay in Beijing is a pleasant one. 我特地为你们安排使你们在北京的逗留愉快。 2 You’re going out of your way for us, I believe. 我相信这是对我们的特殊照顾了。 3 It’s just the matter of the schedule,that is,i…

调戏chatGPT(二)下围棋

这次我准备和chatGPT下盘围棋,我先得确认它知道围棋是啥,如果会的话我就不用介绍规则了 t 你会下围棋嘛 作为一名AI助手,我可以模拟下围棋的过程,但是我没有实际的感官,无法看到棋盘和棋子,也无法进行实…

打卡智能中国(三):一位水厂文员的多重身份

跟全国各地、各种岗位的工作者交流过,福建某自来水工厂的小夏,是令我们团队都印象深刻的一个。 这个1997年出生的男孩,用现在流行的话说,一毕业就顺利“上岸”了,回老家成了一名负责党政工作的文员。在“早中晚一天三盅…

亚信科技新“三驾马车”再创佳绩,与数字经济同频共振

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日,亚信科技公布了2022年财报。财报显示,2022年,亚信科技实现营收77.38亿元,同比上升12.2%;毛利润29.39亿元,同比上升11.1%,毛利率达38.0…

ChatGPT参加了2023高考数学,它的分数超过你了吗?

前几天,我们让ChatGPT写了高考作文。 有人说写得层次分明、条理清晰,感慨自己幸好早早毕业,不然就要被ChatGPT超过了。 有人则认为ChatGPT写的作文中规中矩、平淡无奇,十分正确但没有什么意义。 今天,我们准备再让Chat…

【Python系列】(二)Pandas常用函数

上一篇介绍了Pandas和Numpy这两个包,个人认为比较常用且方便的是Pandas,因此代码第一篇对Pandas的常用函数做一些介绍。 做简单的数据分析用Jupyter Notebook非常方便,利用写这篇文章正好也做一些整理,避免每次都去翻一大堆ipynb…

赛道冠军为AI狂飙:实在智能即将重归福州,亮相第六届数字中国建设峰会

2023年4月26日至30日,第六届数字中国建设峰会将在福建省福州市举行。本届峰会以“加快数字中国建设,推进中国式现代化”为主题,由国家网信办、国家发展改革委、科技部、工业和信息化部、国务院国资委、福建省人民政府共同主办。 作为我国信息…

和ChatGPT关于Swing music的一场对话(下篇)

昨天无意中刷到的系统推送的文章 点进去一看,原来介绍的就是老苏为了抛砖引玉编的 Swing music 的镜像,动作真是快啊。 坦白的说,文章比老苏写的好,所以让我纠结了好一阵子,本文我是发呢还是不发呢?不过似…