使用事件处理程序编辑器处理事件数据

事件处理程序编辑器采用无代码体验,只需拖放即可设计出活动数据处理逻辑。 本文介绍如何使用编辑器来设计你的处理逻辑。

注意

如果要使用预览版中的增强功能,请选择顶部的“增强功能”。 否则,请选择“标准功能”。 有关预览版中增强功能的信息,请参阅 Fabric 事件流简介

先决条件

开始之前,你必须满足以下先决条件:

  • 获取访问具有参与者或更高级别权限的高级工作区的权限,你的事件流放置在此工作区中。

重要

Fabric 事件流的增强功能目前以预览版方式提供。

使用编辑器设计事件处理

要使用无代码编辑器对数据流执行流处理操作,请遵照以下步骤执行:

  1. 如果尚未处于编辑模式,请选择功能区上的“编辑”。 请确保连接的操作的上游节点具有架构。

    屏幕截图显示了编辑模式下的事件处理器编辑器。

  2. 要在编辑模式下在流节点与目的地之间插入事件处理运算符,你可以使用以下两种方法之一:

    • 直接从连接线插入运算符。 将鼠标悬停在连接线上,然后选择 + 按钮。 连接线上会显示一个下拉菜单,你可以从此菜单中选择运算符。

      屏幕截图显示了选择连接线上的 + 按钮。

    • 从功能区菜单或画布插入运算符。

      1. 你可以从功能区中的“转换事件”菜单中选择运算符。

        屏幕截图显示了功能区上的“管理”字段选择。

        另外,如果已删除连接线,则可以将鼠标悬停在其中一个节点上,然后选择 + 按钮。 该节点旁边会显示一个下拉菜单,你可以从此菜单中选择运算符。

        屏幕截图显示了选择连接线上的加号链接。

      2. 插入运算符后,需要重新连接这些节点。 将鼠标悬停在流节点的左边缘上,然后选择并拖动绿色圆圈,将其连接到“管理字段”运算符节点。 按照相同的过程将“管理字段”运算符节点连接到目的地。

        屏幕截图显示了如何连接“管理字段”磁贴。

  3. 选择“管理字段”运算符节点。 在“管理字段”配置面板中,选择要输出的字段。 如果要添加所有字段,请选择“添加所有字段”。 还可以使用内置函数添加新字段以聚合来自上游的数据。 (目前支持的内置函数是“字符串函数”、“日期和时间函数”、“数学函数”中的某些函数。若要找到这些函数,请在 built-in 上进行搜索。)

    屏幕截图显示了如何管理“管理字段”磁贴。

  4. 配置“管理字段”运算符后,选择“刷新”以验证此运算符生成的测试结果。

    屏幕截图显示了已刷新的页面。

  5. 如果有任何配置错误,它们将显示在底部窗格的“创作错误”选项卡中。

    屏幕截图显示了“创作错误”选项卡。

  6. 如果测试结果正确,请选择“发布”以保存事件处理逻辑并返回到实时视图。

    屏幕截图显示了功能区上已选定的“发布”按钮。

  7. 完成这些步骤后,可以直观显示事件流如何在“实时视图”中开始流式传输和处理数据。

    屏幕截图显示实时视图。

事件处理编辑器

事件处理器编辑器(编辑模式下的画布)允许你将数据转换到各种目的地。 进入“编辑”模式,为数据流设计流处理操作。

屏幕截图显示了具有增强功能的事件流的事件处理编辑器。

编辑模式包括画布和下部窗格,可在其中:

  • 通过拖放操作建立事件数据转换逻辑。
  • 从头到尾预览每个处理节点中的测试结果。
  • 发现处理节点中存在的任何创作错误。

编辑器布局

