process-mining
2024.10
true
UiPath logo, featuring letters U and I in white
Process Mining
Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Last updated 11 de nov. de 2024

SQL differences between Snowflake and SQL Server

SQL Server vs. Snowflake

En un entorno de desarrollo local, las transformaciones se ejecutan en SQL Server, mientras que Snowflake se utiliza en Process Mining Automation Suite. Aunque la mayoría de las sentencias SQL funcionarán tanto en SQL Server como en Snowflake, puede haber ligeras diferencias en la sintaxis, lo que puede dar lugar a resultados de retorno diferentes.

Para escribir instrucciones SQL que funcionen en ambos sistemas de bases de datos:

  • Escriba los nombres de los campos entre comillas dobles, por ejemplo Table."Field".
  • Evite el uso de funciones SQL que son diferentes en Snowflake y SQL Server, por ejemplo, string_agg() y listagg().
    El paquete pm_utils viene con un conjunto de funciones que funcionan en ambos tipos de bases de datos, consulta Varias bases de datos. Por ejemplo, en lugar de usar string_agg() o listagg(), el pm_utils.string_agg() dará como resultado el mismo comportamiento para ambas bases de datos. Si pm_utils no contiene la función deseada, entonces se debe crear una instrucción Jinja para asegurarse de que se llama a la función correcta en cada base de datos.

Concatenación de cadenas

Para combinar en cadenas, usa la función pm_utils.concat() . Esto producirá los mismos resultados tanto para SQL Server como para Snowflake.
Ejemplo: pm_utils.concat("This is a nice string", null) = "This is a nice string" La concatenación de cadenas no debe realizarse con operadores como + o ||, ya que son diferentes para ambas bases de datos (Snowflake usa || y SQL Server usa +). Además, la función concat() estándar tiene un comportamiento diferente en ambos sistemas:

Servidor SQL

Snowflake

Los valoresnull se ignorarán y se tratarán como una cadena vacía.
Los valoresnull harán que el resultado completo sea null.

Clasificación

La clasificación se gestiona de forma diferente en Snowflake y en el servidor SQL.

Ejemplo: ... order by "Attribute_1" desc, "Attribute_2" ...

Valores nulos

Servidor SQL

Snowflake

null se ordenará de forma predeterminada (ascendente)
null se ordenarán por defecto en último lugar (ascendente)

Handling capital letters

Servidor SQL

Snowflake

las mayúsculas se ordenan como se esperaba (AaBbCc)

primero ordena por mayúsculas, luego por no mayúsculas (ABCabc)

Barras

Ejemplo: -Accountant-

Servidor SQL

Snowflake

los guiones se ignoran al ordenar (por lo que '-Contador-' se trata igual que 'Contador')

los guiones se ordenarán en la parte superior

Manejo de espacios en blanco

Cuando se agrupan por valores "A" y "A", esto se ve como un valor en SQL Server, pero como dos valores diferentes en Snowflake. Por lo tanto, se recomienda recortar si sus datos pueden causar este problema.

Distinguir mayúsculas y minúsculas

De forma predeterminada, SQL Server no distingue entre mayúsculas y minúsculas, mientras que Snowflake distingue entre mayúsculas y minúsculas. Esto significa que Table."Field" = "Some_value" y Table."Field" = "SOME_VALUE" devolverán el mismo conjunto de resultados en SQL Server, pero potencialmente dos conjuntos de resultados diferentes en Snowflake.

Se le recomienda cambiar el comportamiento de su base de datos local de SQL Server para que coincida con el comportamiento de Snowflake, a fin de evitar cualquier problema. Esto se puede lograr estableciendo la colación de la base de datos en un valor que distinga entre mayúsculas y minúsculas.

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo White
Confianza y seguridad
© 2005-2024 UiPath. Todos los derechos reservados.