Skip to main content

Alteryx Engine 和 AMP:主要区别

Alteryx AMP Engine 这篇文章中,我们介绍了 Alteryx Engine 和新推出的 Alteryx 多线程处理 (AMP)。现在,让我们深入探讨 2 者之间的主要区别。

数据处理差异

原始引擎架构基本上使用单线程处理,系统按记录顺序逐条处理数据。而新的 AMP 概念允许大规模的多线程处理。记录以 4 MB 包并行处理,以获得更快的运行时间,但这可能会影响输出记录顺序。

With multiple cores, the AMP architecture allows for multi-threaded processing.
The original engine architecture allows for a single-threaded process, where your data is processed record-by-record.

输入差异

如果您不启用附加选项 仅限AMP引擎:带引号字段可包含换行符 ,则其中的字段含带引号的换行符的 CSV 文件将出问题。

记录限制

对于以下工具,在 AMP 上会启用工作流配置中运行时设置 所有输入的记录限制

  • 输入数据

  • 文本输入

  • 生成行

  • 宏输入

在 2021.1 补丁 2 和所有后续版本中,增加了对 动态输入 工具中工具级别记录限制的 AMP 支持。

输出差异

使用 AMP 引擎运行工作流时,多个工具的输出记录的顺序可能会与原始引擎试输出记录顺序不同。其中一些工具包括…

  • 交叉表

  • 数据清理(移除null行)

  • 连接

  • 多项连接

  • 多行公式

  • 多边形构建

  • 累计总计

  • 排序(当字典排序与特殊字符一起使用时)

  • 汇总(使用“分组依据”时)

  • 分块

  • 合并

  • 唯一值

如果您的工作流要求上述工具中的记录按特定顺序排序以用于下游操作,则可以使用 引擎兼容模式 保持与原始引擎相同的排序。这应该在仔细考虑了具体的工作流后使用,主要是在把用原始的引擎创建的工作流程迁移到AMP引擎上运行时。

尚未转换为 AMP 的特定功能或配置将还原为使用原始引擎工具才能运行。这样既包含 AMP 转换的工具又包含非转换的工具的工作流才能在 AMP 下无缝运行。

如果您对哪些工具已转换为 AMP 存在疑问,请前往 在 AMP 上使用工具

使用原始引擎时,工具与下游工具更有联系,一旦在下游没有发现任何内容,就会停止工作。在AMP并行运行的情况下,工具可能不会因下游为空而停止。此假设是指下游为空,而不考虑数据流。日志消息中的信息仅供参考。如果数据流中的记录数量对您很重要,您可以在上面放一个测试工具,如果没有得到正确的记录数,就让它给出一个错误信息。

读取性能

使用 AMP 引擎写入的 YXDB 文件读取速度比使用原始引擎写入的 YXDB 要快。

在启用 AMP 的情况下,使用原始引擎写入的 YXDB 文件的读取速度会变慢。但格式仍然相互兼容。

在 AMP 下使用 XLSX、CSV、YXDB 和 SQLite 文件格式 - 它们支持多线程读入数据。

在 Zip 文件中读取数据时,在原始引擎和 AMP 之间转换记录和打包时会产生性能费用。这可能会导致使用 AMP 读取更大的 Zip 文件时速度明显降低。

提示

使用 AMP 写入的 YXDB 文件在文本编辑器中打开时,文件内容的开头会注明“ Alteryx e2 数据库文件 ”。而使用原始引擎写入的文件在同一位置显示的是“ Alteryx 数据库文件 ”。

写入性能

为了提高原始引擎的性能(使 AMP 写入用原始引擎创建的 YXDB 文件),请进入 输出数据 - 配置 菜单,在那里你可以选择创建一个与Designer 18.1 及以前版本兼容的 YXDB 文件。

在原始引擎和 AMP 引擎下保存 CSV 文件时, “输出”工具 就包含 SpatialObj 数据 的记录有着不同的处理方式。在保存为 CSV 文件时,AMP Engine 会将 SpatialObj 数据写入文件,而原始引擎不会。这个差异会导致文件大小不同,而且可能会遇到性能下降的情况。

如果有需要,可以使用 选择工具 从记录中移除空间数据,之后两个引擎将以相似的时长完成。

性能分析

Designer 版本 2021.3 及更新版本提供了 AMP 下对每个工具进行性能分析的功能。

R 工具性能

AMP 以原始引擎格式与 R 交换数据。这种双重转换需要时间。在 AMP 上运行时,单个 R 工具的执行速度可能比使用原始引擎慢,但如果同时运行多个分支,则执行速度会更快。

