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