Lakeflow Designer 中的内置运算符

Lakeflow Designer 包括用于常见数据准备和转换任务的内置运算符。 打开左侧的 操作员 面板,按类别浏览操作员,或使用面板顶部的 “搜索操作员 ”。 运算符搜索根据意向建议运算符。 例如,键入 average by month 将返回 Aggregate 运算符。 若要在将运算符添加到画布后对其进行配置,请双击该运算符,或将其悬停在画布上,然后单击 铅笔图标。 (编辑运算符)以打开配置窗格。

LFD 操作符面板显示操作员搜索框及按类别分组的操作员。

每个运算符都显示 AI 生成的说明,说明它的作用。 说明还充当运算符的编辑器:编辑说明将重新配置运算符以匹配说明。

当没有内置操作符适合你的任务时,你可以 自己创建一个操作员。

源和输出

Source

将数据从 Unity 目录表或其他受支持的源导入设计器。 若要选择源,请按名称搜索表或文件,或按目录和架构浏览。 还可以从此窗格中创建新表。

选择表后,窗格会显示表的名称、所有者和上次更新时间。 单击 “选择新数据源 ”以更改源。 更改源会使所有下游运算符的输出缓存失效。

还可以将 Unity 目录指标视图用作源。 选择指标视图时,选择要包含的维度和度量值,设计器会为你生成聚合查询。

有关整个数据引入选项(包括面向整个 Unity 目录卷或文件夹)的信息,请参阅 将数据引入 Lakeflow 设计器。

输入数据

通过将值键入电子表格样式编辑器来创建表。 使用此运算符可以添加少量引用数据,例如查找值或测试数据,而无需创建单独的源表。

字段 DESCRIPTION
表数据 以表的形式输入数据。 第一行定义列标题,其余行是数据。 设计器从其值推断每个列的数据类型。

输出

将数据从设计器导出。 输出运算符可以将结果写入 Unity 目录表,将其发布为具体化视图,或将它们写入 Unity 目录卷中的文件。 选择输出 类型的目标。

输出类型 DESCRIPTION
Table 将结果写入托管 Unity 目录表。 设置表名称和输出位置(目录和架构),然后选择写入模式。
具体化视图 在 Unity 目录中将结果发布为具体化视图,以便在视觉数据准备运行时刷新。
文件 将结果写入 Unity 目录卷中的文件。 选择 CSV、Excel 或 JSON 的文件类型,然后设置目标卷和文件名。

对于 表 或 文件 输出,请选择每个运行写入到目标的 写入模式的方式:

写入模式 DESCRIPTION
覆盖 将现有内容替换为当前运行的结果。 这是默认值。
Append 将当前运行的结果添加到现有行。
Merge 通过匹配指定的合并键将行向上插入目标表中。 可用于表输出。

单击“ 运行” 以运行视觉对象数据准备并写入结果。 对于表输出,如果该表不存在,则运算符会创建它。 计划的运行使用同一写入模式写入目标。

输出 操作员 写入表、实体化视图或文件后,连接其输出端口以继续工作流程。 对于表、实体化视图和普通单文件输出,输出端口直接读取 输出操作符 刚写入的持久资产。 对于分割输出、Excel 范围写入和无头文件,输出端口会通过输入行。

对于文件输出,展开 高级 选项以配置以下选项:

  • 按不同值拆分:选择一列为每个不同值写入一个文件。 对于Excel输出,你可以把每个值写到一个独立的练习册里。 一次运行最多可创建50个文件或工作表。

  • 工作表名称:对于Excel输出,设置目标工作表。

  • 包含头行:在CSV或Excel输出中包含列名。

  • 单元范围:对于覆盖模式下的Excel输出,设置起始单元和一个可选的结束单元。 Designer 会保留格式在范围外,如果数据不符合固定范围,运行失败。 你不能将一个单元格范围和分割合并 成不同的值。

警告

当 覆盖 模式将输出拆分为文件时,Designer 会删除与生成名称模式匹配的现有文件。 这可能包括卷文件夹中带有相同模式的手动文件。

