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. Nov. 2024

SQL differences between Snowflake and SQL Server

SQL Server vs. Snowflake

In einer lokalen Entwicklungsumgebung werden Transformationen auf SQL Server ausgeführt, während Snowflake in der Process Mining Automation Suite verwendet wird. Obwohl die meisten SQL-Anweisungen sowohl auf SQL Server als auch auf Snowflake funktionieren, kann es geringfügige Unterschiede in der Syntax geben, die zu unterschiedlichen Rückgabeergebnissen führen können.

So schreiben Sie SQL-Anweisungen, die auf beiden Datenbanksystemen funktionieren:

  • Schreiben Sie Feldnamen in doppelte Anführungszeichen, z. B. Table."Field" .
  • Verhindern der Verwendung von SQL-Funktionen, die sich in Snowflake und SQL Server unterscheiden, z. B. string_agg() und listagg() .
    Das Paket pm_utils enthält eine Reihe von Funktionen, die für beide Datenbanktypen funktionieren, siehe Mehrere Datenbanken. Anstatt beispielsweise string_agg() oder listagg() zu verwenden, führt pm_utils.string_agg() für beide Datenbanken zum gleichen Verhalten. Wenn pm_utils nicht die gewünschte Funktion enthält, sollte eine Jinja-Anweisung erstellt werden, um sicherzustellen, dass die richtige Funktion für jede Datenbank aufgerufen wird.

Zeichenfolgenverkettung

Um zu Strings zu kombinieren, verwenden Sie die Funktion pm_utils.concat() . Dies führt zu den gleichen Ergebnissen für SQL Server und Snowflake.
Beispiel: pm_utils.concat("This is a nice string", null) = "This is a nice string" Das Verketten von Zeichenfolgen sollte nicht mit Operatoren wie + oder || erfolgen, da sie sich für beide Datenbanken unterscheiden (Snowflake verwendet || und SQL Server verwendet + ). Auch die Standardfunktion concat() hat auf beiden Systemen ein unterschiedliches Verhalten:

SQL-Server

Snowflake

null -Werte werden ignoriert und als leerer String behandelt.
null -Werte bewirken, dass das gesamte Ergebnis null ist.

Sortierung

Die Sortierung wird in Snowflake und SQL Server unterschiedlich gehandhabt.

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

NULL-Werte

SQL-Server

Snowflake

null wird standardmäßig zuerst sortiert (aufsteigend).
null wird standardmäßig als letztes sortiert (aufsteigend)

Handling capital letters

SQL-Server

Snowflake

Großbuchstaben werden wie erwartet sortiert (AaBbCc)

Sortiert zuerst nach Großbuchstaben, dann nach Nicht-Großbuchstaben (ABCabc)

Bindestriche

Beispiel: -Accountant-.

SQL-Server

Snowflake

Bindestriche werden bei der Sortierung ignoriert (daher wird „-Accountant-“ genauso behandelt wie „Accountant“).

Bindestriche werden oben sortiert

Umgang mit Leerzeichen

Wenn Sie nach den Werten „A“ und „A“ gruppieren, wird dies in SQL Server als ein Wert angesehen, in Snowflake jedoch als zwei verschiedene Werte. Daher wird das Trimmen empfohlen, wenn Ihre Daten dieses Problem verursachen können.

Berücksichtigung von Groß- und Kleinschreibung

Standardmäßig unterscheidet SQL Server die Groß-/Kleinschreibung, während Snowflake die Groß-/Kleinschreibung berücksichtigt. Das bedeutet, dass Table."Field" = "Some_value" und Table."Field" = "SOME_VALUE" dasselbe Resultset in SQL Server zurückgeben, aber möglicherweise zwei verschiedene Resultsets in Snowflake.

Es wird empfohlen, das Verhalten Ihrer lokalen SQL Server-Datenbank so zu ändern, dass es dem Verhalten von Snowflakes entspricht, um Probleme zu vermeiden. Dies kann erreicht werden, indem die Datenbanksortierung auf einen Wert festgelegt wird, bei dem die Groß-/Kleinschreibung beachtet wird.

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
Uipath Logo White
Vertrauen und Sicherheit
© 2005–2024 UiPath. Alle Rechte vorbehalten