屏幕截图显示了具有增强功能的事件流的事件处理编辑器布局。

  • 功能区菜单和画布(在图像中编号为 1):在此窗格中,可以通过(从“转换事件”菜单中)选择运算符并通过新创建的运算符节点连接流和目的地节点来设计数据转换逻辑。 可以拖放连接线,也可以选择和删除连接。
  • 右编辑窗格(在图像中编号为 2):此窗格允许你配置所选节点或查看流名称。
  • 包含数据预览和创作错误选项卡的底部窗格(在图像中编号为 3):在此窗格中,使用“测试结果”选项卡预览所选节点中的测试结果。“创作错误”选项卡列出了操作节点中任何不完整或不正确的配置。

支持的节点类型和示例

下面是支持在引入之前添加运算符的目的地类型:

  • Lakehouse
  • KQL 数据库(引入前的事件处理)
  • 派生流

注意

对于不支持预引入运算符添加的目的地,可以首先添加派生流作为运算符的输出。 然后,将预期的目的地追加到此派生流。

屏幕截图显示了筛选器输出到不受支持的目的地的事件处理编辑器布局。

Lakehouse 和 KQL 数据库中的事件处理器(引入前的事件处理)允许在将数据引入目的地之前处理该数据。

先决条件

开始之前,你必须满足以下先决条件:

  • 获取访问具有参与者或更高级别权限的高级工作区的权限,你的事件流放置在此工作区中。
  • 获取对具有参与者或更高权限的高级工作区的访问权限,Lakehouse 或 KQL 数据库位于该工作区。

使用编辑器设计事件处理

若要使用事件处理程序编辑器设计事件处理,请执行以下操作:

  1. 添加一个湖屋目标并在右侧窗格中输入必要参数。 (有关详细说明,请参阅 在事件流中添加和管理目标。)

  2. 选择“打开事件处理程序”。 会出现“事件处理编辑器”屏幕。

    显示在 Lakehouse 目标配置屏幕中选择“打开事件处理器”位置的屏幕截图。

  3. 在“事件处理编辑器”画布中,选择事件流节点。 在右侧的“Eventstream”窗格中,你可以预览数据架构或更改数据类型。

    显示事件处理编辑器屏幕右窗格中数据模式的屏幕截图。

  4. 若要在事件处理器编辑器中在此事件流与目标之间插入事件处理运算符,可以使用以下两种方法之一:

    1. 直接从连接线插入运算符。 将鼠标悬停在连接线上,然后选择“+”按钮。 连接线上会显示一个下拉菜单,你可以从此菜单中选择运算符。

      显示将鼠标悬停在连接线上的何处以插入节点的屏幕截图。

    2. 从功能区菜单或画布插入运算符。

      1. 你可以从功能区中的“操作”菜单中选择运算符。 另外,如果删除了连接线,则可以将鼠标悬停在其中一个节点上,然后选择“+”按钮。 该节点旁边会显示一个下拉菜单,你可以从此菜单中选择运算符。

        显示从操作菜单中选择操作员的位置的屏幕截图。

        显示将鼠标悬停在节点上的何处以插入节点的屏幕截图。

      2. 最后,你需要重新连接这些节点。 将鼠标悬停在事件流节点的左边缘上,然后选择并拖动绿色圆圈,将其连接到“管理字段”运算符节点。 按照相同的过程将“管理字段”运算符节点连接到湖屋节点。

        显示节点连接位置的屏幕截图。

  5. 选择“管理字段”运算符节点。 在“管理字段”配置面板中,选择要输出的字段。 如果要添加所有字段,请选择“添加所有字段”。 还可以使用内置函数添加新字段以聚合来自上游的数据。 (目前支持的内置函数是“字符串函数”、“日期和时间函数”、“数学函数”中的某些函数。若要找到这些函数,请在“内置”上进行搜索。)

    显示如何配置运算符的屏幕截图。

  6. 配置“管理字段”运算符后,选择“刷新静态预览”来预览此运算符生成的数据。

    显示如何在事件处理器编辑器中预览数据的屏幕截图。

  7. 如果有任何配置错误,它们将显示在底部窗格的“创作错误”选项卡中。

    显示事件处理程序编辑器中的“创作错误”选项卡的屏幕截图。

  8. 如果预览数据看起来正确无误,请选择“完成”来保存事件处理逻辑,并返回到湖屋目标配置屏幕。

  9. 选择“添加”,完成湖屋目标的配置。