AI 函数

对数据运行内置 AI 操作。 在配置窗格中,打开 “选择函数 ”,然后选择下表中的其中一个函数。 每个函数在窗格中公开输入(例如列、提示、标签或语言)和输出的选项。

函数 DESCRIPTION
ai_forecast 预测时间序列数据,包括你指定的视野和频率。 ai_forecast 是处理整个输入表的表值函数。

Transformations

以下运算符对数据执行转换。

Aggregate

通过对数据和计算聚合值进行分组来汇总行。

字段 DESCRIPTION
聚合依据 选择列,选择聚合函数,并提供输出列的名称。 单击“ + 添加聚合” 以添加更多内容。 支持的功能:AVG, COUNT, COUNT DISTINCT, MINMAXMEANPERCENTILEMEDIAN, 。 VARIANCESTDDEVSUM
分组依据 选择要分组依据的列。 单击“ + 添加分组” 以添加更多内容。 分组依据中使用的列将自动包含在输出中。

结合

通过使用集合操作将多个表中的数据合并为单一输出。

字段 DESCRIPTION
Set作 选择 “联合”、“ 交错”或 “除外”。
合并策略 选择 “非重复 ”可排除输出中的重复行,或 “全部 ”保留所有行,包括重复行。
工会名称 对于工会,在高级中选择“工会名称”,以匹配列名而非职位。
允许缺失列 对于 Union,首先选择 Union by name,然后选择 “允许缺失列 用空值填补缺失的列”。 如果该选项关闭,每个输入必须包含相同的列集。

Unique

移除输入数据中的重复行。 默认情况下,操作符会在所有列进行去重处理。 你可以选择部分列作为键,并排序行以控制保留哪个重复。

字段 DESCRIPTION
唯一由 选择 所有列 以删除所有列中相同的行,或 选择已选 列以移除仅在你选择的键列上重复的行。
排序依据 可选:选择一列或多列并设置排序方向,以控制每组重复项保留哪行。 如果你不设置顺序,操作员会保留遇到的第一行。

Filter

使用图形条件生成器根据行是否满足一个或多个条件拆分行。

字段 DESCRIPTION
条件 对于每个条件,请选择 一个列、一个 条件类型和一个要有条件匹配 的值 。 支持的条件类型:
  • 等于/不等于
  • 是/不是其中之一
  • 包含/不包含
  • 开头/不以
  • 结尾 /不以结尾
  • 大于/小于
  • 为 null/不为 null

对于日期列的条件,日期选取器支持跨年和月导航。
当条件与列的值匹配时(例如, 是其中之一),值列表会根据输入显示列的不同值样本。 选择 “更多加载” 以按需获取额外值。

Filter 运算符有两个输出,因此可以根据数据是否符合条件对数据进行分支:

输出 DESCRIPTION
包括 满足筛选条件的行。
排除 不符合筛选条件的行,包括条件计算结果为 null 的行。

护栏

通过有序检查列表验证输入数据,并区分通过的行和失败的行。

字段 DESCRIPTION
检查 添加 必需列、 行计数、 非空、 唯一、 接受值、 禁止值、 值范围、 正则表达式匹配或 表达 式检查。
当检验失败时 选择三种选项之一来控制输出和下游行为。
  • 警告并继续传递的行:

    • 下游执行仍在继续。

    • 通过所有启用检查的行会被发送为 通过。

    • 未通过至少一次启用检查的行将被送入 失败。

    • 错误 包含每个失败检查的一行,包括其类型、严重性和消息。

  • 警告和阻止传递的输出:

    • 如果检查失败,下游执行继续,但 Passed 不包含行。

    • 失败 仍包含失败行, 错误仍包含 失败细节。

    • 使用该选项防止下游处理传递行,同时允许下游处理 失败 和 错误。

  • 工作流失败:

    • 如果检查失败,执行会在下游操作符运行前停止。

    • 它们不会接收 通过、 失败或 错误 的输出。

    • 在调度作业中,运行被标记为失败,这可能触发配置好的失败处理,如 作业通知。

