- 在开始之前
- 管理访问权限
- 入门指南
- 集成
- 使用流程应用程序
- 创建应用程序
- 正在加载数据
- Transforming data
- 自定义仪表板
- 发布流程应用程序
- 应用程序模板
- 通知
- 其他资源
- 开箱即用标签和截止日期
- 发现流程模型
- 自定义吞吐量时间指标
- Snowflake 和 SQL Server 之间的 SQL 差异
- 扩展 SAP Ariba 提取工具
- 性能特征
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 数据库的行为以匹配雪花行为,以防止出现任何问题。 这可以通过将数据库排序规则设置为区分大小写的值来实现。