process-mining
2021.10
true
重要 :
请注意此内容已使用机器翻译进行了部分本地化。
UiPath logo, featuring letters U and I in white
Process Mining
Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Last updated 2024年9月2日

聚合表达式

简介

记录表达式仅将记录本身的值作为输入。 相比之下,聚合表达式可用于对特定记录集进行计算。 例如,要计算所有记录的 总数 ,或数据集中的记录总数。 可以将聚合表达式与 SQL 中的GROUP BY函数进行比较。

在根级别聚合

聚合表达式在聚合级别为每个唯一值计算一个值。 默认情况下,这是在 级别,即整个表格的一个值。



下面是一个聚合表达式示例,用于计算“发票”数据集中所有金额的总和。



聚合表达式sum(records.amount)的计算方法如下:
  1. 获取 Invoices中的所有记录。
  2. 对于每条记录,选取“ 金额 ”数据源属性的值。
  3. 返回所有这些金额的总和。

该表达式计算单个唯一值,但此值将添加到数据集中的每条记录中。 以下是包含 4 行数据集的示例。



在子级别上聚合

除了计算整个数据集的聚合值,您还可以计算记录组的值。



以下是用于计算每个供应商总金额的聚合表达式示例。



系统将添加一个聚合级别,并将表达式的作用域设置为此新级别。 以下是示例数据集。



为作用域级别内的每个单独值计算一次聚合表达式。 此值将添加到此作用域内的每条记录。 因此, 总计 计算一次,然后将 4 次复制到每条记录。 每个供应商的总金额 计算 3 次。 由于“供应商 A”有 2 条记录,因此将其值设置为两条记录。 由于“供应商 B”和“供应商 C”只有一个记录,因此会将值分配给相应的记录。

定义子级别

请按照以下步骤在子级别定义聚合表达式。

步骤

操作

1

在“ 编辑表达式属性 ”对话框的 “设置” 面板中,右键单击“ ”。

2

选择“ 添加级别”

3

单击“ 级别”,然后选择要对值进行分组的数据源属性。 在本例中为 供应商

4

右键单击选定的属性级别,然后选择 “设置为表达式级别”

注意: 所选级别用箭头表示。

树结构

在聚合表达式中,也可以访问所选聚合级别以外的其他级别。 我们可以使用p (代表父项)和c (代表子项)来上下遍历树结构。
注意: 节点有一个父节点,因此p返回单个节点,但可以有多个子节点,因此c返回节点列表。

父聚合级别



以下是基于父级别的聚合表达式示例。



表达式percentage(sum(records.Amount) / sum(p.records.Amount) * 100)计算每个供应商的百分比:
  1. 与供应商关联的金额总和除以所有金额的总和。
  2. 作用域将转移到父级别,即根级别。
  3. 将结果乘以 100 以转换为百分比。

子聚合级别



以下是基于子级别的聚合表达式示例。



count(c)表达式返回每个 供应商类型的所有供应商的列表。 由于每个子节点都是供应商,因此可以计算子c的数量。

创建条件检查

对于记录表达式, if()函数可用于条件检查。 但是,只能按记录应用此函数。 无法使用 if 语句检查一组记录中的条件。 树形结构可用于遍历数据(特定部分),例如表示属性。


以下函数可用于此类计算。

函数

描述

exists(Scope, Condition)

如果作用域中至少有 一个条件的 计算结果为true ,则返回true }。

forall(Scope, Condition)

如果作用域中的所有条件的计算结果均为 true,则返回 true

有关示例,请参见下图。



例如表达式

exists(records, find(lower(Supplier), 'consulting')

如果供应商的发票名称中包含“咨询”,则检查每个供应商类型。

备注: lower用于将供应商名称转换为小写,并使检查不区分大小写。

筛选

聚合数据时,有时会根据数据的特定部分进行计算。 在这种情况下,可以使用filter()函数。


以下是基于筛选器的聚合表达式示例。

count(
    unique(
        filter(
            records,
            supplier_type = "Machinery"
        ).Supplier
    )
)count(
    unique(
        filter(
            records,
            supplier_type = "Machinery"
        ).Supplier
    )
)

从内到外,表达式按以下方式构建:

  1. 检索当前作用域内的所有记录。
  2. 筛选这些记录,以便仅保留“ 供应商”类型 为“ 机械 ”的记录。
  3. 对于每个筛选的记录,返回“ 供应商 ”数据源属性的值。
  4. 从列表中删除所有重复值,因此每个唯一值只有一个项目。
  5. 计算列表中剩余的项目数。



在此示例中,“ 案例所有者 ”级别设置为“表达式级别”。 这意味着表达式的作用域是为 Case owner的所有唯一值计算一个值。 对于每个 案例所有者 值, records是属于此案例所有者的记录列表。

该表达式为每个 案例所有者 返回一个值,该值表示类型为 Machinery的唯一供应商的数量。

其他筛选器选项

设置” 面板中的菜单包含用于添加聚合筛选的选项。



以下是“设置”菜单选项的说明。

选项

描述

启用筛选器表达式

用于输入表达式作为筛选条件。

启用筛选器控件

打开“ 编辑筛选器控件 ” 对话框,您可以在其中从列表中选择可用的筛选器控件。

启用比较周期

使您能够添加比较期间或表达式,以定义要筛选的多个先前期间。

应用最终用户筛选器

使您能够应用可用的最终用户筛选器。

注意: 当您使用“ 设置” 菜单中的筛选选项时,筛选结果将显示在“ ”面板中。 有关示例,请参见下图。


排序

排序可用于确定最大值或最小值,或按特定顺序处理记录。

当您需要表达式的第一条或最后一条记录时,可以通过以下方式按级别排序:

  • A..ZZ..A 将按值排序。

    • 在字符串上,这将按字母顺序排序。
    • 在数字格式(双精度、整数)上,这将按数值排序。
    • 对于与时间相关的格式(日期时间、日期),系统将按时间顺序对其进行排序。
  • 0..99..0 将根据组中的记录数进行排序。
  • 表达式 ”允许您填写表达式,该表达式将按上述值排序。

对于每个排序选项,可以将顺序设置为升序或降序。

有关排序示例,请参见下图,其中确定了处理每个案例的第一个用户。



聚合表达式first(records.User)确定每个Case ID的第一个User }。 Event end按升序排序。

此页面有帮助吗?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath Logo White
信任与安全
© 2005-2024 UiPath。保留所有权利。