当你预览护栏操作符时,仍然可以在 “失败工作流 ”模式下检查所有三个输出。

要在任一警告模式下保持输出的行,可以将其连接到输出操作符。

加入

通过根据匹配的列值组合输入数据集来链接表。

字段 DESCRIPTION
输入表 选择要联接的两个输入表。 要连接三个或更多表,请展开 高级选项,选择 “加入超过两个表”,并为每个额外 表添加输入 。
联接条件 通过从两个表中选择匹配的列,指定至少一个连接条件。 单击“ + 添加联接”表达式 以添加更多条件。 可选:点击两个表格之间的箭头添加自定义连接条件,然后编辑AI生成的描述或编写SQL。 当有三个或更多输入时,每个新增的表必须定义一个与另一个输入的关系。
匹配大小写 关闭时(默认值),字符串联接键不区分大小写(并忽略前导空格和尾随空格)。 打开 Match case 以完全匹配字符串键。 此选项适用于联接键,不适用于自定义联接条件。
联接类型 对于两个输入表,选择连接类型。 默认情况下,Join 运算符将其结果拆分为三个输出(请参阅以下部分)。 选择 “完全联接”、“ 内部联接”、“ 左联接”或 “右联接 ”以生成单个联接输出。 当输入有三个或以上时,操作员遵循配置好的表关系,使用内连接,并产生单一连接输出。
输出列 可选:选择要包含的列。 默认情况下,每个输入表的列都包含在内。 在两个输入中,右表中的重复名称会获得 right_ 前缀。 如果有三个或更多输入,重复名称会根据输入顺序获得后缀,例如 _2 第二个输入。
自定义表达式列 可选:基于联接的结果添加自定义表达式列。

在两个输入时,Join 操作符默认有三个输出,因此你可以根据连接结果分支工作流程:

输出 DESCRIPTION
左不匹配 左侧输入中没有匹配项的行。
已匹配 在两个输入中匹配的行。
右不匹配 左侧输入中没有匹配项的右侧输入中的行。

在两个输入时,选择特定的 连接类型 (全连接、内连接、左连接或右连接)会产生一个连接输出,而不是三个分割输出。

Limit

通过仅传递至指定的最大行数来限制行计数。

字段 DESCRIPTION
最大行数 指定要传递的最大行数。

透视

以两个方向重塑表格数据。 使用配置窗格顶部的选项卡选择模式。

列→行(透视表)

将一列中的非重复值转换为新的列标题,其中填充了另一列的聚合值。

字段 DESCRIPTION
透视列 选择其非重复值成为新标头的列。
值和聚合 选择填满枢轴单元格的列,并选择聚合函数。 可用的函数取决于所选列的数据类型:
  • 数值:, , , STDDEVMINMAXMEANSUMMEDIANLASTFIRSTCOUNTCONCATAVGVARIANCE
  • 文本、日期和时间戳:CONCAT, COUNT, FIRST, LASTMAX,MIN
  • 布尔值:ANY, , FIRSTCOUNTEVERYLASTCONCATNONE
  • 复、二元和地理空间: COUNT, FIRST, LAST

配置在窗格中处理缺失值的方式(例如 null 或零)。

列→行(逆透视)

将一个或多个列折叠成行。

字段 DESCRIPTION
对列进行逆透视 选择要取消透视的列。
键列和值列 设置输出键列和值列的名称。

包括列

对于任一模式,请选择哪些列与透视值或取消透视值一起保留在输出中,并删除转换前不需要的列。 设计器从不分配给透视、值或非透视角色的列中推断固定的(分组)列。

排序

对一个或多个列的行进行排序。

字段 DESCRIPTION
排序顺序 为每个列选择 ASC (升序) 或 DESC (降序)。 单击“ + 添加排序表达式 ”以按其他列进行排序。 排序遵循标准词法顺序。