事件处理程序编辑器

使用事件处理程序可将要引入到湖屋目标的数据进行转换。 配置湖屋目标时,可以在 Lakehouse 目标配置屏幕中间找到“打开事件处理器”选项。

显示事件处理器编辑器所在位置的屏幕截图。

选择“打开事件处理程序”将启动“事件处理编辑器”屏幕,可在其中定义数据转换逻辑。

事件处理程序编辑器包括画布和下部窗格,可在其中:

  • 通过拖放操作建立事件数据转换逻辑。
  • 从头到尾预览每个处理节点中的数据。
  • 发现处理节点中存在的任何创作错误。

屏幕布局类似于主编辑器。 它由三个部分组成,如下图所示:

事件处理编辑器屏幕截图,显示三个主要部分。

  1. 带关系图视图的画布:在此窗格中,可以通过(从“操作”菜单中)选择运算符来设计数据转换逻辑,并通过新创建的运算符节点连接事件流和目标节点。 可以拖放连接线,也可以选择和删除连接。

  2. 右侧编辑窗格:在此窗格处可以配置所选的运算节点,或查看时间流和目标的架构。

  3. 包含数据预览和创作错误选项卡的底部窗格:在此窗格中,使用“数据预览”选项卡预览所选节点中的数据。“创作错误”选项卡列出了操作节点中任何不完整或不正确的配置。

创作错误

“创作错误”是指由于操作节点配置不完整或不正确而导致的“事件处理程序编辑器”中发生的错误,有助于发现并解决事件处理程序中的潜在问题。

可以在事件处理程序编辑器的底部面板中查看“创作错误”。 底部面板列出了所有创作错误,每个创作错误有四列:

  • 节点 ID:指示发生创作错误的操作节点 ID。
  • 节点类型:指示发生创作错误的操作节点类型。
  • 级别:指示创作错误的严重性,分为“严重”和“信息”两个级别。 严重级别创作错误意味着事件处理程序出现严重问题,无法保存或运行。 信息级别创作错误意味着事件处理程序有一些提示或建议,可以帮助你优化或改进事件处理程序。
  • 错误:指示创作错误的特定信息,简要描述创作错误的原因和影响。 可以选择“显示详细信息”选项卡来查看详细信息。

由于 Eventstream 和 KQL 数据库支持不同数据类型,数据类型转换过程可能会生成创作错误。

下表显示了从 Eventstream 到 KQL 数据库的数据类型转换结果。 列表示 Eventstream 支持的数据类型,行表示 KQL 数据库支持的数据类型。 这些单元格指示转换结果,可能是以下三个结果之一:

✔️ 表示成功转换,未生成错误或警告。

❌ 表示无法转换,生成严重创作错误。 错误消息类似于:列“{0}”的数据类型“{1}”与所选 KQL 表中的预期类型“{2}”不匹配,不能自动转换。

⚠️ 表示可能但不准确的转换,生成信息创作错误。 错误消息类似于:列“{0}”的数据类型“{1}”与所选 KQL 表中的预期类型“{2}”不完全匹配。 它会自动转换为“{2}”。

string 布尔 datetime 动态 guid int long real timespan 十进制
Int64 ⚠️ ⚠️
双精度 ⚠️ ⚠️
字符串
日期/时间 ⚠️
记录 ⚠️
数组 ⚠️

如表中所示,某些数据类型转换成功,例如字符串到字符串。 这些转换不会生成任何创作错误,并且不会影响事件处理器的运行。

某些数据类型转换无法成功,例如 int 到字符串。 这些转换会生成严重级别的创作错误,导致事件处理程序无法保存。 需要在 Eventstream 或 KQL 表中更改数据类型,以避免这些错误。

