• 【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

    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”)
    
    • 1

    在这里插入图片描述

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

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

    在这里插入图片描述

    ⭐ DateTime.Parse

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

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

    在这里插入图片描述

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

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

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

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

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

    在这里插入图片描述

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

    在这里插入图片描述

    ⭐ DateTime.ParseExact

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

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

    在这里插入图片描述

    让我们再次运行该文件。

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

    在这里插入图片描述

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

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

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

    让我们再次运行工作流。

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

    在这里插入图片描述

    ⭐.AddHours

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

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

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

    DateTimeVar.AddHours(2) 
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

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

    DateTimeVar.AddHours(-15)
    
    • 1

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

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

    DateTimeVar.AddDays(14)
    
    • 1

    这同样有效!

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

    ⭐ .Subtract

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

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

    在这里插入图片描述

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

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

    DateTimeVar.Subtract(StartOfYear).TotalDays.ToString
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

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

    StartOfYear.Subtract(DateTimeVar).TotalDays.ToString 
    
    • 1

    我们得到了预期的结果。

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

    ⭐ Math.Abs

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

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

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

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

    在这里插入图片描述

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

    我们得到了同样的结果。

    在这里插入图片描述

    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


    ⭐写在结尾:

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

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

  • 相关阅读:
    PyTorch - autograd自动微分
    Python判断循环语法
    java计算机毕业设计农业视频实时发布管理系统源码+系统+mysql数据库+lw文档
    设计模式总结
    词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码
    【C++】最通俗的多态、虚表、虚指针讲解
    Git学习总结(28)—— Git 中的 .gitignore 文件详解
    cpu负载4800,根目录磁盘100%,问题排查和解决
    【UE5】解决UE5无法播放mp4视频
    自定义Dynamics 365实施和发布业务解决方案 3. 开箱即用自定义
  • 原文地址:https://blog.csdn.net/baidu_33146219/article/details/127827558