SQL

为其他运算符未涵盖的任何转换编写自定义 SQL 代码。

字段 DESCRIPTION
SQL 编辑器 键入 SQL SELECT 语句。 若要引用输入运算符的输出,请使用该运算符的名称作为查询中的表名。 例如:
SELECT COUNT(*)
FROM aggregate_2
WHERE 1 = 1
单击 “代码”图标。 按钮可打开完整的 SQL 代码窗格,并查看语句如何适应完整的工作流。
Parameters 若要引用视觉数据准备参数,请使用命名参数标记语法,例如 :environment。 设计器显示打开运算符进行编辑时编辑器上方的示例。 请参见 在 Lakeflow Designer 中使用参数。

Select

从输入数据中选择、重命名和重新排序列。

字段 DESCRIPTION
包括或排除列 选择 “以所有列开头 ”或 “以无列开头”,然后使用复选框包括或排除单个列。 拖动列以对列重新排序。
重命名列 在任何列旁边的 “重命名 ”字段中键入新名称。
动态选择列 不要单独选择列,而是通过规则选择列,使输出随着输入模式的变化而调整。 选择是 保持匹配列 还是 移除匹配列,然后通过以下方式匹配列:
  • 列数据类型:选择一种或多种类型,如布尔、整数、浮点/双数、十进制、字符串、日期、时间戳或二进制。
  • 列名:匹配以正则表达式开头、以以结尾、包含或匹配的名称。 开启大小 写敏感功能 ,完全匹配大小写。
  • 公式:写一个布尔表达式,针对每列的元数据进行评估,使用诸 Name如 、 Type、 IsNumeric和 等字段。 例如,匹配 IsNumeric AND Name LIKE '%_id' 名称以 结尾的 _id数值列。

准备

通过对输入数据链接一个或多个操作来清理和派生列。 单击“ + 添加操作 ”并选择一个操作。 根据需要添加任意数量的操作。 它们按顺序应用。

Action DESCRIPTION
公式 使用自然语言或 SQL 表达式创建新列或覆盖现有列。
多列公式 对选定的列应用一个SQL表达式,用作 {current_column} 占位符。 替换列或创建带有名称前缀或后缀的新列。
更改类型 将列转换为另一种数据类型。
替换值 查找和替换列中的值。
填充 null 将 null 值替换为常量。
文本大小写 将大小写更改为小写、大写或标题。
Trim 从一端或两端删除空格。
正则表达式替换 替换与正则表达式模式匹配的文本。
提取 提取与正则表达式组匹配的子字符串。
分析日期 将字符串分析为日期或时间戳。
分析 JSON 从JSON数据中提取行或列。
重命名列 用前缀、后缀、换格或查找替换功能重命名多列。

除 Formula 和 ParseJSON 外,所有操作都支持多列。

若要删除操作,请将鼠标悬停在其行上,然后单击“短划线”图标。

自定义列

“ 公式” 操作将打开表达式编辑器,可在其中使用自然语言或 SQL 代码创建新列或覆盖现有列。 编辑器有两个输入框,双向:

  • 说明:键入希望列执行的操作的自然语言说明。 设计器使用 Genie 生成下面的相应代码表达式。

  • 表达式:如果希望直接编写或编辑代码,请单击“编辑表达式”按钮。 编辑表达式会自动生成自然语言说明。

在表达式编辑器中,输入 @ 以打开操作符输入列和内置SQL函数的菜单。 输入 以 @ 筛选列表,然后选择一个条目插入:列插入其名称,函数插入调用时光标置于括号内。 同样 @ 的菜单也可在其他操作符的表达式编辑器中使用,如自定义的筛选和连接条件。

Python

对输入数据运行自定义Python(PySpark)。