某些数据类型转换可能成功,但并不准确,例如 int 到 real。 这些转换会生成信息级别创作错误,指示数据类型不匹配以及自动转换结果。 这些转换可能会导致数据丢失精度或结构。 可以选择忽略这些错误,或者修改 Eventstream 或 KQL 表中的数据类型,以优化事件处理程序。

转换运算符

事件处理程序提供 6 种运算符,可根据业务需求使用这 6 种运算符转换事件数据。

显示可在“操作”菜单中使用的运算符的屏幕截图。

聚合

使用“聚合”转换来计算一段时间内每次新事件发生时的聚合(总和最小值最大值平均值)。 此操作还允许重命名这些计算列,并根据数据中的其他维度筛选或切片聚合。 在同一转换中可以有一个或多个聚合。

展开

使用“扩展”数组转换可为数组中的每个值创建一个新行。

筛选器

使用“筛选器”转换以基于输入中的字段值筛选事件。 根据数据类型(数值或文本),转换会保留与所选条件匹配的值,例如 is nullis not null

Group by

使用“分组依据”转换计算某个时间窗口内所有事件的聚合。 可以按一个或多个字段中的值进行分组。 就像聚合转换允许重命名列一样,但提供了更多聚合选项,并包含更复杂的时间窗口选项。 与“聚合”类似,你可以为每个转换添加多个聚合。

转换中可用的聚合如下:

  • 平均值
  • 计数
  • 最大值
  • 最小值
  • 百分位(连续和离散)
  • 标准偏差
  • Sum
  • Variance

在实时流方案中,对临时窗口中包含的数据执行操作是一种常见模式。 事件处理程序支持与 Group by 运算符集成的开窗函数。 可以在此运算符的设置中定义它。

显示在事件处理器编辑器中可用的“Group by”运算符的屏幕截图。

管理字段

可以通过“管理字段”转换来添加、删除、更改数据类型或重命名从输入或其他转换中传入的字段。 通过侧窗格上的设置,可通过选择“添加字段”添加一个新字段、添加多个字段或一次添加所有字段。

显示事件处理器编辑器中可用的管理字段运算符的屏幕截图。

此外,还可以使用内置函数添加新字段,以聚合来自上游的数据。 (目前支持的内置函数是“字符串函数”、“日期和时间函数”和“数学函数”中的某些函数。若要找到这些函数,请在“内置”上进行搜索。)

屏幕截图显示了管理字段内置函数。

下表显示了使用管理字段更改数据类型的结果。 这些列表示原始数据类型,行表示目标数据类型。

  • 如果单元格中出现 ✔️,则表示可以直接转换,并且目标数据类型选项显示在下拉列表中。
  • 如果单元格中出现 ❌,则表示不能转换,并且目标数据类型选项未显示在下拉列表中。
  • 如果单元格中出现 ⚠,则表示可以转换,但需要满足某些条件,如字符串格式必须符合目标数据类型的要求。 例如,从字符串转换为 int 时,字符串必须是有效的整数形式,例如 123,而不是 abc
Int64 双精度 字符串 日期/时间 Record 数组
Int64
双精度
字符串 ⚠️ ⚠️ ⚠️
日期/时间
记录
数组

Union

使用“联合”转换可以连接两个或多个节点,并将具有共享字段(具有相同名称和数据类型)的事件添加到一个表中。 不匹配的字段将被删除,不包含在输出中。

Join

可以使用“联接”转换根据所选的字段对合并两个输入中的事件。 如果不选择字段对,默认情况下连接是基于时间。 默认设置使此转换不同于批处理转换。

与常规联接一样,对于联接逻辑,还可以使用选项:

  • 内部联接:只包括两个表(其中字段对匹配)中的记录。
  • 左外部联接:包含左侧(第一个)表中的所有记录,并且仅包含第二个表中与字段对匹配的记录。 如果没有匹配项,则第二个输入中的字段为空。