Lakeflow Designer 包括用于常见数据准备和转换任务的内置运算符。 打开左侧的 操作员 面板,按类别浏览操作员,或使用面板顶部的 “搜索操作员 ”。 运算符搜索根据意向建议运算符。 例如,键入 average by month 将返回 Aggregate 运算符。 若要在将运算符添加到画布后对其进行配置,请双击该运算符,或将其悬停在画布上,然后单击 (编辑运算符)以打开配置窗格。
每个运算符都显示 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 |
|---|---|
| 条件 | 对于每个条件,请选择 一个列、一个 条件类型和一个要有条件匹配 的值 。 支持的条件类型:
对于日期列的条件,日期选取器支持跨年和月导航。 当条件与列的值匹配时(例如, 是其中之一),值列表会根据输入显示列的不同值样本。 选择 “更多加载” 以按需获取额外值。 |
Filter 运算符有两个输出,因此可以根据数据是否符合条件对数据进行分支:
| 输出 | DESCRIPTION |
|---|---|
| 包括 | 满足筛选条件的行。 |
| 排除 | 不符合筛选条件的行,包括条件计算结果为 null 的行。 |
护栏
通过有序检查列表验证输入数据,并区分通过的行和失败的行。
| 字段 | DESCRIPTION |
|---|---|
| 检查 | 添加 必需列、 行计数、 非空、 唯一、 接受值、 禁止值、 值范围、 正则表达式匹配或 表达 式检查。 |
| 当检验失败时 | 选择三种选项之一来控制输出和下游行为。 |
警告并继续传递的行:
下游执行仍在继续。
通过所有启用检查的行会被发送为 通过。
未通过至少一次启用检查的行将被送入 失败。
错误 包含每个失败检查的一行,包括其类型、严重性和消息。
警告和阻止传递的输出:
如果检查失败,下游执行继续,但 Passed 不包含行。
失败 仍包含失败行, 错误仍包含 失败细节。
使用该选项防止下游处理传递行,同时允许下游处理 失败 和 错误。
工作流失败:
如果检查失败,执行会在下游操作符运行前停止。
它们不会接收 通过、 失败或 错误 的输出。
在调度作业中,运行被标记为失败,这可能触发配置好的失败处理,如 作业通知。
当你预览护栏操作符时,仍然可以在 “失败工作流 ”模式下检查所有三个输出。
要在任一警告模式下保持输出的行,可以将其连接到输出操作符。
加入
通过根据匹配的列值组合输入数据集来链接表。
| 字段 | DESCRIPTION |
|---|---|
| 输入表 | 选择要联接的两个输入表。 要连接三个或更多表,请展开 高级选项,选择 “加入超过两个表”,并为每个额外 表添加输入 。 |
| 联接条件 | 通过从两个表中选择匹配的列,指定至少一个连接条件。 单击“ + 添加联接”表达式 以添加更多条件。 可选:点击两个表格之间的箭头添加自定义连接条件,然后编辑AI生成的描述或编写SQL。 当有三个或更多输入时,每个新增的表必须定义一个与另一个输入的关系。 |
| 匹配大小写 | 关闭时(默认值),字符串联接键不区分大小写(并忽略前导空格和尾随空格)。 打开 Match case 以完全匹配字符串键。 此选项适用于联接键,不适用于自定义联接条件。 |
| 联接类型 | 对于两个输入表,选择连接类型。 默认情况下,Join 运算符将其结果拆分为三个输出(请参阅以下部分)。 选择 “完全联接”、“ 内部联接”、“ 左联接”或 “右联接 ”以生成单个联接输出。 当输入有三个或以上时,操作员遵循配置好的表关系,使用内连接,并产生单一连接输出。 |
| 输出列 | 可选:选择要包含的列。 默认情况下,每个输入表的列都包含在内。 在两个输入中,右表中的重复名称会获得 right_ 前缀。 如果有三个或更多输入,重复名称会根据输入顺序获得后缀,例如 _2 第二个输入。 |
| 自定义表达式列 | 可选:基于联接的结果添加自定义表达式列。 |
在两个输入时,Join 操作符默认有三个输出,因此你可以根据连接结果分支工作流程:
| 输出 | DESCRIPTION |
|---|---|
| 左不匹配 | 左侧输入中没有匹配项的行。 |
| 已匹配 | 在两个输入中匹配的行。 |
| 右不匹配 | 左侧输入中没有匹配项的右侧输入中的行。 |
在两个输入时,选择特定的 连接类型 (全连接、内连接、左连接或右连接)会产生一个连接输出,而不是三个分割输出。
Limit
通过仅传递至指定的最大行数来限制行计数。
| 字段 | DESCRIPTION |
|---|---|
| 最大行数 | 指定要传递的最大行数。 |
透视
以两个方向重塑表格数据。 使用配置窗格顶部的选项卡选择模式。
列→行(透视表)
将一列中的非重复值转换为新的列标题,其中填充了另一列的聚合值。
| 字段 | DESCRIPTION |
|---|---|
| 透视列 | 选择其非重复值成为新标头的列。 |
| 值和聚合 | 选择填满枢轴单元格的列,并选择聚合函数。 可用的函数取决于所选列的数据类型:
配置在窗格中处理缺失值的方式(例如 null 或零)。 |
列→行(逆透视)
将一个或多个列折叠成行。
| 字段 | DESCRIPTION |
|---|---|
| 对列进行逆透视 | 选择要取消透视的列。 |
| 键列和值列 | 设置输出键列和值列的名称。 |
包括列
对于任一模式,请选择哪些列与透视值或取消透视值一起保留在输出中,并删除转换前不需要的列。 设计器从不分配给透视、值或非透视角色的列中推断固定的(分组)列。
排序
对一个或多个列的行进行排序。
| 字段 | DESCRIPTION |
|---|---|
| 排序顺序 | 为每个列选择 ASC (升序) 或 DESC (降序)。 单击“ + 添加排序表达式 ”以按其他列进行排序。 排序遵循标准词法顺序。 |
SQL
为其他运算符未涵盖的任何转换编写自定义 SQL 代码。
| 字段 | DESCRIPTION |
|---|---|
| SQL 编辑器 | 键入 SQL SELECT 语句。 若要引用输入运算符的输出,请使用该运算符的名称作为查询中的表名。 例如:SELECT COUNT(*)FROM aggregate_2WHERE 1 = 1单击 |
| Parameters | 若要引用视觉数据准备参数,请使用命名参数标记语法,例如 :environment。 设计器显示打开运算符进行编辑时编辑器上方的示例。 请参见 在 Lakeflow Designer 中使用参数。 |
Select
从输入数据中选择、重命名和重新排序列。
| 字段 | DESCRIPTION |
|---|---|
| 包括或排除列 | 选择 “以所有列开头 ”或 “以无列开头”,然后使用复选框包括或排除单个列。 拖动列以对列重新排序。 |
| 重命名列 | 在任何列旁边的 “重命名 ”字段中键入新名称。 |
| 动态选择列 | 不要单独选择列,而是通过规则选择列,使输出随着输入模式的变化而调整。 选择是 保持匹配列 还是 移除匹配列,然后通过以下方式匹配列:
|
准备
通过对输入数据链接一个或多个操作来清理和派生列。 单击“ + 添加操作 ”并选择一个操作。 根据需要添加任意数量的操作。 它们按顺序应用。
| 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。 参见 “构建共享操作员”。