事件处理编辑器是一种无代码体验,你可以在其中拖动项来设计事件数据的处理逻辑。 本文介绍如何使用编辑器来设计你的处理逻辑。
注意
创建事件流时,默认情况下会启用增强功能。 如果你有通过标准功能创建的事件流,这些事件流将继续工作。 你仍然可以像往常一样编辑和使用它们。 建议创建新的事件流来替换标准事件流,以便可以利用增强型事件流的其他功能和优势。
先决条件
- 在 Microsoft Fabric 容量许可证模式或具有参与者或更高权限的试用许可证模式中访问工作区。
使用编辑器设计事件处理
若要使用无代码编辑器对数据流执行处理作,请执行以下步骤:
如果尚未处于 “编辑 ”模式,请选择功能区上的 “编辑 ”。 确保连接的作的上游节点具有架构。
若要在流节点和目标之间插入事件处理运算符,可以在 编辑 模式下使用以下两种方法之一:
选择“管理字段”运算符节点。 在“ 管理字段 配置”窗格中,选择要用于输出的字段。 如果要添加所有字段,请选择“添加所有字段”。
还可以使用内置函数来聚合上游数据,从而添加新字段。 目前,支持的内置函数是字符串函数、日期和时间函数和数学函数。 若要查找它们,请搜索 内置。
配置 “管理字段 ”运算符后,选择“ 刷新 ”以验证此运算符生成的测试结果。
如果有任何配置错误,它们将显示在下窗格的“ 创作错误 ”选项卡上。
如果测试结果正确,请选择 “发布 ”以保存事件处理逻辑并返回到 实时 视图。
完成上述步骤后,可以直观显示事件流如何在 实时 视图中开始流式处理和处理数据。
使用编辑器转换数据
可以使用事件处理编辑器( 编辑 模式下的画布)将数据转换为各种目标。 输入 “编辑 ”模式,为数据流设计流处理作。
编辑 模式包括画布和下窗格,可在其中:
- 通过拖动为事件数据生成转换逻辑。
- 从头到尾预览每个处理节点的测试结果。
- 发现处理节点中存在的任何创作错误。
编辑器布局
事件处理编辑器由下图中编号的三个部分组成。
在包含功能区菜单和画布的窗格中,通过选择运算符(从 转换事件 菜单)以及通过新创建的操作员节点连接流和目标节点来设计数据转换逻辑。 可以拖动连接线或选择和删除连接。
在右侧编辑窗格中,配置所选节点或查看流名称。
在下窗格中,使用“测试结果”选项卡在所选节点中预览 测试结果 。“ 创作错误 ”选项卡列出了作节点中任何不完整或不正确的配置。
支持的节点类型和示例
下面是支持在引入之前添加运算符的目标类型:
- Lakehouse
- Eventhouse (引入前的事件处理)
- 派生流
- 激活器
注意
对于不支持添加预引入运算符的目标,可以首先添加派生流作为运算符的输出。 然后,将预期的目的地追加到此派生流。
Lakehouse 和 KQL 数据库中的事件处理器允许在将数据引入目标之前对其进行处理。
先决条件
- 在 Microsoft Fabric 容量许可证模式或具有参与者或更高权限的试用许可证模式中访问工作区。
- 访问具有 Lakehouse 或 KQL 数据库所在位置的参与者或更高权限的工作区。
使用编辑器设计事件处理
在右窗格中,添加 Lakehouse 目标并输入必要的参数。 有关详细说明,请参阅 在事件流中添加和管理目标。
选择“打开事件处理程序”。
在事件处理编辑器的画布上,选择事件流节点。 可以预览数据架构或更改 事件流 窗格中的数据类型。
若要在此事件流和事件处理编辑器中的目标之间插入事件处理运算符,可以使用以下两种方法之一:
选择“管理字段”运算符节点。 在“ 管理字段 配置”窗格中,选择要用于输出的字段。 如果要添加所有字段,请选择“添加所有字段”。
还可以使用内置函数来聚合上游数据,从而添加新字段。 目前,支持的内置函数是字符串函数、日期和时间函数和数学函数。 若要查找它们,请搜索 内置。
配置 “管理字段 ”运算符后,选择“ 刷新静态预览 ”以预览此运算符生成的数据。
如果有任何配置错误,它们将显示在下窗格的“ 创作错误 ”选项卡上。
如果预览的数据看起来正确,请选择 “完成 ”以保存事件处理逻辑,并返回到 Lakehouse 目标的配置详细信息。
选择“添加”,完成湖屋目标的配置。
使用编辑器转换数据
可以使用事件处理编辑器将引入湖屋目标的数据转换为。 配置 Lakehouse 目标时,可在窗格中找到用于配置 Lakehouse 目标的“打开事件处理器”按钮。
选择 “打开”事件处理程序 将打开事件处理编辑器。 编辑器包括一个画布和下窗格,你可以在其中:
- 通过拖动为事件数据生成转换逻辑。
- 从头到尾预览每个处理节点中的数据。
- 发现处理节点中存在的任何创作错误。
窗格的布局类似于主编辑器。 它由下图中编号的三个部分组成。
在包含具有关系图视图的画布的窗格中,可以通过从 “作 ”菜单中选择运算符来设计数据转换逻辑。 然后,通过新创建的操作员节点连接事件流和目标节点。 可以拖动连接线或选择和删除连接。
在右侧编辑窗格中,配置所选作节点或查看事件流和目标的架构。
在下窗格中,使用 “数据预览 ”选项卡预览所选节点中的数据。“ 创作错误 ”选项卡列出了作节点中任何不完整或不正确的配置。
创作错误
创作错误是由于作节点配置不完整或不正确而导致事件处理编辑器中发生的错误。 它们可帮助你找到并解决潜在问题。
每个创作错误都有四列:
- 节点 ID:指示发生创作错误的作节点的 ID。
- 节点类型:指示发生创作错误的作节点的类型。
- 级别:指示创作错误的严重性。 有两个级别: “致命 ”和 “信息”。 致命级别的创作错误意味着事件处理编辑器存在严重问题,无法保存或运行。 信息级创作错误意味着事件处理编辑器具有一些提示或建议,可帮助你优化或改进它。
- 错误:简要描述创作错误的原因和影响。 可以选择“显示详细信息”选项卡来查看详细信息。
由于事件流和 eventhouse 支持不同的数据类型,因此转换数据类型的过程可能会生成创作错误。
下表显示了从事件流到 eventhouse 的数据类型转换结果。 这些列表示事件流支持的数据类型。 行表示 eventhouse 支持的数据类型。 单元格指示转换结果,可以是以下三个符号之一:
✔️ 指示没有错误或警告的成功转换。
❌ 指示转换是不可能的,这会产生致命级别的创作错误。 错误消息类似于:“列”{0}的数据类型“{1}”与所选 KQL 表中的预期类型“{2}”不匹配,并且无法自动转换。
⚠️ 指示转换可能但不准确,这会产生信息级创作错误。 错误消息类似于:“列”{0}的数据类型“{1}”与所选 KQL 表中的预期类型“{2}”不完全匹配。 它自动转换到“{2}”。
| 字符串 | 布尔 | 日期/时间 | 动态 | GUID | 整数 (int) | 长整型 | 真正 | 时间跨度 | 十进制 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Int64 | ❌ | ❌ | ❌ | ✔️ | ❌ | ⚠️ | ✔️ | ⚠️ | ❌ | ✔️ |
| 双精度 | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ⚠️ |
| 字符串 | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 日期/时间 | ⚠️ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 记录 | ⚠️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 数组 | ⚠️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
如表中所示,某些数据类型转换成功,例如字符串到字符串。 这些转换不会生成任何创作错误,并且不会影响事件处理编辑器的作。
某些数据类型转换是不可能的,例如整数到字符串。 这些转换生成致命级别的创作错误,并导致事件处理编辑器无法保存过程。 若要避免这些错误,需要在事件流或 KQL 表中更改数据类型。
某些数据类型转换是可能的,但并非精确,例如整数到实际。 这些转换生成信息级创作错误,这些错误指示数据类型与自动转换结果不匹配。 这些转换可能会导致数据丢失精度或结构。 可以选择是忽略这些错误,还是修改数据类型(在事件流或 KQL 表中),以优化事件处理编辑器。
使用运算符转换事件数据
事件处理编辑器提供七个转换运算符,可用于根据业务需求转换事件数据。
聚合
使用“聚合”转换来计算一段时间内每次新事件发生时的聚合(总和、最小值、最大值或平均值)。 此操作还允许重命名这些计算列,并根据数据中的其他维度筛选或切分聚合。 在同一转换中可以有一个或多个聚合。
如果选择此运算符类型,请输入以下信息:
- 运算符名称:指定聚合运算的名称。
- 添加聚合函数:在聚合作中添加一个或多个聚合。
- 类型:选择聚合类型。 选项包括 Sum、 Minimum、 Maximum 和 Average。
- 字段:选择要处理的列。
- 名称:定义此聚合函数的名称。
- 分区依据:选择用于对聚合进行分组的列。
- 最后一个聚合值:指定聚合的时间范围。 默认值为 5 秒。
展开
使用 Expand 转换为数组中的每个值创建新行。 可以为 缺失/空数组选择“创建行 ”, 或者不要为缺失/空数组创建行。
筛选器
使用“筛选器”转换以基于输入中的字段值筛选事件。 根据数据类型(数值或文本),转换会保留与所选条件匹配的值,例如 is null 或 is not null。
分组依据
使用“分组依据”转换计算某个时间窗口内所有事件的聚合。 可以按一个或多个字段中的值进行分组。 就像 聚合 转换一样,它允许重命名列,但它为聚合提供了更多选项,并包括时间窗口更复杂的选项。 与“聚合”类似,你可以为每个转换添加多个聚合。
转换中可用的聚合如下:
- 平均值
- 计数
- 最大值
- 最小值
- 百分位(连续和离散)
- 标准偏差
- 总和
- 差异
在实时流方案中,对临时窗口中包含的数据执行操作是一种常见模式。 事件处理编辑器支持窗口化函数,这些函数与 Group by 运算符集成。 可以在此运算符的设置中定义它们。
管理字段
使用 “管理字段 ”转换添加、删除、更改来自输入或其他转换的字段的数据类型或重命名字段。 此转换设置的窗格提供添加新字段(通过选择 “添加”字段)、添加多个字段或同时添加所有字段的选项。
还可以使用内置函数来聚合上游数据,从而添加新字段。 目前,支持的内置函数是字符串函数、日期和时间函数和数学函数。 若要查找它们,请搜索 内置。
下表显示了使用 “管理”字段更改数据类型的结果。 列表示原始数据类型,行表示目标数据类型。 在表中:
- ✔️ 表示可以直接转换数据类型。 目标数据类型的选项显示在下拉列表中。
- ❌ 表示无法转换数据类型。 目标数据类型的选项不会显示在下拉列表中。
-
⚠️ 表示可以转换数据类型,但需要满足某些条件。 一个条件可能是字符串格式必须符合目标数据类型的要求。 例如,从字符串转换为整数时,字符串必须是有效的整数形式,例如
123(而不是abc)。
| Int64 | 双精度 | 字符串 | 日期/时间 | 记录 | 数组 | |
|---|---|---|---|---|---|---|
| Int64 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
| 双精度 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
| 字符串 | ⚠️ | ⚠️ | ✔️ | ⚠️ | ❌ | ❌ |
| 日期/时间 | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
| 记录 | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ |
| 数组 | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ |
联盟
使用 Union 转换连接两个或多个节点,并将共享字段(具有相同名称和数据类型)的事件添加到一个表中。 不匹配的字段将被删除,不包含在输出中。
联接
可以使用“联接”转换根据所选的字段对合并两个输入中的事件。 如果不选择字段对,默认情况下连接是基于时间。 默认设置使此转换不同于批处理转换。
与常规联接一样,对于联接逻辑,还可以使用选项:
- 内部联接:只包括两个表(其中字段对匹配)中的记录。
- 左外部联接:包括第一个表(左)表中的所有记录,以及仅包含与字段对匹配的第二个表中的记录。 如果没有匹配项,则第二个输入中的字段为空。