SnowConvert AI – BigQuery – Datentypen¶
Snowflake bietet Unterstützung für die meisten grundlegenden SQL-Datentypen (mit spezifischen Einschränkungen) für verschiedene SQL-Konstrukte mit Spalten, lokalen Variablen, Ausdrücken und Parametern.
Boolescher Datentyp¶
BigQuery |
Snowflake |
Anmerkungen |
|---|---|---|
Bytes-Datentyp¶
Datetime-Datentypen¶
Geography-Datentyp¶
Interval-Datentyp¶
BigQuery |
Snowflake |
Anmerkungen |
|---|---|---|
Der INTERVAL-Datentyp wird in Snowflake nicht unterstützt. Stattdessen wird VARCHAR verwendet. Weitere Informationen dazu finden Sie in der Dokumentation zum INTERVAL-Datentyp. |
JSON-Datentyp¶
Numerische Datentypen¶
BigQuery |
Snowflake |
Anmerkungen |
|---|---|---|
INT ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
INT ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
SMALLINT ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
INTEGER ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
BIGINT ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
TINYINT ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
BYTEINT ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
NUMERIC ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
DECIMAL ist ein Alias für den NUMBER-Datentyp in Snowflake. Die maximale Genauigkeit und Skalierung ist NUMBER(38,37). |
||
Snowflake unterstützt den BIGNUMERIC-Datentyp nicht. Verwenden Sie stattdessen NUMERIC. Die Genauigkeit von 76,76 von BIGNUMERIC überschreitet die Beschränkung von Snowflake (38), was zu Abschneidungen oder Rundungen führt, was wiederum zu erheblichen Ungenauigkeiten führen kann. |
||
Snowflake unterstützt den BIGDECIMAL-Datentyp nicht. Verwenden Sie stattdessen NUMERIC. Die Genauigkeit von 76,76 von BIGDECIMAL überschreitet die Beschränkung von Snowflake (38), was zu Abschneidungen oder Rundungen führt, was wiederum zu erheblichen Ungenauigkeiten führen kann. |
||
String-Datentypen¶
ANY-TYPE¶
Übersetzungsspezifikation für den ANY TYPE-Datentyp von BigQuery.
Beschreibung¶
Im Folgenden finden Sie einen Auszug von Informationen zur Verwendung von ANY TYPE innerhalb von CREATE FUNCTION-Anweisungen.
Ein Parameter mit dem Typ, der gleich
ANY TYPEist, kann mit mehr als einem Argumenttyp übereinstimmen, wenn die Funktion aufgerufen wird.
Wenn mehr als ein Parameter den Typ
ANY TYPEaufweist, dann erzwingt BigQuery keine Typbeziehung zwischen diesen Argumenten.Der Rückgabetyp der Funktion darf nicht
ANY TYPEsein. Sie muss entweder weggelassen werden, was bedeutet, dass sie automatisch auf der Grundlage vonsql_expressionoder einem expliziten Typ bestimmt wird.Die Übergabe von Funktionsargumenten von Typen, die mit der Funktionsdefinition nicht kompatibel sind, führt zum Zeitpunkt des Aufrufs zu einem Fehler.
Beispielhafte Quellcode-Muster¶
Typdefinition für UDFs¶
ANY TYPE kann nur als Typ für den Parameter einer Funktion gefunden werden. SnowConvert AI übersetzt ANY TYPE automatisch in VARIANT.
BigQuery¶
Snowflake¶
ARRAY<T>¶
Übersetzungsspezifikation für den ARRAY
Beschreibung¶
In BigQuery ist ein Array eine geordnete Liste von null oder mehr Elementen, die keine Array-Werte sind. Elemente in einem Array müssen denselben Typ haben. (Array-Typ. BigQuery)
Beispielhafte Quellcode-Muster¶
BigQuery¶
Snowflake¶
ARRAY-Zugriff über Index¶
BigQuery¶
Snowflake¶
Sicherer ARRAY-Zugriff über Index¶
BigQuery¶
Snowflake¶
INSERT mit ARRAY in der VALUES-Klausel¶
BigQuery¶
Snowflake¶
MERGE-Anweisung¶
BigQuery¶
Snowflake¶
Einfügen/Aktualisieren des ARRAY DEFAULT-Spaltenwerts¶
BigQuery¶
Snowflake¶
INSERT/UPDATE mit NULL-Wert¶
BigQuery¶
Snowflake¶
ARRAY-Verkettung¶
BigQuery¶
Snowflake¶
ARRAY verwendet als Parameter/Rückgabetyp¶
BigQuery¶
Snowflake¶
Bekannte Probleme¶
1. Nicht sicherer ARRAY-Zugriff schlägt nicht fehl für positive Out-of-Bounds-Indizes
In BigQuery schlägt der Zugriff auf ein Array-Element über den Index für jeden Indexwert fehl, der zu niedrig (Unterlauf) oder zu hoch (Überlauf) ist, wenn SAFE_OFFSET oder SAFE_ORDINAL nicht verwendet wird. In Snowflake werden Fehler jedoch nur bei Unterlauffällen ausgelöst. Jeder Index, der einen Überlauffehler auslösen würde, generiert stattdessen einen NULL-Wert.
Wenn ein nicht sicherer Zugriff auf Elemente in einem Array erkannt wird, generiert SnowConvert AI SSC-FDM-BQ0001, um Benutzende darüber zu warnen.
BYTES¶
Bytes-Datentyp und Nutzung
Beschreibung¶
Sequenz von Bytes mit maximal L zulässigen Bytes in der binären Zeichenfolge. Die maximale Länge beträgt 8 MB (8.388.608 Bytes). Weitere Informationen dazu finden Sie unter BigQuery – BYTES-Datentyp.
Bemerkung
Der BYTES-Datentyp wird in Snowflake nicht unterstützt; derzeit wird der in BINARY transformiert.
Beispielhafte Quellcode-Muster¶
BYTES-Ausgabeformat¶
Das Standardausgabeformat für binäre Datentypen in BigQuery ist ‚BASE64‘ und in Snowflake ‚HEX‘. Aus diesem Grund wird bei Auswahl einer binären Spalte die BASE64_ENCODE-Funktion automatisch hinzugefügt. Um die Standardformatierung von BigQuery beizubehalten.
BigQuery¶
Snowflake:¶
Falls es nicht automatisch hinzugefügt wird und Sie die Daten im BASE64-Format sehen möchten, können Sie die BASE64_ENCODE-Funktion verwenden oder das Format BINARY_OUTPUT_FORMAT festlegen.
BYTES-Literal¶
Die folgenden Fälle stellen die Formen dar, die zur Formatierung von Byte-Literalen in BigQuery verwendet werden können.
Diese Literale werden in Snowflake nicht unterstützt, aber stattdessen kann die TRY_TO_BINARY-Funktion verwendet werden, um den Eingabeausdruck in einen Binärwert zu konvertieren. Diese Funktion ist eine spezielle Version von TO_BINARY, die die gleiche Operation ausführt, aber mit Unterstützung für die Fehlerbehandlung.
Es ist wichtig zu berücksichtigen, dass das Binärformat für die Konvertierung HEX, BASE64 oder UTF-8 sein kann. Der Standardwert ist der Wert des BINARY_INPUT_FORMAT-Sitzungsparameters. Wenn dieser Parameter nicht festgelegt ist, ist der Standardwert HEX.
Beobachtungen¶
Beachten Sie, dass das Standardausgabeformat für binäre Datentypen in BigQuery ‚BASE64‘ und in Snowflake ‚HEX‘ ist. Sie können die BASE64_ENCODE-Funktion verwenden oder das BINARY_OUTPUT_FORMAT-Format festlegen, wenn Sie die Daten im BASE64-Format anzeigen möchten.
Die einzigen von Snowflake unterstützten Formate sind: HEX, BASE64 oder UTF-8. Weitere Informationen dazu finden Sie unter Binäreingabe und -ausgabe in Snowflake.
Binäre Funktionen, die zum Einfügen von Daten in eine VALUES-Klausel verwendet werden, werden von Snowflake nicht unterstützt.
GEOGRAPHY¶
GEOGRAPHY-Datentyp und Nutzung
Beschreibung¶
Eine Sammlung von Punkten, Polygonzügen (LineStrings) und Polygonen, die als Punktmenge oder als Teilmenge der Erdoberfläche dargestellt wird. Weitere Informationen dazu finden Sie unter BigQuery – GEOGRAPHY-Datentyp.
Success
Unterstützter Datentyp in Snowflake.
Beispielhafte Quellcode-Muster¶
GEOGRAPHY-Ausgabeformat¶
Das Standardausgabeformat für geografische Datentypen in BigQuery ist WKT (Well-Known Text) und in Snowflake WKB (Well-Known Binary). Aus diesem Grund wird bei der Auswahl von Geography-Spalten die ST_ASWKT-Funktion automatisch hinzugefügt. Wenn alle Spalten einer Tabelle ausgewählt sind und sie eine Geography-Spalte enthält, wird GEOGRAPHY_OUTPUT_FORMAT auf WKT eingestellt. Dies dient dazu, das BigQuery-Standardformat beizubehalten.
BigQuery¶
Snowflake¶
Falls es nicht automatisch hinzugefügt wird und Sie die Daten im WKT-Format sehen möchten, können Sie die ST_ASWKT-Funktion verwenden oder das Format GEOGRAPHY_OUTPUT_FORMAT festlegen.
GEOGRAPHY-Daten einfügen¶
Um Daten in Spalten vom Typ Geography einzufügen, wird keine Funktion benötigt, da Snowflake automatisch erkennt, dass die Daten dem WGS 84-Standard entsprechen.
Beobachtungen¶
Beachten Sie, dass das Standardausgabeformat für geografische Datentypen WKT (Well-Known Text) und in Snowflake WKB (Well-Known Binary) ist. Sie können das ST_ASWKT-Funktion verwenden oder das GEOGRAPHY_OUTPUT_FORMAT-Format festlegen, wenn Sie die Daten im WKT-Format anzeigen möchten.
Geography-Funktionen, die zum Einfügen von Daten in eine VALUES-Klausel verwendet werden, werden in Snowflake nicht benötigt.
Zugehörige EWIs¶
SSC-FDM-BQ0010: Die Geography-Funktion ist in Snowflake nicht erforderlich.
INTERVAL¶
Interval-Datentyp und Nutzung
Beschreibung¶
Ein INTERVAL-Objekt steht für die Dauer oder den Zeitraum, ohne sich auf einen bestimmten Zeitpunkt zu beziehen. Es gibt kein Äquivalent in Snowflake, daher wird es in Varchar umgewandelt (BigQuery-Sprachreferenz – INTERVAL-Datentyp).
Syntax
Beispielhafte Quellcode-Muster¶
Intervall mit einem einzelnen DateTime-Teil¶
BigQuery¶
Ergebnis¶
Snowflake¶
Ergebnis¶
Snowflake unterstützt nicht das Szenario, bei dem der Interval-Datentyp direkt abgefragt wird. Wird er hingegen als Operator für ein bestimmtes Datum verwendet, erfolgt die Übersetzung mithilfe einer Intervallkonstante (falls möglich).
Intervall mit einem DateTime-Teilbereich¶
BigQuery¶
Ergebnis¶
Snowflake¶
Ergebnis¶
Der Intervallwert wird in ein unterstütztes Snowflake-Format umgewandelt und dann als Text in die Spalte eingefügt. Da Snowflake Interval als Datentyp nicht unterstützt, wird es nur in arithmetischen Operationen unterstützt. Um den Wert verwenden zu können, muss er extrahiert und als Intervallkonstante verwendet werden (wenn möglich).
Interval als Column-Datentyp¶
BigQuery¶
Ergebnis¶
ID |
interval_column |
|---|---|
1 |
2-11 28 0:0:0 |
2 |
2-11 28 16:15:14 |
3 |
0-11 28 16:15:14 |
4 |
0-0 0 0:15:14 |
Snowflake¶
Ergebnis¶
ID |
interval_column |
|---|---|
1 |
2y, 11mm, 28d |
2 |
2y, 11 mm, 28d, 16 h, 15 m, 14 s |
3 |
11 mm, 28 d, 16 h, 15 m, 14 s |
4 |
15 m, 14 s |
In BigQuery folgt datetime_part dem nächsten kanonischen Format:
Intervallvergleich¶
BigQuery¶
Snowflake¶
Bekanntlich unterstützt Snowflake bei arithmetischen Operationen nur „Interval“ als Datentyp. Deshalb wird jedem Operanden die CURRENT_TIMESTAMP-Funktion hinzugefügt, um den Vergleich korrekt zu ermöglichen.
Bekannte Probleme¶
1. Only arithmetic operations are supported¶
Snowflake-Intervalle unterliegen mehreren Einschränkungen. Nur arithmetische Operationen zwischen DATE oder TIMESTAMP und Intervallkonstanten werden unterstützt; alle anderen Szenarien werden nicht unterstützt.
2. Working with signs in the Interval data type¶
Wenn in BigQuery vor der Teilzeichenfolge, die dem Jahr und Monat entspricht, ein Zeichen (+ -) vorangestellt wird, wirkt sich dies sowohl auf das Jahr als auch auf den Monat aus. In ähnlicher Weise funktioniert dies für die Teilzeichenfolge, die der Zeit entspricht. In diesem Fall wirkt sich das Folgende auf Stunde, Minute und Sekunde aus. Ein Beispiel hierfür ist unten dargestellt.
BigQuery¶
Snowflake¶
Zugehörige EWIs¶
[SSC-EWI-0036](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0036): Datentyp in einen anderen Datentyp konvertiert.
[SSC-EWI-0107](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0107): Intervall-Literal wird im aktuellen Szenario nicht unterstützt.
JSON¶
JSON-Datentyp und Nutzung
Beschreibung¶
Repräsentiert JSON, ein einfaches Datenaustauschformat. Weitere Informationen dazu finden Sie unter BigQuery – JSON-Datentyp.
Gefahr
Der JSON-Datentyp wird in Snowflake nicht unterstützt; derzeit wird der in VARIANT transformiert.
JSON-Literale¶
Weitere Informationen dazu finden Sie unter JSON-Literale in BigQuery.
Diese Literale werden in Snowflake nicht unterstützt, aber stattdessen kann die PARSE_JSON-Funktion verwendet werden, um den Eingabeausdruck in einen JSON-Typ zu konvertieren. Der einzige Punkt, der berücksichtigt werden muss, ist, dass diese Funktion nicht in der VALUES-Klausel von Snowflake verwendet werden kann. Aus diesem Grund wird sie in eine Unterabfrage umgewandelt.
Beispielhafte Quellcode-Muster¶
BigQuery¶
Snowflake¶
STRUCT¶
Übersetzungsspezifikation für den STRUCT-Datentyp von BigQuery in Snowflake
Beschreibung¶
In BigQuery, ein Container von geordneten Feldern, jeweils mit einem Typ (erforderlich) und einem Feldnamen (optional). Siehe STRUCT-Typ.
In Snowflake kann OBJECT_CONSTRUCT verwendet werden, um das STRUCT-Verhalten zu emulieren und SnowConvert AI handhabt die meisten Implementierungsunterschiede.
Bemerkung
Argumente, die Schlüssel innerhalb von OBJECT_CONSTRUCT darstellen, müssen die ursprünglichen Namen des Ziel-STRUCT sein. Jeder Name, der in einem Textteil des STRUCT-Ausdrucks angegeben ist, wird durch den Namen ersetzt, der im Ziel-STRUCT gefunden wird. Die meisten der unten aufgeführten Beispiele für Datenmuster enthalten ein Beispiel für einen Namen, der durch den Zielnamen ersetzt wird.
Beispielhafte Quellcode-Muster¶
BigQuery¶
Snowflake¶
INT-Datentyp in STRUCT-Spalte einfügen¶
BigQuery¶
Snowflake¶
STRING-Datentyp in STRUCT-Spalte einfügen¶
BigQuery¶
Snowflake¶
STRUCT-Datentyp in STRUCT-Spalte einfügen¶
BigQuery¶
Snowflake¶
ARRAY-Datentyp in STRUCT-Spalte einfügen¶
BigQuery¶
Snowflake¶
In ausgewählte STRUCT-Spalten einfügen¶
BigQuery¶
Snowflake¶
In STRUCT-Spalten-Tupel-Syntax einfügen¶
Warnung
Die Übersetzung von Tupel-Syntax-Werten wird derzeit nicht unterstützt.
BigQuery¶
Snowflake¶
STRUCT-Spalte aktualisieren¶
BigQuery¶
Snowflake¶
STRUCT-Spaltenfeld aktualisieren¶
BigQuery¶
Snowflake¶
Aus STRUCT-Spalte auswählen¶
BigQuery¶
Snowflake¶
Aus STRUCT-Spalten-Tupel-Syntax auswählen¶
BigQuery¶
Snowflake¶
Ansicht mit einer anonymen STRUCT-Definition erstellen¶
BigQuery¶
Snowflake¶
Vergleichsausdrücke für STRUCT-Spalten¶
BigQuery-Vergleichsoperationen für Structs vergleichen Wert mit Wert und ignorieren den Schlüssel, falls er existiert, während Snowflake-Vergleichsoperationen für Objekte sowohl den Wert als auch den Schlüssel vergleichen. Dies kann dazu führen, dass einige Vergleiche ein anderes Ergebnis liefern.
BigQuery¶
Snowflake¶
Zugehörige EWIs¶
SSC-FDM-BQ0010: Struct, das in VARIANT konvertiert wurde. Einige der Verwendungen können funktionale Unterschiede aufweisen.
SSC-EWI-BQ0012: SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter. Missing symbol information.
SSC-FDM-BQ0008: Klausel verweist hierbei auf eine Spalte vom STRUCT-Typ.
TIMESTAMP¶
Timestamp-Datentyp und Nutzung
Beschreibung¶
Ein Zeitstempelwert stellt einen absoluten Zeitpunkt dar, unabhängig von Zeitzonen oder Konventionen wie der Sommerzeit (DST), mit Mikrosekundengenauigkeit. Weitere Informationen dazu finden Sie unter BigQuery – Timestamp-Datentyp.
Grammatikalische Syntax¶
| Name | Range |
|---|---|
| TIMESTAMP | 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999 UTC |
Success
TIMESTAMP-Datentyp, der derzeit in TIMESTAMP_TZ umgewandelt wird.
Es ist wichtig zu erwähnen, dass BigQuery TIMESTAMP-Daten in koordinierter Weltzeit (Coordinated Universal Time, UTC) speichert.
Beispielhafte Quellcode-Muster¶
TIMESTAMP ohne Uhrzeit¶
BigQuery¶
Ergebnis¶
Snowflake¶
Ergebnis¶
TIMESTAMP mit Zeitzone¶
Wenn die Zeitzone definiert ist, müssen Sie die CONVERT_TIMEZONE-Funktion zum Speichern der Daten in koordinierter Weltzeit (UTC) verwenden. Auch der Zeitzonenname im Zeitstempelliteral wird von Snowflake nicht unterstützt. In diesem Fall muss auch diese Funktion verwendet werden.