字段 DESCRIPTION
result 将单个 DataFrame 分配给该帧,该帧 result将成为操作员的输出。
inputs["data"] 按上游顺序排列的输入数据帧列表。 运算符详细信息窗格按顺序显示每个输入的名称。 例如,Available inputs: inputs["data"][0] (customers), inputs["data"][1] (sales)。
Parameters 调用 dbutils.widgets.get(),例如 dbutils.widgets.get("environment"),引用视觉对象数据准备参数。 设计器显示打开运算符进行编辑时编辑器上方的示例。 请参见 在 Lakeflow Designer 中使用参数。

最小模式是在存在时使用第一个输入,否则为空 DataFrame:

# inputs["data"] is a list of input DataFrames

result = inputs["data"][0] if inputs["data"] else spark.createDataFrame([], "col: string")

在此处,可以在工作分配结束之前将 DataFrame 操作(例如, select、 filter或 withColumn联接) result 链接在一起,或者替换为 result 从中 inputs["data"]生成的新 DataFrame。

在预览过程中,操作员的输出会随着生成过程流入输出窗格,包括你渲染的 display() 材料和打印的文本,这样你就能在运行结束前看到结果。

Python预览模式

在构建可视化数据准备时,Designer会持续预览每个操作员对数据样本的输出。 这些预览会像完整运行一样运行你的 Python 代码。 当你的代码出现副作用时,比如调用外部API、发送通知,或者写入Unity目录外的系统,这就是问题所在。 通常你不希望每次预览都触发这些副作用。

为了让你的代码区分这两者,请阅读 config["is_preview"],Designer 为你设置的一个布尔值:

  • True 在预览期间,这样你可以跳过副作用。

  • False 在完整跑步期间,比如点击 运行 或预定运行时。

例如,保护副作用,只在预览之外运行:

result = inputs["data"][0] if inputs["data"] else spark.createDataFrame([], "col: string")

# Side effects run only on a full run or scheduled job, not during previews.
if not config["is_preview"]:
    write_results_to_external_system(result)

用户自定义操作符必须声明一个 is_preview 配置属性以接收该值。 详见 预览中的跳过副作用。

组织

注意事项

在画布上添加注释,以便你可以记录工作流本身:其用途、假设、注意事项或交接上下文,供以后打开视觉数据准备的人员使用。

字段 DESCRIPTION
内容 使用富文本编辑器在画布上内联编辑笔记内容。 可以添加标题、文本样式、链接、图像和表格,其中纯文本不够。 注释不会影响数据流经运算符的方式。

组

在画布上直观地对运算符进行分组,而不会更改数据之间的流动方式,当视觉数据准备增大或想要反映逻辑阶段时,这非常有用。

字段 DESCRIPTION
添加到组 将一个或多个运算符拖到组上以将其添加到组。
从所选内容创建 选择一个或多个运算符,打开快捷菜单(右键单击),然后选择“ 创建新组 ”以在新组中包装所选内容。
Name 为组指定描述性名称。
最小化/展开 单击 “最小化 ”或 “展开 ”可显示或隐藏画布上的组内容。
启用/禁用 右键点击组头,选择 “禁用 ”以排除组内所有操作员,或者 启用 以再次包含他们。 禁用的操作符不产生输出行,因此下游操作符在启用之前会收到空结果。 你也可以启用或禁用单个操作员。 参见 重命名、复制、删除和禁用操作员。

Visualization

从输入数据创建可视化效果,并将其直接呈现在画布上。 将可视化效果运算符连接到生成表格数据的任何运算符,以绘制结果图表,而无需离开设计器。

若要配置可视化效果,请打开运算符并选择 可视化 效果类型,然后将列映射到图表。

字段 DESCRIPTION
Visualization 要呈现的图表类型,如 条形图、 区域或 计数器。

创建自己的操作员

当没有内置运算符覆盖你的逻辑时,创建一个用户自定义运算符。 用户定义的操作符要么是本地操作,要么是共享操作:

  • 本地:操作员属于当前的视觉数据准备团队。

  • 共享:操作员已注册,以便其他用户和视觉数据准备者使用。 其逻辑是 Python 或 Unity 目录函数,描述为 YAML。 参见 “构建共享操作员”。

其他资源