UiPath Documentation
process-mining
latest
false
Process Mining 用户指南
重要 :
请注意,此内容已使用机器翻译进行了部分本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。

Snowflake 和 SQL Server 之间的 SQL 差异

Snowflake(在 Automation Cloud 中使用)和 SQL Server(在本地开发中使用)之间的 SQL 语法差异可能会影响 Process Mining 中的转换结果。

SQL Server 对比Snowflake

在本地开发环境中,转换在 SQL Server 上运行,而在 Process Mining Automation Cloud 中使用 Snowflake。尽管大多数 SQL 语句可同时在 SQL Server 和 Snowflake 上运行,但语法上可能略有不同,这可能会导致返回结果不同。

要编写可在两个数据库系统上运行的 SQL 语句,请执行以下操作:

  • 用双引号将字段名称写入,例如 Table."Field"
  • 防止使用 Snowflake 和 SQL Server 中不同的 SQL 函数,例如 string_agg()listagg()

pm_utils包附带一组适用于这两种数据库类型的函数,请参阅“多个数据库” 。例如,如果不使用string_agg()listagg() ,则使用pm_utils.string_agg()将为两个数据库带来相同的行为。如果pm_utils不包含所需的函数,则应创建 Jinja 语句,以确保在每个数据库上调用正确的函数。

字符串连接

要合并为字符串,请使用pm_utils.concat()函数。 这将为 SQL Server 和 Snowflake 生成相同的结果。

示例: pm_utils.concat("This is a nice string", null) = "This is a nice string"不应使用+||等运算符连接字符串,因为这两个数据库的运算符不同(Snowflake 使用|| ,SQL Server 使用+ )。 此外,标准concat()函数在两个系统上的行为也不同:

SQL 服务器Snowflake
null 值将被忽略并被视为空字符串。null 值将导致整个结果为null

排序

在 Snowflake 和 SQL Server 中,排序的处理方式有所不同。

示例:... order by "Attribute_1" desc, "Attribute_2" ...

Null 值

SQL 服务器Snowflake
null 将默认排在前面 (升序)null 默认情况下排在最后 (升序)

处理大写字母

SQL 服务器Snowflake
大写字母按预期排序 (AaBbCc)首先按大写字母排序,然后按非大写字母排序 (ABCabc)

虚线

示例:-Accountant-

SQL 服务器Snowflake
排序时将忽略短划线(因此“-Accountant-”与“Accountant”相同)短划线将在顶部排序

空格处理

当您按值“A”和“A”进行分组时,这在 SQL Server 中被视为一个值,但在 Snowflake 中被视为两个不同的值。 因此,如果您的数据可能会导致此问题,则建议进行修剪。

区分大小写

默认情况下,SQL Server 不区分大小写,而 Snowflake 区分大小写。 这意味着Table."Field" = "Some_value"Table."Field" = "SOME_VALUE"将在 SQL Server 中返回相同的结果集,但在 Snowflake 中可能会返回两个不同的结果集。

建议您更改本地 SQL Server 数据库的行为以匹配雪花行为,以防止出现任何问题。 这可以通过将数据库排序规则设置为区分大小写的值来实现。

  • SQL Server 对比Snowflake
  • 字符串连接
  • 排序
  • Null 值
  • 处理大写字母
  • 虚线
  • 空格处理
  • 区分大小写

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新