SnowConvert AI – Teradata – DML¶
In diesem Abschnitt finden Sie die Dokumentation für die Übersetzungsreferenz von Elementen der Datenmanipulationssprache.
DELETE-Anweisung¶
Siehe DELETE-Anweisung
Teradata unterstützt den Aufruf von mehr als einer Tabelle in der FROM-Klausel, Snowflake nicht. Daher ist es notwendig, die USING-Klausel zu verwenden, um auf die zusätzlichen Tabellen zu verweisen, die an der Bedingung beteiligt sind.
Teradata
Delete
Snowflake
Delete
Bekannte Probleme¶
1. DEL abbreviation unsupported¶
Die Abkürzung wird in Snowflake nicht unterstützt, aber sie wird korrekt übersetzt, wenn sie in DELETE geändert wird.
Mengenoperatoren¶
Die SQL-Mengenoperatoren bearbeiten die Resultsets mehrerer Abfragen und kombinieren die Ergebnisse jeder Abfrage zu einem einzigen Resultset.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Siehe Mengenoperatoren
Mengenoperatoren haben sowohl in Teradata als auch in Snowflake die gleiche Syntax und unterstützen die Szenarien EXCEPT, INTERSECT und UNION mit Ausnahme der Klausel ALL in INTERSECT ALL, die in Snowflake nicht unterstützt wird, was dazu führt, dass der Teil des ALL nach der Konvertierung als kommentierter Code erscheint.
Teradata
Intersect¶
Snowflake
Intersect¶
Bekannte Probleme¶
1. INTERSECT ALL unsupported¶
INTERSECT ALL wird in Snowflake nicht unterstützt und dann wird der Teil ALL kommentiert.
Zugehörige EWIs¶
SSC-EWI-0040: Anweisung nicht unterstützt.
UPDATE-Anweisung¶
Beschreibung¶
Ändert Spaltenwerte in vorhandenen Zeilen einer Tabelle. (Teradata SQL-Sprachreferenz – UPDATE)
Beispielhafte Quellcode-Muster¶
Grundlegender Fall¶
Teradata
Update
Snowflake
Update
UPDATE mit Vorwärtsalias¶
Teradata unterstützt den Verweis auf einen Alias, bevor dieser deklariert wird, Snowflake jedoch nicht. Die Transformation für dieses Szenario besteht darin, die referenzierte Tabelle zu nehmen und den Alias für den Tabellennamen zu ändern, auf den sie verweist.
Teradata
Update
Snowflake
Update
UPDATE with target table in the FROM clause¶
Teradata unterstützt die Definition der Zieltabelle in der FROM-Klausel. Dies wurde in Snowflake entfernt, um Fehler durch doppelte Aliase und mehrdeutige Spaltenreferenzen zu vermeiden.
Teradata
Update
Snowflake
Update
Zugehörige EWIs¶
Keine zugehörigen EWIs.
WITH-Modifikator¶
Wählen Sie eine Anweisung aus, die den WITH-Modifikator mit einer Liste von mehreren benannten Abfragen verwendet, die auch als allgemeine Tabellenausdrücke (CTEs) bekannt sind.
Siehe WITH-Modifikator
Snowflake unterstützt den WITH-Modifikator von Teradata für eine SELECT-Anweisung, die mehrere CTEs (Common Table Expressions) enthält. Teradata unterstützt jede beliebige Reihenfolge der Definition von CTE, unabhängig davon, ob es vor seiner Deklaration referenziert wird oder nicht. Snowflake verlangt jedoch, dass, wenn eine CTE eine andere CTE aufruft, es vor dessen Aufruf definiert werden muss. Dann wird die umgewandelte Sequenz von CTEs innerhalb der WITH in die nicht referenzierte CTEs umgewandelt, dann die CTE, die die nächste CTE aufruft, und so weiter.
Wenn in der WITH-Aufrufsequenz ein Zyklus erkannt wird, wird sie im ursprünglichen Zustand beibehalten, ohne dass Änderungen an der Sequenz vorgenommen werden, wie in einem Beispiel für den SSC-EWI-TD0077 gezeigt.
Im folgenden Beispiel gibt es zwei CTEs mit den Namen n1 und n2, wobei sich n1 auf n2 bezieht. n2 muss dann zuerst in Snowflake als der entsprechende konvertierte Code definiert werden.
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Teradata
WITH-Modifikator¶
Snowflake
WITH-Modifikator¶
Bekannte Probleme¶
1. Impossible to reorder when cycles were found¶
Wenn die CTEs-Referenzen analysiert werden und ein Zyklus zwischen den Aufrufen der CTEs liegt, werden die CTEs nicht geordnet.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
INSERT-Anweisung¶
SQL-Anweisung, die neue Zeilen zu einer Tabelle hinzufügt.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Siehe INSERT-Anweisung
In Teradata gibt es eine alternativeINSERT-Syntax, die den Wert für jede Tabellenspalte inline zuweist. Diese alternative Struktur erfordert eine spezielle Transformation, um in Snowflake unterstützt zu werden. Die Inline-Zuweisung der Werte wird getrennt und innerhalb des VALUES(...)-Teils der Snowflake INSERT INTO-Anweisung platziert.
Teradata
Insert¶
Snowflake
Insert¶
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
LOGGING ERRORS¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Bemerkung
Nicht relevante Anweisung.
Warnung
Beachten Sie, dass diese Anweisung aus der Migration entfernt wurde, da es sich um eine nicht relevante Syntax handelt. Das bedeutet, dass sie in Snowflake nicht erforderlich ist.**
Beschreibung¶
Anweisung zur Protokollierung von Fehlern bei der Verwendung von Anweisungen als INSERT...SELECT. Bitte lesen Sie die folgende Dokumentation.
Beispielhafte Quellcode-Muster¶
LOGGING ERRORS¶
Beachten Sie in diesem Beispiel, dass LOGGING ERRORS entfernt wurde, weil es keine relevante Syntax ist. Die Syntax ist in Snowflake nicht erforderlich.
Teradata¶
Snowflake¶
INSERT INTO MY_TABLE SELECT
*
FROM
MY_SAMPLE;
LOGGING ALL ERRORS¶
Beachten Sie in diesem Beispiel, dass LOGGING ALL ERRORS entfernt wurde, weil es keine relevante Syntax ist. Die Syntax ist in Snowflake nicht erforderlich.
Teradata¶
Snowflake¶
LOGGING ERRORS WITH NO LIMIT¶
Beachten Sie in diesem Beispiel, dass LOGGING ERRORS WITH NO LIMIT entfernt wurde, weil es keine relevante Syntax ist. Die Syntax ist in Snowflake nicht erforderlich.
Teradata¶
Snowflake¶
LOGGING ERRORS WITH LIMIT OF¶
Beachten Sie in diesem Beispiel, dass LOGGING ERRORS WITH LIMIT OF entfernt wurde, weil es keine relevante Syntax ist. Die Syntax ist in Snowflake nicht erforderlich.
Teradata¶
Snowflake¶
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
SELECT-Anweisung¶
Siehe SELECT-Anweisung
Snowflake unterstützt die SELECT-Syntax von Teradata mit ein paar Ausnahmen. Vor allem unterstützt es nicht die Abkürzung SEL.
Teradata
Sel
Snowflake
Select
Teradata unterstützt den Verweis auf einen Alias, bevor dieser deklariert wird, Snowflake jedoch nicht. Die Transformation für dieses Szenario besteht darin, die referenzierte Spalte zu nehmen und den Alias für den Spaltennamen zu ändern, auf den sie verweist.
Teradata
Alias
Snowflake
Alias
Entfernte Klausel-Optionen¶
Die folgenden Klausel-Optionen sind für Snowflake nicht relevant, daher werden sie bei der Migration entfernt.
Teradata |
Snowflake |
|---|---|
Expand on |
Nicht unterstützt |
NORMALIZE |
Nicht unterstützt |
Mit Prüfoption (Abfrage) |
Nicht unterstützt |
Bekannte Probleme¶
1. SEL abbreviation unsupported¶
Die Abkürzung wird in Snowflake nicht unterstützt, aber sie wird korrekt übersetzt, wenn sie in SELECT geändert wird.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
ANY-Prädikat¶
Warnung
Dies ist eine in Arbeit befindliche Version, Änderungen können in Zukunft vorgenommen werden.
Beschreibung¶
In Teradata ist die Quantifizierung in einer Vergleichsoperation oder einem IN/NOT IN Prädikat möglich. Der Vergleich von Ausdruck und mindestens einem Wert in der Menge der von der Unterabfrage zurückgegebenen Werte ist „true“. Bitte lesen Sie die folgende Teradata-Dokumentation für weitere Informationen.
Teradata-Syntax
Wo Quantifizierer:
Snowflake-Syntax
SuccessPlaceholder
In subquery form, IN is equivalent to = ANY and NOT IN is equivalent to <> ALL. Review the following Snowflake documentation for more information.
So vergleichen Sie einzelne Werte:
So vergleichen Sie_row constructors_ (eingeklammerte Listen von Werten):
So vergleichen Sie einen Wert mit den von einer Unterabfrage zurückgegebenen Werten:
Beispielhafte Quellcode-Muster¶
Beispieldaten¶
Teradata¶
Abfrage¶
Snowflake¶
Abfrage¶
Equal ANY predicate in WHERE clause ¶
Teradata
Eingabe¶
Ausgabe¶
DeptNo |
|---|
100 |
500 |
100 |
300 |
Snowflake
Eingabe¶
Ausgabe¶
DeptNo |
|---|
100 |
500 |
100 |
300 |
Andere Vergleichsoperatoren in der WHERE-Klausel¶
Wenn es andere Vergleichsoperatoren gibt, besteht die entsprechende Übersetzung darin, eine Unterabfrage mit der erforderlichen Logik hinzuzufügen.
Teradata
Eingabe¶
Ausgabe¶
Name |
DeptNo |
|---|---|
Eva |
100 |
Alice |
100 |
David |
200 |
Bob |
300 |
Snowflake
Eingabe¶
Ausgabe¶
NAME |
DEPTNO |
|---|---|
Alice |
100 |
Eva |
100 |
Bob |
300 |
David |
200 |
IN ANY in WHERE-Klausel¶
Teradata
Eingabe¶
Ausgabe¶
DeptNo |
|---|
100 |
500 |
100 |
300 |
Snowflake
Eingabe¶
Ausgabe¶
DeptNo |
|---|
100 |
500 |
100 |
300 |
NOT IN ALL in WHERE-Klausel¶
Teradata
Eingabe¶
Ausgabe¶
Name |
DeptNo |
|---|---|
Charlie |
500 |
Bob |
300 |
Snowflake
Eingabe¶
Ausgabe¶
Name |
DeptNo |
|---|---|
Charlie |
500 |
Bob |
300 |
Bekannte Probleme¶
NOT IN ANY in WHERE-Klausel¶
Teradata
Eingabe¶
Ausgabe¶
Name |
DeptNo |
|---|---|
Eva |
100 |
Charlie |
500 |
Alice |
100 |
David |
200 |
Bob |
300 |
Snowflake
Eingabe¶
Ausgabe¶
Name |
DeptNo |
|---|---|
Eva |
100 |
Charlie |
500 |
Alice |
100 |
David |
200 |
Bob |
300 |
Zugehörige EWIs¶
Keine zugehörigen EWIs.
EXPAND ON-Klausel¶
Übersetzungsreferenz zur Konvertierung der Expand On-Funktion von Teradata in Snowflake
Beschreibung¶
Die EXPAND ON-Klausel erweitert eine Spalte mit dem Datentyp Zeitraum und erstellt eine regelmäßige Zeitreihe von Zeilen, die auf dem Zeitraumwert in der Eingabezeile basiert. Weitere Informationen zur EXPAND ON-Klausel finden Sie in der Teradata-Dokumentation.
Beispielhafte Quellcode-Muster¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beispieldaten¶
Teradata¶
Snowflake¶
EXPAND ON-Klausel¶
Angenommen, Sie möchten die Spalte für den Zeitraum um Sekunden erweitern. Für diese EXPAND ON-Klausel gibt es eine Erweiterung des Ankerzeitraums und eine Erweiterung des Intervallliterales.
Erweiterung des Ankerzeitraums¶
Teradata¶
Ergebnis¶
id |
BEGIN (bg) |
|---|---|
1 |
2022-05-23 10:15:21,0000 |
1 |
2022-05-23 10:15:22,0000 |
1 |
2022-05-23 10:15:23,0000 |
1 |
2022-05-23 10:15:24,0000 |
1 |
2022-05-23 10:15:25,0000 |
Snowflake unterstützt die EXPAND ON-Klausel nicht. Um die gleichen Ergebnisse und die gleiche Funktionalität zu reproduzieren, wird der Teradata SQL-Code in einem CTE-Block enthalten, mit einer EXPAND\_ON\_UDF- und TABLE-Funktion gespeichert. Die FLATTEN-Funktion verwendet, um mehrere Zeilen zurückzugeben, ROW\_COUNT\_UDF und DIFF\_TTIME\_PERIOD\_UDF werden verwendet, um anzuzeigen, wie viele Zeilen benötigt werden und die Rückgabe von VALUE hilft EXPAND\_ON\_UDF dabei, die verschiedenen regelmäßigen Zeitreihen zu berechnen. Dieser CTE-Block gibt denselben Alias für die zu erweiternden Spalten zurück wie in der EXPAND ON-Klausel, so dass das Ergebnis in jeder Verwendung des Datentyps Zeitraum verwendet werden kann.
Snowflake¶
Ergebnis¶
id |
PERIOD_BEGIN\_UDF(bg) |
|---|---|
1 |
2022-05-23 10:15:21,0000 |
1 |
2022-05-23 10:15:22,0000 |
1 |
2022-05-23 10:15:23,0000 |
1 |
2022-05-23 10:15:24,0000 |
1 |
2022-05-23 10:15:25,0000 |
Bekannte Probleme¶
Die Expand On-Klausel kann eine Erweiterung von Intervall-Literalen verwenden. In diesem Fall fügt SnowConvert AI den Fehler hinzu, dass diese Übersetzung geplant ist.
Erweiterung von Intervall-Literalen¶
Teradata¶
Ergebnis¶
id |
BEGIN(bg) |
|---|---|
1 |
2022-05-23 10:15:20,0000 |
1 |
2022-05-23 10:15:21,0000 |
1 |
2022-05-23 10:15:22,0000 |
1 |
2022-05-23 10:15:23,0000 |
1 |
2022-05-23 10:15:24,0000 |
Snowflake¶
Zugehörige EWIs¶
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
SSC-EWI-TD0053: Snowflake unterstützt nicht den Zeittyp, da alle Zeiträume stattdessen als varchar behandelt werden.
NORMALIZE¶
Übersetzungsreferenz zur Konvertierung der Normalize-Funktion von Teradata in Snowflake
Beschreibung¶
NORMALIZE legt fest, dass Werte für den Zeitraum in der Spalte des ersten Zeitraums, die übereinstimmen oder sich überschneiden, zu einem Zeitraum zusammengefasst werden, die die Einzelwerte des Zeitraums umfasst. Weitere Informationen zur NORMALIZE-Klausel finden Sie in der Teradata-Dokumentation.
Beispielhafte Quellcode-Muster¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beispieldaten¶
Teradata¶
Snowflake¶
NORMALIZE-Klausel¶
Nehmen wir an, Sie möchten die NORMALIZE-Klausel mit der Mitarbeiter-ID verwenden.
Teradata¶
Ergebnis¶
EMP_ID |
DURATION |
|---|---|
20 |
(2010-03-10, 2010-07-20) |
10 |
(2010-01-10, 2010-08-18) |
20 |
(2020-05-10, 2010-09-20) |
Snowflake¶
Ergebnis¶
EMP_ID |
PUBLIC.PERIOD_UDF(MIN(START_DATE), MAX(END\_DATE)) |
|---|---|
20 |
2020-05-10*2010-09-20 |
20 |
2010-03-10*2010-07-20 |
10 |
2010-01-10*2010-08-18 |
Bekannte Probleme¶
Die Normalize-Klausel kann ON MEETS OR OVERLAPS, ON OVERLAPS oder ON OVERLAPS OR MEETS verwenden. Für diese Fälle fügt SnowConvert AI den Fehler hinzu, dass diese Übersetzung für die Zukunft geplant ist.
Teradata¶
Snowflake¶
Zugehörige EWIs¶
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
SSC-EWI-TD0079: Die erforderliche Spalte für den Zeitraum wurde nicht gefunden.
SSC-EWI-TD0053: Snowflake unterstützt nicht den Zeittyp, da alle Zeiträume stattdessen als varchar behandelt werden.
Reset When¶
Beschreibung¶
„Reset When“ bestimmt die Partition, auf der eine SQL Fensterfunktion basierend auf einer bestimmten Bedingung arbeitet. Wenn die Bedingung „true“ lautet, wird eine neue dynamische Unterpartition innerhalb der bestehenden Fensterpartition erstellt. Weitere Informationen zu „Reset When“ finden Sie in der [Teradata-Dokumentation] (https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg).
Beispielhafte Quellcode-Muster¶
Beispieldaten¶
Teradata¶
Abfrage
Ergebnis
account_id |
month_id |
balance |
|---|---|---|
1 |
1 |
60 |
1 |
2 |
99 |
1 |
3 |
94 |
1 |
4 |
90 |
1 |
5 |
80 |
1 |
6 |
88 |
1 |
7 |
90 |
1 |
8 |
92 |
1 |
9 |
10 |
1 |
10 |
60 |
1 |
11 |
80 |
1 |
12 |
10 |
Snowflake¶
Abfrage
Ergebnis
account_id |
month_id |
balance |
|---|---|---|
1 |
1 |
60 |
1 |
2 |
99 |
1 |
3 |
94 |
1 |
4 |
90 |
1 |
5 |
80 |
1 |
6 |
88 |
1 |
7 |
90 |
1 |
8 |
92 |
1 |
9 |
10 |
1 |
10 |
60 |
1 |
11 |
80 |
1 |
12 |
10 |
Reset When¶
Nehmen wir an, Sie möchten für jedes Konto die Abfolge der aufeinanderfolgenden monatlichen Saldoerhöhungen analysieren. Wenn der Saldo eines Monats kleiner oder gleich dem Saldo des Vormonats ist, müssen Sie den Zähler auf Null zurücksetzen und neu starten.
Um diese Daten zu analysieren, verwendet Teradata SQL eine Fensterfunktion mit einem verschachtelten Aggregat und einer Anweisung „Reset When“, wie folgt:
Teradata¶
Abfrage
Ergebnis
| account_id | month_id | balance | balance_increase |
|---|---|---|---|
| 1 | 1 | 60 | 0 |
| 1 | 2 | 99 | 1 |
| 1 | 3 | 94 | 0 |
| 1 | 4 | 90 | 0 |
| 1 | 5 | 80 | 0 |
| 1 | 6 | 88 | 1 |
| 1 | 7 | 90 | 2 |
| 1 | 8 | 92 | 3 |
| 1 | 9 | 10 | 0 |
| 1 | 10 | 60 | 1 |
| 1 | 11 | 80 | 2 |
| 1 | 12 | 10 | 0 |
Snowflake¶
Snowflake unterstützt die RESET WHEN-Klausel in Fensterfunktionen nicht. Um das gleiche Ergebnis zu erzielen, muss der Teradata SQL-Code mit der nativen SQL-Syntax und verschachtelten Unterabfragen wie folgt übersetzt werden:
Abfrage
Ergebnis
| account_id | month_id | balance | balance_increase |
|---|---|---|---|
| 1 | 1 | 60 | 0 |
| 1 | 2 | 99 | 1 |
| 1 | 3 | 94 | 0 |
| 1 | 4 | 90 | 0 |
| 1 | 5 | 80 | 0 |
| 1 | 6 | 88 | 1 |
| 1 | 7 | 90 | 2 |
| 1 | 8 | 92 | 3 |
| 1 | 9 | 10 | 0 |
| 1 | 10 | 60 | 1 |
| 1 | 11 | 80 | 2 |
| 1 | 12 | 10 | 0 |
Zwei verschachtelte Abfragen sind erforderlich, um die Funktion „Reset When“ Snowflake zu unterstützen.
In der inneren Unterabfrage wird ein dynamisches Partitionskennzeichen (dynamic_part) erstellt und ausgefüllt. dynamic_part wird auf 1 gesetzt, wenn der Saldo eines Monats kleiner oder gleich dem Saldo des Vormonats ist; andernfalls wird er auf 0 gesetzt.
In der nächsten Ebene wird ein neues Attribut _dynamic_part als Ergebnis einer SUM Fensterfunktion erzeugt.
Schließlich wird ein new_dynamic_part als neues Partitionsattribut (dynamische Partition) zum bestehenden Partitionsattribut (account_id) hinzugefügt und die gleiche ROW_NUMBER() Fensterfunktion wie in Teradata angewendet.
Nach diesen Änderungen erzeugt Snowflake die gleiche Ausgabe wie Teradata.
„Reset When“, wenn die bedingte Fensterfunktion eine Spalte ist¶
Dasselbe Beispiel wie oben, nur dass jetzt die Fensterfunktion, die in der Bedingung RESET WHEN verwendet wird, als eine Spalte mit dem Namen vorherige definiert ist. Diese Variante ändert die Transformation leicht, da es nicht mehr notwendig ist, die vorheriger_Wert wie im vorherigen Beispiel zu definieren. Es ist die gleiche Umgehungsmöglichkeit.
Teradata¶
Abfrage
Ergebnis
| account_id | month_id | balance | previous | balance_increase |
|---|---|---|---|---|
| 1 | 1 | 60 | 0 | |
| 1 | 2 | 99 | 60 | 1 |
| 1 | 3 | 94 | 99 | 0 |
| 1 | 4 | 90 | 94 | 0 |
| 1 | 5 | 80 | 90 | 0 |
| 1 | 6 | 88 | 80 | 1 |
| 1 | 7 | 90 | 88 | 2 |
| 1 | 8 | 92 | 90 | 3 |
| 1 | 9 | 10 | 92 | 0 |
| 1 | 10 | 60 | 10 | 1 |
| 1 | 11 | 80 | 60 | 2 |
| 1 | 12 | 10 | 80 | 0 |
Snowflake¶
Abfrage
Ohne Titel
| account_id | month_id | balance | previous | balance_increase |
|---|---|---|---|---|
| 1 | 1 | 60 | 0 | |
| 1 | 2 | 99 | 60 | 1 |
| 1 | 3 | 94 | 99 | 0 |
| 1 | 4 | 90 | 94 | 0 |
| 1 | 5 | 80 | 90 | 0 |
| 1 | 6 | 88 | 80 | 1 |
| 1 | 7 | 90 | 88 | 2 |
| 1 | 8 | 92 | 90 | 3 |
| 1 | 9 | 10 | 92 | 0 |
| 1 | 10 | 60 | 10 | 1 |
| 1 | 11 | 80 | 60 | 2 |
| 1 | 12 | 10 | 80 | 0 |
Bekannte Probleme¶
Bei der RESET WHEN-Klausel kann es einige Variationen geben, z. B. bei ihrer Bedingung. Derzeit unterstützt SnowConvert AI nur binäre Bedingungen (<=, >=, <> oder =), bei allen anderen Typen als IS NOT NULL entfernt SnowConvert AI die RESET WHEN-Klausel und fügt eine Fehlermeldung hinzu, da dies in Snowflake nicht unterstützt wird, wie im folgenden Beispiel gezeigt.
Teradata¶
Abfrage
Snowflake¶
Abfrage
Zugehörige EWIs¶
SSC-EWI-TD0077: Die RESET WHEN-Klausel wird in diesem Szenario aufgrund ihrer Bedingung nicht unterstützt.
SAMPLE-Klausel.¶
Beschreibung¶
Die SAMPLE-Klausel in Teradata reduziert die Anzahl der zu verarbeitenden Zeilen und gibt ein oder mehrere Beispiele von Zeilen als Liste von Brüchen oder als Liste von Zeilenzahlen zurück. Die Klausel wird in der Abfrage SELECT verwendet. Bitte lesen Sie die folgende Teradata-Dokumentation für weitere Informationen.
Teradata-Syntax
Snowflake-Syntax
Weitere Informationen finden Sie in der folgenden Snowflake-Dokumentation. SAMPLE und TABLESAMPLE sind synonym.
Wobei:
In Snowflake können die folgenden Schlüsselwörter austauschbar verwendet werden:
SAMPLE | TABLESAMPLEBERNOULLI | ROWSYSTEM | BLOCKREPEATABLE | SEED
Sehen Sie sich die folgende Tabelle an, um die wichtigsten Unterschiede zu überprüfen.
SAMPLE-Verhalten |
Teradata |
Snowflake |
|---|---|---|
Beispiel nach Wahrscheinlichkeit |
Auch bekannt als Bruchteilbeschreibung. Es muss eine Bruchzahl zwischen 0,1 und 1 sein. |
Dezimalzahl zwischen 0 und 100. |
Feste Anzahl von Zeilen |
Auch bekannt als Zählbeschreibung. Es handelt sich um eine positive ganze Zahl, die die Anzahl der zu erfassenden Zeilen bestimmt. |
Er gibt die Anzahl der Zeilen (bis zu 1.000.000) an, die aus der Tabelle entnommen werden sollen. Kann eine beliebige ganze Zahl zwischen |
Wiederholte Zeilen |
Bekannt als |
Bekannt als |
Stichprobenverfahren |
Proportional und |
|
Beispielhafte Quellcode-Muster¶
Beispieldaten¶
Teradata¶
Abfrage
Snowflake¶
Abfrage
SAMPLE-Klausel.¶
Feste Anzahl von Zeilen¶
Beachten Sie, dass in diesem Beispiel die Anzahl der Zeilen eine feste Zahl ist, aber nicht unbedingt bei jedem Durchlauf das gleiche Ergebnis erzielt wird.
Teradata
Eingabe
Ausgabe 2 Zeilen.
Snowflake
Eingabe
Ausgabe 2 Zeilen.
Anzahl der Zeilen auf Basis der Wahrscheinlichkeit¶
Diese Option gibt eine Vielzahl von Zeilen zurück, abhängig von der eingestellten Wahrscheinlichkeit.
Teradata
Eingabe
Ausgabe 25 % Wahrscheinlichkeit für jede Zeile: 1 Ausgabezeile.
Snowflake
Eingabe
Ausgabe 25 % Wahrscheinlichkeit für jede Zeile: 1 Ausgabezeile.
Bekannte Probleme¶
Feste Anzahl von Zeilen mit Ersetzung¶
Diese Option gibt eine feste Anzahl von Zeilen zurück und erlaubt die Wiederholung der Zeilen. In Snowflake ist es nicht möglich, mehr Beispiele als Zeilen in einer Tabelle anzufordern.
Teradata-Beispiel
Eingabe
Ausgabe
EmpNo |
Name |
DeptNo |
|---|---|---|
5 |
Eva |
100 |
5 |
Eva |
100 |
5 |
Eva |
100 |
4 |
David |
200 |
4 |
David |
200 |
3 |
Charlie |
500 |
1 |
Alice |
100 |
1 |
Alice |
100 |
Bedingtes Sampling¶
In Snowflake gibt es kein bedingtes Sampling. Dies kann durch Verwendung von CTEs erreicht werden.
Teradata-Beispiel
Eingabe
Ausgabe
EmpNo |
Name |
DeptNo |
|---|---|---|
3 |
Charlie |
500 |
4 |
David |
200 |
2 |
Bob |
300 |
Zugehörige EWIs¶
SSC-EWI-0021: Syntax wird von Snowflake nicht unterstützt.