UiPath Documentation
process-mining
2024.10
false

Process Mining 用户指南

上次更新日期 2026年5月5日

Snowflake 和 SQL Server 之间的 SQL 差异

SQL Server 对比Snowflake

在本地开发环境中,转换在 SQL Server 上运行,而在 Process Mining Automation Suite 中使用 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 论坛

保持更新