文本输入工具和自动字段

AMP 解决了一个长期存在的问题,即字段大小不足而导致下游工具无法处理的问题。当生成的数据超过原始数据类型的长度时,无需添加“选择”工具来更改数据类型。AMP 创建最大尺寸的字符串和整数字段,以便后续操作能有足够空间容纳很大的下游值。

节流工具

尽管“节流”工具的 AMP 完全转换尚未完成 ,但您可以将其与“下载”工具一起使用(先使用 “节流”工具)。

模糊匹配

“模糊匹配”工具在原始引擎和 AMP 之间可能产生不同的结果。AMP 使用另一种方法匹配记录。匹配顺序可能不同,输出顺序也可能是相反的。“模糊匹配”存在一个已知的性能问题,其使用 AMP 时的性能低于使用原始引擎时的性能。

正则表达式工具

AMP 使用 Unicode 和 Perl 编码标准,其中字符 $ + < = > ^ | ~ 不能作为标点符号。当使用公式函数 REGEX_Replace RegEx 工具 通过 RegEx 集 [[:punct:]] 来筛选标点符号时,您需要使用 AMP 更改表达式。

示例

REGEX_REPLACE([_CurrentField_],'[[:punct:]]|[\$\+<=>\^`\|~]','')

分组工具和阻止工具

原始引擎的 连接 算法基于的是排序-合并连接方法,该方法下记录始终是以排序的顺序出现。新的 AMP 连接 算法使用的是哈希方法连接,因此记录顺序被打乱。例如:

The Join algorithm with AMP is based on hash join, so the record order is different.

左输入:

The Join algorithm - left input.

右输入:

The Join algorithm - right input.

在原始引擎下如果按 客户 ID 进行连接,则记录顺序将按 客户 ID 字段排序:

Join by CustomerID with the original Engine.

使用 AMP 时,输出的记录相同但顺序不同:

Join by CustomerID with AMP.

如果需要在连接输出中排序,请在 连接 工具后添加 排序 工具,或者在 工作流配置 - 运行时 - 使用AMP引擎 设置下启用 引擎兼容模式

Use AMP Engine checkbox

迭代宏

当宏内的工具报告错误时,原始引擎和 AMP 之间可能出现差异。使用单线程时,如果宏中发生错误,原始引擎将停止工作。而 AMP 将一直运行,直到迭代输出为空或达到迭代次数上限为止。您可能会因迭代次数增加遇到以下情况:

  • AMP 的错误数(如果有)可能会更多。

  • AMP 的记录数可能更高。

  • AMP 下的输出架构可能不同。

公式工具

公式 工具中的 ConvertFromCodePage ConvertToCodePage 函数接受字符串作为参数,并返回字符串作为结果,因此无法区分字符串是如何编码的。带有这些函数的 公式 工具的输出在原始引擎下和在 AMP 下存在差异。

输入数据的不同二进制表示形式是由 AMP 内部使用 UTF-8 编码字符串造成的。如果导入包含不同编码的数据,将无法恢复原始数据。原始引擎会将字符串存储为 Latin-1 或 UTF-16 编码的字符串,这些字符串作为缓冲,允许正确地将数据转换回来。

公式外接程序

AMP 尚不支持公式外接程序。如果需要运行包含公式外接程序功能的工作流,请使用原始引擎运行。

分析应用程序

如果应用程序使用 地图工具 从分析应用程序中的 空间参考 图层进行选择,则应继续使用原始引擎。

预期相等

使用原始引擎时,预期相等仍然是 CReW 宏。使用 AMP 时,它作为一个本机工具运行。

并行分支执行和工具运行顺序

某些工作流读取一个文件后写回该文件。这需要执行序列以确保读取在写入开始之前完成。同样,将多个工作表写入同一个 XLSX 文件的工作流需要一次只写入一个工作表。Alteryx Designer 提供的 阻止直到完成 工具,即帮助安排工作分阶段进行而不会相互干扰。

当您使用之前分支的输出文件作为附件时,同样的解决方法适用于“邮件”工具。您需要等到数据处理完成,然后将其作为附件添加到“邮件”工具。

当处理有多个分支的工作流(即从输入到输出基本上相互独立的多条流)时,将 阻止直到完成 工具放在输入工具 ID 编号最小的工作流分支中。这可确保每个后续分支等到上一个分支完成后才运行,让工具能如期工作。

可用功能

如需详情了解特定的工具功能,请前往 在 AMP 上使用工具