SnowConvert: Teradata-Probleme

SSC-EWI-TD0069

Diese EWI-Meldung (Error, Warning, Issue) wird nicht mehr unterstützt. Aktuelle Informationen entnehmen Sie bitte der Dokumentation zu SSC-FDM-TD0031.

Schweregrad

Niedrig

Beschreibung

Die Teradata-Funktion ST_SPHERICALDISTANCE und die Snowflake-Funktion ST_DISTANCE berechnen Entfernungen zwischen geografischen Punkten unterschiedlich. Teradata verwendet die Haversin-Formel, um die Entfernung zwischen zwei Punkten auf einer Kugel (wie der Erde) zu messen, während Snowflake’s ST_DISTANCE eine andere Methode verwendet, um die minimale Entfernung zwischen zwei geografischen Koordinaten zu bestimmen.

Beispielcode

Eingabecode:

--The distance between New York and Los Angeles
Select Cast('POINT(-73.989308 40.741895)' As ST_GEOMETRY) As location1,
	Cast('POINT(40.741895 34.053691)' As ST_GEOMETRY) As location2,
	location1.ST_SPHERICALDISTANCE(location2) As Distance_In_km;
Copy

Ausgabecode

--The distance between New York and Los Angeles
SELECT
	Cast('POINT(-73.989308 40.741895)' As GEOGRAPHY) As location1,
	Cast('POINT(40.741895 34.053691)' As GEOGRAPHY) As location2,
	!!!RESOLVE EWI!!! /*** SSC-EWI-TD0069 - ST_DISTANCE RESULTS ARE SLIGHTLY DIFFERENT FROM ST_SPHERICALDISTANCE ***/!!!
	ST_DISTANCE(
	location1, location2) As Distance_In_km;
Copy

Empfehlungen

SSC-EWI-TD0079

Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.

Schweregrad

Niedrig

Beschreibung

Diese Warnung erscheint, weil die erforderliche Period-Spalte, die für die Replikation der Funktionalität der NORMALIZE-Klausel benötigt wird, nicht gefunden werden konnte.

Beispielcode

Eingabecode:

SELECT NORMALIZE emp_id, duration2 FROM project;
Copy

Ausgabecode

!!!RESOLVE EWI!!! /*** SSC-EWI-TD0079 - THE REQUIRED PERIOD TYPE COLUMN WAS NOT FOUND ***/!!!
// SnowConvert Helpers Code section is omitted.
WITH NormalizeCTE AS
(
SELECT
T1.*,
SUM(GroupStartFlag)
OVER (
PARTITION BY
emp_id, duration2
ORDER BY
PeriodColumn_begin
ROWS UNBOUNDED PRECEDING) GroupID
FROM
(
SELECT 
emp_id,
duration2,
PUBLIC.PERIOD_BEGIN_UDF(PeriodColumn) PeriodColumn_begin,
PUBLIC.PERIOD_END_UDF(PeriodColumn) PeriodColumn_end,
(CASE
WHEN PeriodColumn_begin <= LAG(PeriodColumn_end)
OVER (
PARTITION BY
emp_id, duration2
ORDER BY
PeriodColumn_begin,
PeriodColumn_end)
THEN 0
ELSE 1
END) GroupStartFlag FROM 
project
) T1
)
SELECT
emp_id,
duration2,
PUBLIC.PERIOD_UDF(MIN(PeriodColumn_begin), MAX(PeriodColumn_end))
FROM
NormalizeCTE
GROUP BY
emp_id,
duration2,
GroupID;
Copy

Empfehlungen

  • Um diese Warnung zu beheben, suchen Sie die erste Period-Spalte in Ihrem Code, und entfernen Sie alle Referenzen auf sie, außer dort, wo sie ursprünglich definiert ist. Ersetzen Sie dann „PeriodColumn“ durch den Namen der Spalte, die Sie gefunden haben.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

SSC-EWI-TD0008

Schweregrad

Niedrig

Beschreibung

Derzeit hat Snowflake keine direkten Entsprechungen für bestimmte Zeichenfolgenvergleichsfunktionen.

Diese EWI-Meldung erscheint, wenn Sie eine der folgenden Zeichenfolgenvergleichsmethoden verwenden: j_jaro, n_gram, LD (Levenshtein Distance), LDWS (Levenshtein Distance with Substitution), OSA (Optimal String Alignment), DL (Damerau-Levenshtein), hamming, LCS (Longest Common Subsequence), jaccard, cosine oder soundexcode.

Beispielcode

Teradata ist ein relationales Datenbankmanagementsystem, das sich auf die Verwaltung großer Data Warehouses und Analysen spezialisiert hat.

SELECT * FROM StringSimilarity (
  ON (
    SELECT CAST(a AS VARCHAR(200)) AS a, CAST(b AS VARCHAR(200)) AS b
    FROM table_1
  ) PARTITION BY ANY
  USING
  ComparisonColumnPairs ('ld(a,b) AS sim_fn')
) AS dt ORDER BY 1;
Copy

Snowflake Scripting:

SELECT
  * FROM
  !!!RESOLVE EWI!!! /*** SSC-EWI-TD0008 - FUNCTION FOR COMPARING STRINGS IS NOT SUPPORTED ***/!!! StringSimilarity (
   ON (
     SELECT CAST(a AS VARCHAR(200)) AS a, CAST(b AS VARCHAR(200)) AS b
     FROM table_1
   ) PARTITION BY ANY
   USING
   ComparisonColumnPairs ('ld(a,b) AS sim_fn')
 ) AS dt ORDER BY 1;
Copy

Empfehlungen

SSC-EWI-TD0059

Schweregrad

Niedrig

Beschreibung

Ähnlich wie bei Teradata gilt: Wenn Sie eine Standardzeitzone für einen Benutzer festlegen, verwenden alle seine Sitzungen diese Zeitzone, bis eine andere Zeitzone für die Sitzung festgelegt wird.

Diese Warnung erinnert Sie daran, in Snowflake die gleiche Zeitzone festzulegen, die zuvor für Ihren Teradata-Benutzer definiert wurde. Um die Zeitzone in Snowflake festzulegen, führen Sie die folgende Abfrage aus:

ALTER SESSION SET TIMEZONE = 'equivalent_timezone'

Hinweis: Snowflake akzeptiert nur Zeitzonen aus der IANA-Zeitzonendatenbank.

Beispielcode

Eingabecode:

SET TIME ZONE USER;
Copy

Ausgabecode:

!!!RESOLVE EWI!!! /*** SSC-EWI-TD0059 - SNOWFLAKE USER DEFAULT TIME ZONE MAY REQUIRE CONFIGURATION TO MATCH TERADATA VALUE ***/!!!
ALTER SESSION UNSET TIMEZONE;
Copy

Empfehlungen

  • Stellen Sie sicher, dass die Standardzeitzone des Benutzers mit der Zeitzoneneinstellung des ursprünglichen Teradata-Benutzers übereinstimmt.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

SSC-EWI-TD0049

Schweregrad

Hoch

Beschreibung

Das Tool war nicht in der Lage, eine DML-Anweisung in TPT zu verarbeiten und zu konvertieren. Dies geschieht in der Regel, wenn:

  • Skriptvariablen innerhalb der Anweisung verkettet werden

  • Die Anweisung mit Escape-Zeichen versehene Anführungszeichen enthält

Beispielcode

Eingabecode:

-- Script1.tpt
DEFINE JOB load_job
DESCRIPTION 'LOAD TABLE FROM A FILE'
  (
     DEFINE SCHEMA schema_name
     DESCRIPTION 'define SCHEMA'
   (
       var1 VARCHAR (50)
   );

   STEP setup_tables
   (
      APPLY
       ('RELEASE MLOAD database_name.table_name;')
     TO OPERATOR (DDL_OPERATOR() );

   );
);
Copy

Ausgabecode:

#*** Generated code is based on the SnowConvert Python Helpers version 2.0.6 ***

import os
import sys
import snowconvert.helpers
from snowconvert.helpers import Export
from snowconvert.helpers import exec
from snowconvert.helpers import BeginLoading
import argparse
args = None
# Script1.tpt
class load_job:
    #'LOAD TABLE FROM A FILE'

  jobname = "load_job"
    #'define SCHEMA'

  schema_name = """(
var1 VARCHAR(50)
);"""
  def setup_tables(self):
    self.DDL_OPERATOR()
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0049 - THE FOLLOWING STATEMENT COULD NOT BE PROCESSED ***/!!!
      #'RELEASE MLOAD database_name.table_name;'


con = None
def main():
  snowconvert.helpers.configure_log()
  con = snowconvert.helpers.log_on()
  _load_job = load_job()
  _load_job.setup_tables()
  snowconvert.helpers.quit_application()

if __name__ == "__main__":
  main()
Copy

Empfehlungen

  • Um dieses Problem zu beheben, können Sie entweder die INSERT-Anweisung manuell schreiben oder das Team von SnowConvert kontaktieren, um Unterstützung für diese spezielle DML-Anweisung anzufordern, da sie derzeit nicht unterstützt wird.

  • Wenn Sie weitere Hilfe benötigen, senden Sie uns bitte eine E-Mail an snowconvert-support@snowflake.com.

SSC-EWI-TD0009

Schweregrad

Niedrig

Beschreibung

Die temporalen Tabellen von Teradata verwenden abgeleitete Zeitraumspalten, um zeitbasierte Daten auf Spaltenebene zu verfolgen. Dieses Feature ist derzeit nicht in Snowflake verfügbar.

Beispielcode

Teradata:

CREATE MULTISET TABLE Policy(
      Policy_ID INTEGER,
      Customer_ID INTEGER,
      Policy_Type CHAR(2) NOT NULL,
      Policy_Details CHAR(40),
      Policy_Start DATE NOT NULL,
      Policy_End DATE NOT NULL,
      PERIOD FOR Validity(Policy_Start,Policy_End) AS VALIDTIME
      )
   PRIMARY INDEX(Policy_ID);
Copy

Snowflake Scripting:

CREATE OR REPLACE TABLE Policy (
   Policy_ID INTEGER,
   Customer_ID INTEGER,
   Policy_Type CHAR(2) NOT NULL,
   Policy_Details CHAR(40),
   Policy_Start DATE NOT NULL,
   Policy_End DATE NOT NULL,
   !!!RESOLVE EWI!!! /*** SSC-EWI-TD0009 - TEMPORAL COLUMN NOT SUPPORTED ***/!!!
         PERIOD FOR Validity(Policy_Start,Policy_End) AS VALIDTIME
         )
         COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
         ;
Copy

Empfehlungen

SSC-EWI-TD0039

Schweregrad

Medium

Beschreibung

Das Dateiformat, das Sie zu verwenden versuchen, ist nicht mit Snowflake kompatibel.

Beispielcode

Eingabe:

SELECT
    CAST('01-12-2020' AS DATE FORMAT 'dd-mm-yyyy'),
    CAST('01-12-2020' AS DATE FORMAT 'DDDBEEEE');
Copy

Ausgabe:

SELECT
    TO_DATE('01-12-2020', 'DD-MM-YYYY') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0025 - OUTPUT FORMAT 'dd-mm-yyyy' NOT SUPPORTED. ***/!!!,
    TO_DATE('01-12-2020', 'DDD EEEE') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0025 - OUTPUT FORMAT 'DDDBEEEE' NOT SUPPORTED. ***/!!!!!!RESOLVE EWI!!! /*** SSC-EWI-TD0039 - INPUT FORMAT 'DDD EEEE' NOT SUPPORTED ***/!!!;
Copy

Empfehlungen

SSC-EWI-TD0068

Schweregrad

Medium

Beschreibung

Mit Teradata-Profilen können Sie mehrere gemeinsame Parameter festlegen, die den Speicherplatz kontrollieren und Kennwortbeschränkungen verwalten.

Snowflake verwaltet den Speicher über seine Cloud-Architektur und führt alle Optimierungen automatisch durch, sodass eine benutzerseitige Speicherkonfiguration nicht mehr erforderlich ist. Außerdem erzwingt Snowflake eine standardmäßige Kennwortrichtlinie, die für alle Benutzer gilt und nicht angepasst werden kann.

Dieser Fehler tritt auf, wenn eine Teradata-Profilreferenz erkannt und in eine Snowflake-Rollenreferenz umgewandelt wird. Obwohl Rollen in Snowflake den Teradata-Profilen am nächsten kommen, können die Abfrageergebnisse abweichen, wenn der Profilname in Teradata nicht mit dem Rollennamen in Snowflake übereinstimmt.

Beispielcode

Eingabecode:

SELECT PROFILE;
Copy

Ausgabecode:

SELECT
CURRENT_ROLE() !!!RESOLVE EWI!!! /*** SSC-EWI-TD0068 - SNOWFLAKE DOES NOT SUPPORT PROFILES, REFERENCING ROLE INSTEAD ***/!!!;
Copy

Empfehlungen

  • Verwenden Sie keine Benutzerprofile in Ihren Abfragen, da diese nicht unterstützt werden. Die Abfrageergebnisse können variieren, wenn der Profilname des Benutzers von seinem Rollennamen abweicht.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

SSC-EWI-TD0029

Schweregrad

Niedrig

Beschreibung

Diese Warnung erscheint, wenn Sie eine TABLE migrieren, die das QUEUE-Attribut verwendet. Da Snowflake das Schlüsselwort QUEUE nicht unterstützt, wird es bei der Migration entfernt.

Beispielcode

Eingabe:

CREATE MULTISET TABLE SAMPLE_TABLE,
QUEUE,
NO FALLBACK
(
    COL1 INTEGER
);
Copy

Ausgabe:

!!!RESOLVE EWI!!! /*** SSC-EWI-TD0029 - QUEUE TABLE FUNCTIONALITY NOT SUPPORTED ***/!!!
CREATE OR REPLACE TABLE SAMPLE_TABLE
(
    COL1 INTEGER
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

Empfehlungen

SSC-EWI-TD0063

Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.

Schweregrad

Medium

Beschreibung

Dieser Fehler tritt auf, wenn SnowConvert auf eine JSON-Pfadzeichenfolge stößt, die nicht dem erforderlichen JSON-Format entspricht und nicht korrekt deserialisiert werden kann.

Beispielcode

Eingabecode:

SELECT
    *
FROM
JSON_TABLE (
    ON (
        SELECT
            id,
            trainSchedule as ts
        FROM
            demo.PUBLIC.Train T
    ) USING rowexpr('$weekShedule.Monday[*]') colexpr(
        '[{"jsonpath"  "$.time",
              "type"" : "CHAR ( 12 )"}]'
    )
) AS JT(Id, Ordinal, Time, City);
Copy

Ausgabecode:

SELECT
    *
FROM
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0063 - UNRECOGNIZED JSON PATH $weekShedule.Monday[*] ***/!!!
JSON_TABLE (
    ON
       !!!RESOLVE EWI!!! /*** SSC-EWI-0108 - THE FOLLOWING SUBQUERY MATCHES AT LEAST ONE OF THE PATTERNS CONSIDERED INVALID AND MAY PRODUCE COMPILATION ERRORS ***/!!! (
           SELECT
               id,
               trainSchedule as ts
FROM
               demo.PUBLIC.Train T
    ) USING rowexpr('$weekShedule.Monday[*]') colexpr(
        '[{"jsonpath"  "$.time",
              "type"" : "CHAR ( 12 )"}]'
    )
) AS JT(Id, Ordinal, Time, City);
Copy

Empfehlungen

  • Überprüfen Sie, ob der JSON-Pfad korrekt formatiert ist und keine ungültigen Zeichen enthält.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

SSC-EWI-TD0057

Schweregrad

Niedrig

Beschreibung

Die Funktion NEW JSON akzeptiert JSON-Daten entweder im Zeichenfolgen- oder Binärformat. Wenn die Daten im Binärformat vorliegen, bleibt die Funktion unverändert, da Snowflake die Metadaten des Binärformats über das JSON-Objekt nicht interpretieren kann. Weitere Einzelheiten finden Sie in der Teradata-Dokumentation zu NEW JSON.

Beispielcode

Eingabecode

SELECT NEW JSON ('160000000268656C6C6F0006000000776F726C640000'xb, BSON);
Copy

Ausgabecode

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-TD0057 - NEW JSON FUNCTION WITH BINARY DATA IS NOT SUPPORTED ***/!!!!!!RESOLVE EWI!!! /*** SSC-EWI-TD0039 - INPUT FORMAT 'BSON' NOT SUPPORTED ***/!!!
NEW JSON (TO_BINARY('160000000268656C6C6F0006000000776F726C640000'), BSON);
Copy

Empfehlungen

SSC-EWI-TD0006

Schweregrad

Niedrig

Beschreibung

Der Datentyp FLOAT unterstützt keine Standardwerte mit der Spezifikation DEFAULT TIME, DEFAULT DATE, DEFAULT CURRENT_DATE, DEFAULT CURRENT_TIME oder DEFAULT CURRENT_TIMESTAMP.

Beispielcode

Teradata:

CREATE TABLE T_2004
(
    -- In the output code all of these columns will be FLOAT type
    -- and will include the SSC-EWI-TD0006 message.
    COL1 FLOAT DEFAULT TIME,
    COL2 FLOAT DEFAULT DATE,
    COL3 FLOAT DEFAULT CURRENT_DATE,
    COL4 FLOAT DEFAULT CURRENT_TIME,
    COL5 FLOAT DEFAULT CURRENT_TIMESTAMP
);
Copy

Snowflake Scripting:

CREATE OR REPLACE TABLE T_2004
(
    -- In the output code all of these columns will be FLOAT type
    -- and will include the SSC-EWI-TD0006 message.
    COL1 FLOAT DEFAULT TIME !!!RESOLVE EWI!!! /*** SSC-EWI-TD0006 - DEFAULT CURRENT_TIME NOT VALID FOR DATA TYPE ***/!!!,
    COL2 FLOAT DEFAULT DATE !!!RESOLVE EWI!!! /*** SSC-EWI-TD0006 - DEFAULT CURRENT_DATE NOT VALID FOR DATA TYPE ***/!!!,
    COL3 FLOAT DEFAULT CURRENT_DATE !!!RESOLVE EWI!!! /*** SSC-EWI-TD0006 - DEFAULT CURRENT_DATE NOT VALID FOR DATA TYPE ***/!!!,
    COL4 FLOAT DEFAULT CURRENT_TIME !!!RESOLVE EWI!!! /*** SSC-EWI-TD0006 - DEFAULT CURRENT_TIME NOT VALID FOR DATA TYPE ***/!!!,
    COL5 FLOAT DEFAULT CURRENT_TIMESTAMP !!!RESOLVE EWI!!! /*** SSC-EWI-TD0006 - DEFAULT CURRENT_TIMESTAMP NOT VALID FOR DATA TYPE ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

Empfehlungen

SSC-EWI-TD0002

Diese EWI-Meldung ist seit der SnowConvert-Version 28.1.100 veraltet.

Schweregrad

Hoch

Beschreibung

Wenn eine SQL-Anweisung eine Spaltenauswahl vom Typ INTERVAL enthält, fügt SnowConvert eine EWI-Meldung (Error, Warning, Information) hinzu und erstellt eine Stub-Funktion. Da Snowflake den Datentyp INTERVAL nicht unterstützt, ist nach Abschluss der Konvertierung ein manueller Eingriff erforderlich.

Beispielcode

Teradata:

SELECT
     CAST('07:00' AS INTERVAL HOUR(2) TO MINUTE),
     CAST('08:00' AS INTERVAL HOUR(2) TO MINUTE) As Test_Interval;
Copy

Snowflake Scripting:

SELECT
     !!!RESOLVE EWI!!! /*** SSC-EWI-TD0002 - INTERVAL TYPE NOT SUPPORTED IN SNOWFLAKE ***/!!!
     INTERVAL '07 hour, 00 min',
     !!!RESOLVE EWI!!! /*** SSC-EWI-TD0002 - INTERVAL TYPE NOT SUPPORTED IN SNOWFLAKE ***/!!!
     INTERVAL '08 hour, 00 min' As Test_Interval;
Copy

Empfehlungen

SSC-EWI-TD0053

Teile des Codes wurden entfernt, um das Beispiel übersichtlicher und leichter verständlich zu machen.

Genauigkeit der generierten varchar-Darstellungen

Die Funktion PERIOD_UDF erstellt eine Zeichenfolgendarstellung eines Zeitraums unter Verwendung der Standard-Zeitstempel- und -Uhrzeitformate von Snowflake. Standardmäßig enthalten Zeitstempel drei Dezimalstellen für die Genauigkeit, während Uhrzeitvariablen keine Dezimalstellen haben. Wenn Sie die Genauigkeit der Ausgabezeichenfolge anpassen müssen, stehen Ihnen zwei Optionen zur Verfügung.

Verwenden Sie die Drei-Parameter-Version von PERIOD_UDF mit dem Parameter PRECISIONDIGITS. Dieser Parameter akzeptiert eine Ganzzahl von 0 bis 9 und steuert die Anzahl der Dezimalstellen im Nachkommateil des Ergebnisses. Während Snowflake bis zu neun Dezimalstellen unterstützt, unterstützt Teradata nur bis zu sechs. Beispiel:

Aufrufe

Ergebnis

PUBLIC.PERIOD_UDF(time '13:30:45.870556', time '15:35:20.344891', 0)

'13:30:45*15:35:20'

PUBLIC.PERIOD_UDF(time '13:30:45.870556', time '15:35:20.344891', 2)

'13:30:45.87*15:35:20.34'

PUBLIC.PERIOD_UDF(time '13:30:45.870556', time '15:35:20.344891', 5)

'13:30:45.87055*15:35:20.34489'

  • Legen Sie das Uhrzeitformat für die Sitzungsausgabe fest: Verwenden Sie die Befehle ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT = <format> und ALTER SESSION SET TIME_OUTPUT_FORMAT = <format>, um zu ändern, wie Zeitstempel und Uhrzeiten in Ihrer Sitzung angezeigt werden.

Sie können die Standardformate von Snowflake für die aktuelle Sitzung ändern, um die gewünschte Anzahl der Stellen für die Genauigkeit festzulegen. Diese Änderungen werden sich auf alle nachfolgenden Ausführungen von PERIOD_UDF während Ihrer Sitzung auswirken.

Beispielcode

Eingabecode:

create table vacations (
    employeeName varchar(50),
    duration period(date)
);

insert into vacations values ('Richard', period(date '2021-05-15', date '2021-06-15'));

select end(duration) from vacations;
Copy

Ausgabecode:

CREATE OR REPLACE TABLE vacations (
    employeeName varchar(50),
    duration VARCHAR(24) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;

INSERT INTO vacations
VALUES ('Richard', PUBLIC.PERIOD_UDF(date '2021-05-15', date '2021-06-15') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!);

SELECT
    PUBLIC.PERIOD_END_UDF(duration) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!! from
    vacations;
Copy

Empfehlungen

  • Da PERIOD und die damit verbundenen Funktionen mit dem Datentyp varchar simuliert werden, empfehlen wir, die Genauigkeit der Ergebnisse zu überprüfen.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

SSC-EWI-TD0077

Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.

Schweregrad

Moderat

Beschreibung

SnowConvert (SC) unterstützt nur RESET WHEN-Klauseln, die binäre Vergleichsoperatoren verwenden (<=, >= oder =). Wenn Sie andere Bedingungen, z. B. IS NOT NULL, verwenden, entfernt SC die RESET WHEN-Klausel und gibt eine Fehlermeldung aus, da Snowflake diese Bedingungen nicht unterstützt.

Diese Fehlermeldung erscheint, wenn die RESET WHEN-Bedingung auf einen Ausdruck verweist, den das Migrationstool nicht finden kann. Zurzeit unterstützt das Tool nur Spaltenaliase, die innerhalb derselben Abfrage definiert werden.

Beispielcode

Bedingung ist nicht binär

Eingabecode:

SELECT
    account_id,
    month_id,
    balance,
    ROW_NUMBER() OVER (
        PARTITION BY account_id
        ORDER BY month_id
        RESET WHEN balance IS NOT NULL
        ROWS UNBOUNDED PRECEDING
    ) as balance_increase
FROM account_balance
ORDER BY 1,2;
Copy

Ausgabecode

// SnowConvert Helpers Code section is omitted.
SELECT
    account_id,
    month_id,
    balance,
    ROW_NUMBER() OVER (
        PARTITION BY account_id
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0077 - RESET WHEN CLAUSE IS NOT SUPPORTED IN THIS SCENARIO DUE TO ITS CONDITION ***/!!!
        ORDER BY month_id
        ROWS UNBOUNDED PRECEDING
    ) as balance_increase
FROM
    account_balance
ORDER BY 1,2;
Copy

Bedingungsausdruck wurde nicht gefunden

Eingabecode:

SELECT
    account_id,
    month_id,
    balance,
    ROW_NUMBER() OVER (
        PARTITION BY account_id
        ORDER BY month_id
        RESET WHEN balance <= not_found_expresion
    ) as balance_increase
FROM account_balance
ORDER BY 1,2;
Copy

Ausgabecode

// SnowConvert Helpers Code section is omitted.
SELECT
    account_id,
    month_id,
    balance,
    ROW_NUMBER() OVER (
        PARTITION BY account_id
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0077 - RESET WHEN CLAUSE IS NOT SUPPORTED IN THIS SCENARIO DUE TO ITS CONDITION ***/!!!
        ORDER BY month_id
    ) as balance_increase
FROM
    account_balance
ORDER BY 1,2;
Copy

Empfehlungen

SSC-EWI-TD0012

Schweregrad

Niedrig

Beschreibung

Diese Warnung erscheint, wenn SnowConvert eine Spalte vom Datentyp BINARY mit einem DEFAULT-Wert erkennt. Da Snowflake keine Standardwerte für BINARY-Spalten unterstützt, entfernt SnowConvert die Angabe des DEFAULT-Werts.

Beispielcode

Teradata:

CREATE TABLE TableExample
(
ColumnExample BINARY DEFAULT '00000000'XB NOT NULL
)
Copy

Snowflake Scripting:

CREATE OR REPLACE TABLE TableExample (
ColumnExample BINARY DEFAULT NOT TO_BINARY('00000000') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0012 - BINARY DOES NOT SUPPORT DEFAULT NOT TO_BINARY('00000000') ***/!!! NULL
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

Empfehlungen

SSC-EWI-TD0003

Schweregrad

Niedrig

Beschreibung

In Snowflake unterstützen die TRIM-Funktionen (LTRIM, RTRIM oder TRIM) die Sortierung nur beim Entfernen von Leerzeichen oder Leerraumzeichen. Sie unterstützen keine Sortierung für andere Zeichentypen.

Wenn SnowConvert auf die Funktionen LTRIM, RTRIM oder TRIM (mit der Option LEADING oder TRAILING) in einer sortierten Spalte trifft, fügt es automatisch eine COLLATE-Funktion hinzu. Diese Funktion erstellt eine nicht sortierte Kopie der Eingabespalte, bevor die TRIM-Operation angewendet wird. Die EWI-Meldung (Error, Warning, Information) macht Sie darauf aufmerksam, dass die Sortierung der Spalte entfernt wurde, bevor die TRIM-Funktion angewendet wurde. Infolgedessen hat die abgeschnittene Ausgabe keine Sortierungseinstellungen, was sich auf nachfolgende Zeichenfolgenvergleiche mit diesem Ergebnis auswirken kann.

Beispielcode

Teradata:

CREATE TABLE collateTable (
	col1 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC
);

SELECT
    TRIM(BOTH '0' FROM col1),
    TRIM(LEADING '  ' FROM col1),
    TRIM(TRAILING '0' FROM col1),
    LTRIM(col1, '0'),
    RTRIM(col1)
FROM
    collateTable;
Copy

Snowflake Scripting:

CREATE OR REPLACE TABLE collateTable (
	col1 VARCHAR(50) COLLATE 'en-cs'
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "06/17/2024" }}'
;

SELECT
	TRIM(COLLATE(col1, ''), '0') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0003 - COLLATION NOT SUPPORTED IN TRIM FUNCTIONS, ADD ORIGINAL COLLATION TO FUNCTION RESULT TO PRESERVE IT ***/!!!,
	LTRIM(col1, '  '),
	RTRIM(COLLATE(col1, ''), '0') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0003 - COLLATION NOT SUPPORTED IN TRIM FUNCTIONS, ADD ORIGINAL COLLATION TO FUNCTION RESULT TO PRESERVE IT ***/!!!,
	LTRIM(COLLATE(col1, ''), '0') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0003 - COLLATION NOT SUPPORTED IN TRIM FUNCTIONS, ADD ORIGINAL COLLATION TO FUNCTION RESULT TO PRESERVE IT ***/!!!,
	RTRIM(col1)
	FROM
	collateTable;
Copy

Empfehlungen

  • Um ein konsistentes Vergleichsverhalten aufrechtzuerhalten, fügen Sie die Sortierung der ursprünglichen Spalte an das Ergebnis der TRIM-Funktion an, indem Sie die COLLATE-Funktion verwenden. Geben Sie den ursprünglichen Sortierungswert als literale Zeichenfolge im zweiten Argument an.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com

SSC-EWI-TD0052

Schweregrad

Niedrig

Beschreibung

Sowohl Teradata als auch Snowflake konvertieren Zeichenfolgenwerte automatisch in Zahlen, wenn sie an Funktionen übergeben werden, die numerische Parameter erwarten. Die Zeichenfolgenwerte werden geparst und in ihre numerischen Entsprechungen umgewandelt.

Teradata und die Zielsprache behandeln numerische Zeichenfolgen unterschiedlich. Teradata ist flexibler und kann verschiedene Zeichenfolgenformate als Zahlen parsen, einschließlich:

  • Leere Zeichenfolgen oder Zeichenfolgen mit nur Leerzeichen

  • Zeichenfolgen mit eingebetteten Bindestrichen

  • Zahlen ohne Ziffern in der Mantisse oder im Exponenten

  • Währungssymbole

  • Zahlen mit Zifferntrennzeichen

  • Zahlen, bei denen das Vorzeichen nach den Ziffern erscheint

  • '1-2-3-4-5' -> 12345

  • '$50' -> 50

  • '5000-' -> -5000

  • '1,569,284.55' -> 1569284.55

Snowflake verwendet eine automatische optimistische Zeichenfolgenkonvertierung und erwartet, dass Zeichenfolgen entweder dem Format TM9 oder TME entsprechen. Wenn die Zeichenfolgen nicht mit diesen Formaten übereinstimmen, schlägt die Konvertierung fehl. Um dieses Problem zu lösen, verarbeitet SnowConvert Zeichenfolgenliterale, die in numerische Werte umgewandelt werden müssen, indem es Zeichenfolgen erzeugt, die dem Format TM9 oder TME entsprechen. Dadurch wird sichergestellt, dass Snowflake sie korrekt parsen kann. Beachten Sie, dass diese Konvertierung nur für Literalzeichenfolgenwerte funktioniert. Nicht-Literalwerte werden von Snowflake möglicherweise nicht erfolgreich geparst.

Beispielcode

Eingabecode:

create table myTable(
    stringCol varchar(30)
);

insert into myTable values ('   1,236,857.45-');

select cos('   1,236,857.45-');

select cos(stringCol) from myTable;
Copy

Ausgabecode:

CREATE OR REPLACE TABLE myTable (
    stringCol varchar(30)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;

INSERT INTO myTable
VALUES ('   1,236,857.45-');

SELECT
    cos('-1236857.45');

SELECT
    cos(stringCol !!!RESOLVE EWI!!! /*** SSC-EWI-TD0052 - SNOWFLAKE IMPLICIT CONVERSION TO NUMERIC DIFFERS FROM TERADATA AND MAY FAIL FOR NON-LITERAL STRING VALUES ***/!!!)
from
    myTable;
Copy

Empfehlungen

SSC-EWI-TD0066

Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.

Schweregrad

Niedrig

Beschreibung

Diese Meldung erscheint, wenn SnowConvert auf einen durch Unicode-Zeichen getrennten Teradata-Bezeichner trifft, der Zeichen enthält, die von Snowflake nicht unterstützt werden. Weitere Informationen finden Sie im Artikel Working with Unicode Delimited Identifiers.

Beispielcode

Eingabecode:

SELECT * FROM U&"#000f#ffff" UESCAPE '#';
Copy

Ausgabecode:

// SnowConvert Helpers Code section is omitted.
SELECT
* FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-TD0066 - THE FOLLOWING IDENTIFIER HAS ONE OR MORE UNICODE ESCAPE CHARACTERS THAT ARE INVALID IN SNOWFLAKE ***/!!!
"\u000f\uffff";
Copy

Empfehlungen

  • Verwenden Sie nur gültige Unicode-Zeichen, wenn Sie Bezeichner in Snowflake erstellen.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

SSC-EWI-TD0027

Schweregrad

Niedrig

Beschreibung

Snowflake unterstützt nicht die in Teradata integrierten Zeitattribute wie VALIDTIME oder TRANSACTIONTIME, was zu einer EWI-Meldung (Error, Warning, Information) führt.

Beispielcode

Teradata-Eingabe:

CREATE MULTISET TABLE SAMPLE_TABLE
(
    COL1 PERIOD(TIMESTAMP(6) WITH TIME ZONE) NOT NULL AS TRANSACTIONTIME
);
Copy

Snowflake-Ausgabe:

CREATE OR REPLACE TABLE SAMPLE_TABLE (
       COL1 VARCHAR(68) NOT NULL !!!RESOLVE EWI!!! /*** SSC-EWI-TD0027 - SNOWFLAKE DOES NOT SUPPORT 'TRANSACTIONTIME' COLUMN OPTION ***/!!!!!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!
   )
   COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

Empfehlungen

  • Erstellen Sie TIMESTAMP-Spalten manuell, und setzen Sie deren Standardwerte auf CURRENT_TIMESTAMP.

  • Verwenden Sie Tabellenstreams, um Änderungen an Ihren Daten zu verfolgen und Metadaten für jede Änderung zu erfassen.(Leitfaden)

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com

SSC-EWI-TD0076

Schweregrad

Moderat

Beschreibung

Fremdtabellen in Teradata ermöglichen Ihnen den Zugriff auf Daten, die an externen Speicherorten wie Amazon S3, Azure Blob Storage und Google Cloud Storage gespeichert sind. Snowflake unterstützt diese spezielle Syntax zwar nicht, aber Sie können eine ähnliche Funktionalität erreichen mit:

  • Externe Tabellen

  • Iceberg-Tabellen

  • Standardtabellen

Beispielcode

Eingabecode:

SELECT cust_id, income, age FROM
FOREIGN TABLE (SELECT cust_id, income, age FROM twm_customer)@hadoop1 T1;
Copy

Ausgabecode:

SELECT
cust_id,
income,
age FROM
!!!RESOLVE EWI!!! /*** SSC-EWI-TD0076 - THE USE OF FOREIGN TABLES IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
 FOREIGN TABLE (SELECT cust_id, income, age FROM twm_customer)@hadoop1 T1;
Copy

Empfehlungen

  • Um Teradata-Fremdtabellen zu ersetzen, können Sie externe Tabellen in Snowflake verwenden. Diese Tabellen lesen Daten direkt aus Cloud-Speicherplattformen (Amazon S3, Google Cloud Storage oder Microsoft Azure). Damit können Sie Data-Lake-Dateien abfragen, als wären es Datenbanktabellen. Externe Tabellen unterstützen alle Dateiformate, die mit den COPY INTO

  • Die Iceberg-Tabellen von Snowflake sind eine weitere Option. Diese Tabellen verwenden offene Formate und speichern Daten als Parquet-Dateien in Ihrem eigenen Cloud-Speicher.

  • Snowflake-Standardtabellen können ebenfalls die Funktionalität der Teradata-Fremdtabellen ersetzen.

  • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com.

  • SSC-EWI-TD0091

    Einige Abschnitte des Ausgabecodes wurden entfernt, um ihn leichter verständlich zu machen.

    Schweregrad

    Medium

    Beschreibung

    In Teradata-Skripten können Sie Datentypen mithilfe des CAST-Ausdrucks mit der folgenden Syntax konvertieren:

    <expression> ( <DataType> )
    
    Copy

    Bei der Konvertierung von Datentypen unter Verwendung von CAST mit DATE oder TIME kann es zu Mehrdeutigkeiten kommen, da diese Schlüsselwörter auch als CURRENT_DATE- bzw. CURRENT_TIME-Funktion fungieren.

    Daher ist es bei der Untersuchung von Code ohne zusätzlichen Kontext des Ausdrucks, der eine CAST-Operation erfordert, schwierig, zwischen einer echten CAST-Operation und einer Funktion zu unterscheiden, die einfach DATE- oder TIME-Parameter als Eingabe akzeptiert.

    Um festzustellen, ob <expression> eine Spalte oder eine benutzerdefinierte Funktion (UDF) ist, müssen Sie bei der Konvertierung des Codes die entsprechende CREATE TABLE- oder CREATE FUNCTION-Anweisung einfügen. Dies liefert den notwendigen Kontext der Definition des Ausdrucks.

    Betrachten wir zum Beispiel die folgende SELECT-Anweisung. Wenn wir auf AMBIGUOUS_EXPR stoßen, können wir ohne zusätzlichen Kontext nicht feststellen, ob es sich um einen Funktionsaufruf oder eine Typkonvertierung in DATE handelt. Wir können jedoch sicher sein, dass COL1 (DATE) eine Typkonvertierungsoperation (CAST) ist, da COL1 eine Spalte aus der Tabelle TAB ist.

    CREATE TABLE TAB (
        COL1 VARCHAR(23)
    )
    
    SELECT
        COL1 (DATE),
        AMBIGUOUS_EXPR (DATE)
    FROM TAB;
    
    Copy

    Beispielcode

    Eingabecode:

    CREATE TABLE TAB (
        COL1 VARCHAR(23)
    )
    
    SELECT
        COL1 (DATE),
        AMBIGUOUS_EXPR (DATE)
    FROM TAB;
    
    Copy

    Ausgabecode

    CREATE OR REPLACE TABLE TAB (
        COL1 VARCHAR(23)
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    SELECT
        TO_DATE(
        COL1, 'YYYY/MM/DD') AS COL1,
        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0091 - EXPRESSION CONVERTED AS CAST BY DEFAULT. CONVERSION MIGHT PRESENT ERRORS DUE TO MISSING DEPENDENCIES FOR 'AMBIGUOUS_EXPR'. ***/!!!
        AMBIGUOUS_EXPR :: DATE
        FROM
        TAB;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0017

    Schweregrad

    Niedrig

    Beschreibung

    Diese Warnung erscheint, wenn SnowConvert eine CREATE TABLE-Anweisung erkennt, die die Option GLOBAL TEMPORARY TRACE enthält. Dieses Feature, das spezifisch für Teradata ist (TRACE-Funktionalität)), ist in Snowflake nicht verfügbar und wird bei der Konvertierung entfernt.

    Beispielcode

    Teradata:

    CREATE GLOBAL TEMPORARY TRACE TABLE TableExample
    (
    ColumnExample Number
    )
    
    Copy

    Snowflake Scripting:

    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0017 - GLOBAL TEMPORARY TABLE TRACE FUNCTIONALITY NOT SUPPORTED ***/!!!
    CREATE OR REPLACE TABLE TableExample (
    ColumnExample NUMBER(38, 18)
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0046

    Schweregrad

    Medium

    Beschreibung

    Dieser Fehler tritt auf, wenn eine DBC-Tabelle referenziert wird, in der die ausgewählte Spalte keine entsprechende Übereinstimmung in Snowflake hat.

    Beispielcode

    Eingabe:

    CREATE VIEW SAMPLE_VIEW
    AS
    SELECT PROTECTIONTYPE FROM DBC.DATABASES;
    
    Copy

    Ausgabe:

    CREATE OR REPLACE VIEW SAMPLE_VIEW
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "08/14/2024" }}'
    AS
    SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0046 - BUILT-IN REFERENCE TO PROTECTIONTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
    PROTECTIONTYPE FROM
    INFORMATION_SCHEMA.DATABASES;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0023

    Schweregrad

    Niedrig

    Beschreibung

    Die Statusvariable ACTIVITY_COUNT zeigt an, wie viele Zeilen durch eine SQL-DML-Anweisung (wie INSERT, UPDATE oder DELETE) geändert wurden, wenn sie in eingebettetem SQL oder gespeicherten SQL-Prozeduren verwendet wird. Weitere Informationen finden Sie hier.

    Um das Verhalten von ACTIVITY_COUNT zu replizieren, können Sie die in der Übersetzungsspezifikation beschriebene Problemumgehung verwenden.

    SELECT $1 FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
    
    Copy

    Wenn Sie ACTIVITY_COUNT in einer SELECT- oder SET INTO VARIABLE-Anweisung verwenden, können Sie die Variable nicht direkt durch die zuvor erwähnte Problemumgehung ersetzen.

    Beispielcode

    Teradata

    REPLACE PROCEDURE InsertEmployeeSalaryAndLog_4 ()
    BEGIN
        DECLARE rowCount INT;
        DECLARE message VARCHAR(100);
    
        INSERT INTO employees (employee_id, first_name, last_name, department_id, salary)
        VALUES (101, 'Alice', 'Smith', 10, 70000.00);
    
        SELECT ACTIVITY_COUNT INTO rowCount;
        SET message = 'ROWS INSERTED: ' || rowCount;
    
        -- Insert the ACTIVITY_COUNT into the activity_log table
        INSERT INTO activity_log (operation, row_count)
        VALUES (message, rowCount);
    END;
    
    Copy

    Snowflake

    CREATE OR REPLACE PROCEDURE InsertEmployeeSalaryAndLog_4 ()
    RETURNS VARCHAR
    LANGUAGE SQL
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "07/15/2024" }}'
    EXECUTE AS CALLER
    AS
    $$
        DECLARE
                   rowCount INT;
                   message VARCHAR(100);
        BEGIN
    
    
                   INSERT INTO employees (employee_id, first_name, last_name, department_id, salary)
                   VALUES (101, 'Alice', 'Smith', 10, 70000.00);
                   SELECT
                ACTIVITY_COUNT !!!RESOLVE EWI!!! /*** SSC-EWI-TD0023 - ACTIVITY_COUNT INSIDE SELECT/SET INTO VARIABLE REQUIRES MANUAL FIX ***/!!! INTO
                :rowCount;
                message := 'ROWS INSERTED: ' || rowCount;
    
                -- Insert the ACTIVITY_COUNT into the activity_log table
                INSERT INTO activity_log (operation, row_count)
                VALUES (:message, :rowCount);
        END;
    $$;
    
    Copy

    Manuelle Korrektur

    Um die Anzahl der eingefügten, aktualisierten oder gelöschten Zeilen abzurufen, können Sie einen Teil der oben beschriebenen Problemumgehung verwenden.

    CREATE OR REPLACE PROCEDURE InsertEmployeeSalaryAndLog_4 ()
    RETURNS VARCHAR
    LANGUAGE SQL
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "07/15/2024" }}'
    EXECUTE AS CALLER
    AS
    $$
        DECLARE
                   rowCount INT;
                   message VARCHAR(100);
        BEGIN
    
    
                   INSERT INTO employees (employee_id, first_name, last_name, department_id, salary)
                   VALUES (101, 'Alice', 'Smith', 10, 70000.00);
                   SELECT $1 INTO :rowCount FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
                message := 'ROWS INSERTED: ' || rowCount;
    
                -- Insert the ACTIVITY_COUNT into the activity_log table
                INSERT INTO activity_log (operation, row_count)
                VALUES (:message, :rowCount);
        END;
    $$;
    
    Copy

    Um diese Abfrage in Snowflake zu verwenden, müssen Sie sie so ändern, dass die SELECT INTO VARIABLE-Syntax von Snowflake verwendet wird.

    Wenn Sie bei der Verwendung von RESULT_SCAN(LAST_QUERY_ID()) falsche Ergebnisse feststellen, lesen Sie bitte SSC-FDM-TD0033, um Informationen über mögliche Beschränkungen und deren Behebung zu erhalten.

    Empfehlungen

    • Wenden Sie die vorgeschlagene Problemumgehung manuell an.

    • Lesen Sie SSC-FDM-TD0033, um die Beschränkungen bei der Verwendung von LAST_QUERY_ID zu verstehen und zu wissen, wie Sie damit umgehen.

    • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com

    SSC-EWI-TD0051

    Schweregrad

    Niedrig

    Beschreibung

    Bei der Arbeit mit Byte-Datentypen gibt es einen wichtigen Unterschied zwischen Teradata und Snowflake:

    • In Teradata zählt die Funktion BYTES immer die nachstehenden Nullen, da in Teradata Datentypen mit fester Länge gespeichert werden. Das bedeutet, dass es die Größe der Spalte und nicht die tatsächliche Datengröße zurückgibt.

    • In Snowflake gibt die Funktion LENGTH die tatsächliche Größe der gespeicherten Daten zurück, da für binäre Typen Datentypen mit variabler Länge gespeichert werden.

    Hier ist ein Beispiel, um diesen Unterschied zu verdeutlichen:

    Teradata:

    create table exampleTable(
    	bytecol byte(10)
    );
    
    insert into exampleTable values ('2B'XB);
    
    select bytes(bytecol) from exampleTable;
    -- Will return 10, the size of bytecol
    
    Copy

    Entsprechender Code in Snowflake:

    CREATE OR REPLACE TABLE exampleTable (
    	bytecol BINARY
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    INSERT INTO exampleTable
    VALUES (TO_BINARY('2B'));
    
    SELECT
    	LENGTH(bytecol) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0051 - TERADATA BYTES FUNCTION RESULTS DIFFER FROM SNOWFLAKE LENGTH FUNCTION FOR BYTE TYPE COLUMNS ***/!!! from
    	exampleTable;
    	-- Will return 10, the size of bytecol
    
    Copy

    Beispielcode:

    Eingabecode:

    create table sampleTable(
        byteColumn byte(10),
        varbyteColumn varbyte(15)
    );
    
    select bytes(byteColumn), bytes(varbyteColumn) from sampleTable;
    
    Copy

    Ausgabecode:

    CREATE OR REPLACE TABLE sampleTable (
        byteColumn BINARY,
        varbyteColumn BINARY(15)
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    SELECT
        LENGTH(byteColumn) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0051 - TERADATA BYTES FUNCTION RESULTS DIFFER FROM SNOWFLAKE LENGTH FUNCTION FOR BYTE TYPE COLUMNS ***/!!!,
        LENGTH(varbyteColumn) from
        sampleTable;
    
    Copy

    Empfehlungen

    • Die Ergebnisanalyse der Funktion BYTES zeigt, dass die Snowflake-Funktion LENGTH bereits das gewünschte Verhalten bietet, sodass keine Änderungen erforderlich sind.

    • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

    SSC-EWI-TD0034

    Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.

    Schweregrad

    Niedrig

    Beschreibung

    Das Ausführen mehrerer SQL-Anweisungen in einer einzigen Anfrage wird nicht unterstützt. Ihre Anfrage wurde als eine einzige Transaktion bearbeitet.

    Diese EWI-Meldung (Error, Warning, Information) erscheint nur, wenn das PLTargetLanguage-Flag mit dem folgenden Befehl auf Javascript gesetzt wurde: ‚–PLTargetLanguage Javascript‘

    Beispielcode

    Eingabe:

    -- Additional Params: --PLTargetLanguage Javascript
    REPLACE PROCEDURE proc1()
      BEGIN
        BEGIN REQUEST;
          SELECT* FROM TABLE1;
        END REQUEST;
    END;
    
    Copy

    Ausgabe:

    CREATE OR REPLACE PROCEDURE proc1 ()
    RETURNS STRING
    LANGUAGE JAVASCRIPT
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    EXECUTE AS CALLER
    AS
    $$
      // SnowConvert Helpers Code section is omitted.
    
      var TRANSACTION_HANDLER = function (error) {
        throw error;
      };
      // ** SSC-EWI-TD0034 - MULTISTATEMENT SQL EXECUTION NOT SUPPORTED, REQUEST HANDLED AS TRANSACTION **
      try {
        EXEC(`BEGIN`);
        EXEC(`SELECT
       *
    FROM
       TABLE1`,[],undefined,TRANSACTION_HANDLER);
        EXEC(`COMMIT`);
      } catch(error) {
        EXEC(`ROLLBACK`);
      }
    $$;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0024

    Schweregrad

    Niedrig

    Beschreibung

    Diese Warnung erscheint, wenn eine AGGREGATE-Funktion innerhalb einer auskommentierten ABORT-Anweisung innerhalb einer gespeicherten Prozedur verwendet wird.

    Beispielcode

    Teradata:

    REPLACE PROCEDURE ABORT_SAMPLE()
    BEGIN
        ABORT WHERE SUM(TABLE1.COL1) < 2;
    END;
    
    Copy

    Snowflake Scripting:

    CREATE OR REPLACE PROCEDURE ABORT_SAMPLE()
    RETURNS VARCHAR
    LANGUAGE SQL
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    EXECUTE AS CALLER
    AS
    $$
        BEGIN
            !!!RESOLVE EWI!!! /*** SSC-EWI-TD0024 - ABORT STATEMENT IS NOT SUPPORTED DUE TO AN AGGREGATE FUNCTION ***/!!!
            ABORT WHERE SUM(TABLE1.COL1) < 2;
        END;
    $$;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0010

    Schweregrad

    Niedrig

    Beschreibung

    Das Spaltenattribut UPPERCASE, das für die Umwandlung von Text in Großbuchstaben verwendet wird, ist in Snowflake nicht verfügbar.

    Beispielcode

    Teradata:

    CREATE TABLE T_2010
    (
        col1 VARCHAR(1) UPPERCASE
    );
    
    Copy

    Snowflake Scripting:

    CREATE OR REPLACE TABLE T_2010 (
        col1 VARCHAR(1)
                        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0010 - UPPERCASE NOT SUPPORTED BY SNOWFLAKE ***/!!!
     UPPERCASE
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    Copy

    Empfehlungen

    • Die UPPERCASE-Klausel wandelt beim Speichern von Daten Kleinbuchstaben in Großbuchstaben um. Zum Beispiel wird „aaa“ als „AAA“ gespeichert. Um dies zu handhaben, können Sie die UPPER-Funktion zu allen INSERT-Anweisungen hinzufügen. Beachten Sie jedoch, dass Sie auch alle ETL-Prozesse, die externe Daten laden, anpassen müssen.

    • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

    SSC-EWI-TD0041

    Schweregrad

    Niedrig

    Beschreibung

    Das von Ihnen angegebene Dateiformat wird vom System nicht unterstützt.

    Beispielcode

    Eingabe:

    SELECT
        cast(T_2041.integer_column as integer);
    
    Copy

    Ausgabe:

    SELECT
        cast(TRUNC(T_2041.integer_column) as integer) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0041 - TRUNC FUNCTION WAS ADDED TO ENSURE INTEGER. MAY NEED CHANGES IF NOT NUMERIC OR STRING. ***/!!!;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0061

    Schweregrad

    Niedrig

    Beschreibung

    SnowConvert unterstützt oder transformiert nicht die Funktion TD_UNPIVOT, die Spalten in Zeilen einer Tabelle umwandelt.

    Diese Transformation benötigt Informationen über die Spaltennamen in der/den Tabelle(n), um korrekt zu funktionieren. Wenn diese Informationen nicht verfügbar sind, kann die Umwandlung unvollständig sein, und es können Spalten im Ergebnis fehlen. In solchen Fällen wird eine EWI-Meldung (Error, Warning, Information) erzeugt.

    Beispielcode

    Eingabecode:

    CREATE TABLE unpivotTable  (
    	myKey INTEGER NOT NULL PRIMARY KEY,
    	firstSemesterIncome DECIMAL(10,2),
    	secondSemesterIncome DECIMAL(10,2),
    	firstSemesterExpenses DECIMAL(10,2),
    	secondSemesterExpenses DECIMAL(10,2)
    );
    
    SELECT * FROM
     TD_UNPIVOT(
     	ON unpivotTable
     	USING
     	VALUE_COLUMNS('Income', 'Expenses')
     	UNPIVOT_COLUMN('Semester')
     	COLUMN_LIST('firstSemesterIncome, firstSemesterExpenses', 'secondSemesterIncome, secondSemesterExpenses')
     	COLUMN_ALIAS_LIST('First', 'Second')
     )X ORDER BY mykey;
    
    SELECT * FROM
     TD_UNPIVOT(
     	ON unknownTable
     	USING
     	VALUE_COLUMNS('MonthIncome')
     	UNPIVOT_COLUMN('Months')
     	COLUMN_LIST('januaryIncome', 'februaryIncome', 'marchIncome', 'aprilIncome')
     	COLUMN_ALIAS_LIST('January', 'February', 'March', 'April')
     )X ORDER BY yearKey;
    
    Copy

    Ausgabecode:

    CREATE OR REPLACE TABLE unpivotTable (
    	myKey INTEGER NOT NULL PRIMARY KEY,
    	firstSemesterIncome DECIMAL(10,2),
    	secondSemesterIncome DECIMAL(10,2),
    	firstSemesterExpenses DECIMAL(10,2),
    	secondSemesterExpenses DECIMAL(10,2)
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    --** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "VALUE_COLUMNS", "UNPIVOT_COLUMN", "COLUMN_LIST", "COLUMN_ALIAS_LIST" **
    SELECT
    	* FROM
    	(
    		SELECT
    			myKey,
    			TRIM(GET_IGNORE_CASE(OBJECT_CONSTRUCT('FIRSTSEMESTERINCOME', 'First', 'FIRSTSEMESTEREXPENSES', 'First', 'SECONDSEMESTERINCOME', 'Second', 'SECONDSEMESTEREXPENSES', 'Second'), Semester), '"') AS Semester,
    			Income,
    			Expenses
    		FROM
    			unpivotTable UNPIVOT(Income FOR Semester IN (
    				firstSemesterIncome,
    				secondSemesterIncome
    			)) UNPIVOT(Expenses FOR Semester1 IN (
    				firstSemesterExpenses,
    				secondSemesterExpenses
    			))
    		WHERE
    			Semester = 'FIRSTSEMESTERINCOME'
    			AND Semester1 = 'FIRSTSEMESTEREXPENSES'
    			OR Semester = 'SECONDSEMESTERINCOME'
    			AND Semester1 = 'SECONDSEMESTEREXPENSES'
    	) X ORDER BY mykey;
    
    	--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "VALUE_COLUMNS", "UNPIVOT_COLUMN", "COLUMN_LIST", "COLUMN_ALIAS_LIST" **
    	SELECT
    	* FROM
    	!!!RESOLVE EWI!!! /*** SSC-EWI-TD0061 - TD_UNPIVOT TRANSFORMATION REQUIRES COLUMN INFORMATION THAT COULD NOT BE FOUND, COLUMNS MISSING IN RESULT ***/!!!
    	(
    		SELECT
    			TRIM(GET_IGNORE_CASE(OBJECT_CONSTRUCT('JANUARYINCOME', 'January', 'FEBRUARYINCOME', 'February', 'MARCHINCOME', 'March', 'APRILINCOME', 'April'), Months), '"') AS Months,
    			MonthIncome
    		FROM
    			unknownTable UNPIVOT(MonthIncome FOR Months IN (
    				januaryIncome,
    				februaryIncome,
    				marchIncome,
    				aprilIncome
    			))
    	) X ORDER BY yearKey;
    
    Copy

    Empfehlungen

    • Sie können dem Konvertierungstool Spalteninformationen auf eine der beiden folgenden Arten zur Verfügung stellen:

      • Fügen Sie die Tabellenspezifikation in dieselbe Datei ein wie den Aufruf von TD_UNPIVOT.

      • Listen Sie bestimmte Spalten in der SELECT-Abfrage des ON-Ausdrucks auf, anstatt SELECT * oder nur den Tabellennamen zu verwenden.

    • Wenn Sie ALLE Spalten aus den Eingabetabellen entpivotieren, können Sie dieses Problem ignorieren. Wenn Sie jedoch nur einige Spalten entpivotieren, führt dies zu fehlenden Daten.

    • Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com

    SSC-EWI-TD0004

    Schweregrad

    Niedrig

    Beschreibung

    Snowflake-Prozeduren haben keine direkte Entsprechung für die CONTINUE HANDLER-Funktionalität von Teradata. SnowConvert kann zwar mit einigen Ausnahmecodes umgehen und ein ähnliches Verhalten emulieren, erzeugt jedoch eine EWI-Meldung (Error, Warning, Information), wenn es in CONTINUE HANDLER-Anweisungen auf nicht unterstützte Ausnahmecodes trifft.

    Beispielcode

    Teradata:

    REPLACE PROCEDURE PURGING_ADD_TABLE
    (
     IN inDatabaseName     	VARCHAR(30),
     IN inTableName    		VARCHAR(30)
    )
    BEGIN
     DECLARE vCHAR_SQLSTATE CHAR(5);
     DECLARE vSUCCESS       CHAR(5);
    
      DECLARE CONTINUE HANDLER FOR SQLSTATE 'UNSUPPORTED'
      BEGIN
         SET vCHAR_SQLSTATE = SQLCODE;
         SET vSUCCESS    = SQLCODE;
      END;
    
      SELECT 1;
    
    END;
    
    Copy

    Snowflake Scripting:

    CREATE OR REPLACE PROCEDURE PURGING_ADD_TABLE
    (INDATABASENAME VARCHAR(30), INTABLENAME VARCHAR(30)
    )
    RETURNS VARCHAR
    LANGUAGE SQL
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "07/04/2024" }}'
    EXECUTE AS CALLER
    AS
    $$
     DECLARE
      vCHAR_SQLSTATE CHAR(5);
      vSUCCESS       CHAR(5);
     BEGIN
    
    
      !!!RESOLVE EWI!!! /*** SSC-EWI-TD0004 - NOT SUPPORTED SQL EXCEPTION ON CONTINUE HANDLER ***/!!!
    
      DECLARE CONTINUE HANDLER FOR SQLSTATE 'UNSUPPORTED'
      BEGIN
       vCHAR_SQLSTATE := SQLCODE;
       vSUCCESS := SQLCODE;
      END;
      SELECT
       1;
     END;
    $$;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0055

    Diese EWI-Meldung (Error, Warning, Issue) wird nicht mehr unterstützt. Aktuelle Informationen entnehmen Sie bitte der Dokumentation zu SSC-FDM-TD0029.

    Formatierungselemente, die von Sitzungsparametern abhängen

    Die folgenden Teradata-Formatelemente sind Snowflake-Funktionen zugeordnet, die bestimmte Sitzungsparametereinstellungen erfordern. Um konsistente Ergebnisse zwischen Teradata und Snowflake zu gewährleisten, müssen Sie diese Sitzungsparameter so konfigurieren, dass sie mit Ihren Teradata-Einstellungen übereinstimmen:

    • D: Der Funktion DAYOFWEEK zugeordnet. Beachten Sie, dass die Ergebnisse zwischen Teradata und Snowflake aufgrund der unterschiedlichen Standardeinstellungen abweichen können. Teradata verwendet den Sonntag als ersten Tag der Woche, während Snowflake den Montag verwendet.

    • WW: Der Funktion WEEK zugeordnet. Die Ergebnisse können aufgrund unterschiedlicher Richtlinien für die Wochenberechnung abweichen. Snowflake verwendet standardmäßig den ISO-Standard (die erste Woche muss mindestens vier Tage im Januar enthalten), während Teradata den 1. Januar als Beginn der ersten Woche betrachtet.

    Um Sitzungsparameter zu ändern, verwenden Sie den Befehl ALTER SESSION SET parameter_name = value. Weitere Einzelheiten zu den verfügbaren Sitzungsparametern und ihrer Verwendung finden Sie auf dieser Seite.

    Ein-Parameter-Version von TO_CHAR

    Die Funktion TO_CHAR(Datetime) mit einem einzigen Parameter verwendet die in Ihren Sitzungsparametern definierten Standardformate für Datum und Uhrzeit. Diese Parameter umfassen:

    • TIMESTAMP_LTZ_OUTPUT_FORMAT

    • TIMESTAMP_NTZ_OUTPUT_FORMAT

    • TIMESTAMP_TZ_OUTPUT_FORMAT

    • TIME_OUTPUT_FORMAT

    Um ein konsistentes Verhalten zwischen Teradata und Snowflake zu gewährleisten, stellen Sie sicher, dass diese Parameter mit Ihren Teradata-Einstellungen übereinstimmen.

    Bei der Konvertierung von numerischen Werten in Zeichenfolgen mit TO_CHAR(Numeric) verwendet Snowflake automatisch entweder das Format TM9 oder TME, um eine kompakte Zeichenfolgendarstellung zu erzeugen. Da Teradata standardmäßig auch kompakte Zahlendarstellungen erstellt, ist keine zusätzliche Formatierung erforderlich.

    Beispielcode

    Eingabecode:

    select to_char(date '2008-09-13', 'DD/RM/YYYY');
    
    select to_char(date '2010-10-20', 'DS');
    
    select to_char(1255.495, 'SC9999.9999', 'nls_iso_currency = ''EUR''');
    
    select to_char(45620);
    
    Copy

    Ausgabecode:

    SELECT
    TO_CHAR(date '2008-09-13', 'DD/') || PUBLIC.ROMAN_NUMERALS_MONTH_UDF(date '2008-09-13') || TO_CHAR(date '2008-09-13', '/YYYY') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0055 - SNOWFLAKE SUPPORTED FORMATS FOR TO_CHAR DIFFER FROM TERADATA AND MAY FAIL OR HAVE DIFFERENT BEHAVIOR ***/!!!;
    
    SELECT
    TO_CHAR(date '2010-10-20', 'MM/DD/YYYY') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0055 - SNOWFLAKE SUPPORTED FORMATS FOR TO_CHAR DIFFER FROM TERADATA AND MAY FAIL OR HAVE DIFFERENT BEHAVIOR ***/!!!;
    
    SELECT
    PUBLIC.INSERT_CURRENCY_UDF(TO_CHAR(1255.495, 'S9999.0000'), 2, 'EUR') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0055 - SNOWFLAKE SUPPORTED FORMATS FOR TO_CHAR DIFFER FROM TERADATA AND MAY FAIL OR HAVE DIFFERENT BEHAVIOR ***/!!!;
    
    SELECT
    TO_CHAR(45620) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0055 - SNOWFLAKE SUPPORTED FORMATS FOR TO_CHAR DIFFER FROM TERADATA AND MAY FAIL OR HAVE DIFFERENT BEHAVIOR ***/!!!;
    
    Copy

    Empfehlungen

    • Wenn Sie mit Formatfunktionen (FF) arbeiten, verwenden Sie DateTime-Typen, die mit der Genauigkeit von Teradata übereinstimmen, oder geben Sie eine Genauigkeit im FORMAT-Element an, um ein konsistentes Verhalten zu gewährleisten.

    • Stellen Sie bei der Formatierung der Zeitzone sicher, dass der erste Parameter vom Typ TIMESTAMP_TZ ist, um konsistente Ergebnisse zu erzielen. Beachten Sie, dass der Datentyp TIME von Snowflake keine Zeitzoneninformationen unterstützt.

    • Konfigurieren Sie die Sitzungsparameter so, dass sie mit den Standardwerten von Teradata übereinstimmen, um ein einheitliches Verhalten zu gewährleisten.

    • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com

    SSC-EWI-TD0082

    Schweregrad

    Medium

    Beschreibung

    Die Translate-Funktion mit den aktuellen Codierungsparametern kann in Snowflake nicht verwendet werden. Während des Übersetzungsprozesses wird diese Funktion auskommentiert.

    Beispielcode

    Eingabecode:

    SELECT Translate('abc' USING KANJISJIS_TO_LATIN);
    
    Copy

    Ausgabecode

    SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0082 - TRANSLATE FUNCTION USING KANJISJIS_TO_LATIN ENCODING IS NOT SUPPORTED ***/!!!
    Translate('abc' USING KANJISJIS_TO_LATIN);
    
    Copy

    Empfehlungen

    SSC-EWI-TD0020

    Diese Warnmeldung ist nicht mehr in Gebrauch. Die aktuelle Dokumentation finden Sie unter SSC-EWI-0009.

    Schweregrad

    Niedrig

    Beschreibung

    Snowflake unterstützt derzeit nur die POSIX Basic Regular Expression-Syntax. Erweiterte Features regulärer Ausdrücke sind nicht verfügbar.

    Diese Warnung erscheint immer dann, wenn ein Funktionsaufruf von _REGEX_SUBSTR, REGEX_REPLACE _ oder REGEX_INSTR in Snowflake konvertiert wird. Sie weist Benutzer darauf hin, dass einige Features für reguläre Ausdrücke in Snowflake möglicherweise nicht unterstützt werden. Wichtige nicht unterstützte Features:

    • lookahead

    • lookbehind

    • non-capturing groups

    Beispielcode

    Teradata:

    SELECT REGEXP_SUBSTR('qaqequ','q(?=u)', 1, 1);
    
    Copy

    Snowflake Scripting:

    SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0020 - REGEXP_SUBSTR FUNCTION ONLY SUPPORTS POSIX REGULAR EXPRESSIONS ***/!!!
    REGEXP_SUBSTR('qaqequ','q(?=u)', 1, 1);
    
    Copy

    Empfehlungen

    • Überprüfen Sie jedes Muster eines regulären Ausdrucks, um festzustellen, ob manuelle Anpassungen erforderlich sind. Weitere Einzelheiten über die Regex-Funktionen von Snowflake und alternative Optionen finden Sie hier.

    • Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.

    SSC-EWI-TD0060

    Teile des Ausgabecodes wurden entfernt, um das Beispiel übersichtlicher und leichter nachvollziehbar zu machen.

    Schweregrad

    Niedrig

    Beschreibung

    Das Tool SnowConvert kann die Funktion JSON_TABLE umwandeln, aber es muss die spezifischen Spaltennamen kennen, die in der Unterabfrage JSON_TABLE ON ausgewählt werden, um die Umwandlung korrekt durchzuführen.

    Diese Warnung erscheint, wenn Spaltennamen in einer Unterabfrage nicht explizit angegeben werden (z. B. bei Verwendung von SELECT *) und das System die Strukturinformationen der Tabelle nicht finden kann. Ohne diese Informationen können die Spaltennamen nicht automatisch ermittelt werden.

    Wie Sie JSON-Daten in eine Tabelle laden können, erfahren Sie auf unserer Dokumentationsseite.

    Beispielcode

    Eingabecode:

    CREATE TABLE demo.Train (
        firstCol INT,
        jsonCol JSON(400),
        thirdCol VARCHAR(30)
    );
    
    SELECT * FROM JSON_TABLE
    (ON (SELECT T.*
               FROM demo.Train T)
    USING rowexpr('$.schools[*]')
                   colexpr('[ {"jsonpath" : "$.name",
                               "type" : "CHAR(20)"},
                              {"jsonpath" : "$.type",
                               "type" : "VARCHAR(20)"}]')
    )
    AS JT;
    
    SELECT * FROM JSON_TABLE
    (ON (SELECT T.*
               FROM demo.missingTable T)
    USING rowexpr('$.schools[*]')
                   colexpr('[ {"jsonpath" : "$.name",
                               "type" : "CHAR(20)"},
                              {"jsonpath" : "$.type",
                               "type" : "VARCHAR(20)"}]')
    )
    AS JT;
    
    Copy

    Ausgabecode:

    CREATE OR REPLACE TABLE demo.Train (
        firstCol INT,
        jsonCol VARIANT,
        thirdCol VARCHAR(30)
    )
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "12/16/2024",  "domain": "test" }}'
    ;
    
    SELECT
        * FROM
        (
            SELECT
                firstCol,
                rowexpr.value:name :: CHAR(20) AS Column_0,
                rowexpr.value:type :: VARCHAR(20) AS Column_1,
                thirdCol
            FROM
                demo.Train T,
                TABLE(FLATTEN(INPUT => jsonCol:schools)) rowexpr
        ) JT;
    
        SELECT
        * FROM
        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0060 - JSON_TABLE NOT TRANSFORMED, COLUMN NAMES COULD NOT BE RETRIEVED FROM SEMANTIC INFORMATION ***/!!! JSON_TABLE
       (ON (
            SELECT
                T.*
                      FROM
                demo.missingTable T)
       USING rowexpr('$.schools[*]')
                      colexpr('[ {"jsonpath" : "$.name",
                               "type" : "CHAR(20)"},
                              {"jsonpath" : "$.type",
                               "type" : "VARCHAR(20)"}]')
       )
       AS JT;
    
    Copy

    Empfehlungen

    • Stellen Sie sicher, dass Sie die Tabellendefinitionen einbeziehen, wenn Sie Code für SnowConvert bereitstellen. Ohne sie müssen Sie den Code erneut ausführen.

    • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com

    SSC-EWI-TD0031

    Schweregrad

    Niedrig

    Beschreibung

    Beim Vergleich von CHAR-Datentypen in Teradata und Snowflake ist ein wichtiger Unterschied zu beachten. In Teradata ist CHAR von fester Länge, was bedeutet, dass die Funktion LIKE versucht, die gesamte Spaltenlänge zu vergleichen, einschließlich der nachstehenden Leerzeichen. Dies kann zu unerwarteten Ergebnissen führen. Im Gegensatz dazu ist der Typ CHAR von Snowflake von variabler Länge, sodass die Funktion LIKE nur einen Vergleich mit dem tatsächlichen gespeicherten Wert durchführt, ohne nachstehende Leerzeichen zu berücksichtigen. Hier ist ein Beispiel, um dieses Verhalten zu demonstrieren:

    Beispielcode

    Eingabe:

    CREATE TABLE table1
    (
        col1 VARCHAR(36),
        col2 CHAR(36)
    );
    
    INSERT INTO table1 VALUES ('Gabriel', 'Gabriel');
    INSERT INTO table1 VALUES ('Barnum', 'Barnum');
    INSERT INTO table1 VALUES ('Sergio', 'Sergio');
    
    SELECT col1 FROM table1 where col1 LIKE 'Barnum';
    -- The result is a single row with 'Barnum'
    SELECT col2 FROM table1 where col2 LIKE 'Barnum';
    -- It does not return any row
    
    Copy

    Ausgabe:

    CREATE OR REPLACE TABLE table1
    (
        col1 VARCHAR(36),
        col2 CHAR(36)
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    INSERT INTO table1
    VALUES ('Gabriel', 'Gabriel');
    
    INSERT INTO table1
    VALUES ('Barnum', 'Barnum');
    
    INSERT INTO table1
    VALUES ('Sergio', 'Sergio');
    
    SELECT
        col1 FROM
        table1
    where col1 LIKE 'Barnum';
    -- The result is a single row with 'Barnum'
        SELECT
        col2 FROM
        table1
        where
        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0031 - THE RESULT OF LIKE MAY DIFFER DUE TO CHAR TYPE HAVING A FIXED LENGTH IN TERADATA ***/!!! col2 LIKE 'Barnum';
        -- It does not return any row
    
    Copy

    Empfehlungen

    SSC-EWI-TD0005

    Schweregrad

    Kritisch

    Beschreibung

    Der Code wurde erfolgreich konvertiert, funktioniert aber möglicherweise nicht wie vorgesehen, da dieses Feature noch nicht vollständig implementiert wurde.

    Die Warnung weist die Benutzer darauf hin, dass die Verwendung dieser Anweisung zu einer Funktionalität führt, die sich von der des ursprünglichen Skripts unterscheidet.

    Beispielquellcode

    BTEQ-Eingabecode:

    .SET SIDETITLES ON
    
    Copy

    Python-Ausgabecode:

    #*** Generated code is based on the SnowConvert Python Helpers version 2.0.6 ***
    
    import os
    import sys
    import snowconvert.helpers
    from snowconvert.helpers import Export
    from snowconvert.helpers import exec
    from snowconvert.helpers import BeginLoading
    con = None
    def main():
      snowconvert.helpers.configure_log()
      con = snowconvert.helpers.log_on()
      #** SSC-EWI-TD0005 - THE STATEMENT WAS CONVERTED BUT ITS FUNCTIONALITY IS NOT IMPLEMENTED YET **
      Export.side_titles(True)
      snowconvert.helpers.quit_application()
    
    if __name__ == "__main__":
      main()
    
    Copy

    Empfehlungen

    SSC-EWI-TD0083

    Teile des Ausgabecodes wurden entfernt, um ihn leichter verständlich zu machen.

    Schweregrad

    Medium

    Beschreibung

    SnowConvert kann nicht mehrere komplexe SELECT-Anweisungen gleichzeitig verarbeiten. Diese Beschränkung besteht, weil die Konvertierung dieser Anweisungen entweder eine Zuordnung zu allgemeinen Tabellenausdrücken (Common Table Expressions, CTEs) oder zu zusammengesetzten FROM-Klauseln erfordert, was zu Kompilierungsfehlern oder logischen Endlosschleifen führen kann.

    Was verstehen wir unter einer komplexen SELECT-Klausel?

    Anweisungen, die einem allgemeinen Tabellenausdruck (Common Table Expression, CTE) oder einer zusammengesetzten FROM-Klausel zugeordnet werden müssen, einschließlich NORMALIZE-, EXPAND ON- und RESET WHEN-Funktionen.

    Beispielcode

    Eingabecode:

    SELECT
       NORMALIZE emp_id,
       duration,
       dept_id,
       balance,
       (
         ROW_NUMBER() OVER (
           PARTITION BY emp_id
           ORDER BY
             dept_id RESET WHEN balance <= SUM(balance) OVER (
               PARTITION BY emp_id
               ORDER BY dept_id
               ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING
             )
         ) -1
       ) AS balance_increase
    FROM project
    EXPAND ON duration AS bg BY ANCHOR ANCHOR_SECOND
    ORDER BY 1, 2;
    
    Copy

    Ausgabecode

    // SnowConvert Helpers Code section is omitted.
    SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0083 - NOT ABLE TO TRANSFORM TWO OR MORE COMPLEX SELECT CLAUSES AT A TIME ***/!!!
    NORMALIZE emp_id,
       duration,
       dept_id,
       balance,
       (
         ROW_NUMBER() OVER (
       PARTITION BY
          emp_id, new_dynamic_part
       ORDER BY
             dept_id
         ) -1
       ) AS balance_increase
    FROM
       (
          SELECT
             emp_id,
             duration,
             dept_id,
             balance,
             previous_value,
             SUM(dynamic_part) OVER (
                     PARTITION BY emp_id
                     ORDER BY dept_id
             ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
                   ) AS new_dynamic_part
          FROM
             (
                SELECT
                   emp_id,
                   duration,
                   dept_id,
                   balance,
                   SUM(balance) OVER (
                           PARTITION BY emp_id
                           ORDER BY dept_id
                           ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING
                         ) AS previous_value,
                   (CASE
                      WHEN balance <= previous_value
                         THEN 1
                      ELSE 0
                   END) AS dynamic_part
                FROM
                   project
             )
       )
    !!!RESOLVE EWI!!! /*** SSC-EWI-TD0083 - NOT ABLE TO TRANSFORM TWO OR MORE COMPLEX SELECT CLAUSES AT A TIME ***/!!!
    EXPAND ON duration AS bg BY ANCHOR ANCHOR_SECOND
    ORDER BY 1, 2;
    
    Copy

    Empfehlungen

    SSC-EWI-TD0070

    Diese EWI-Meldung (Error, Warning, Issue) wird nicht mehr unterstützt. Aktuelle Informationen entnehmen Sie bitte der Dokumentation zu SSC-FDM-TD0030.

    Schweregrad

    Medium

    Beschreibung

    Wenn SC eine GOTO-Anweisung durch einen LABEL-Abschnitt ersetzt, fügt es automatisch eine RETURN-Anweisung am Ende des Abschnitts ein, falls eine solche nicht vorhanden ist. Dadurch wird sichergestellt, dass der Ausführungsfluss des Programms derselbe bleibt wie im ursprünglichen Code.

    Wenn ein BTEQ-GOTO-Befehl ausgeführt wird, werden alle Anweisungen zwischen dem GOTO-Befehl und dem entsprechenden LABEL übersprungen. Um eine unbeabsichtigte Ausführung nach Erreichen des LABEL zu verhindern, sollten Sie eine RETURN-Anweisung in den LABEL-Abschnitt einfügen.

    Es ist wichtig zu wissen, dass bei der Ausführung eines GOTO-Befehls alle Anweisungen übersprungen werden, bis das passende LABEL erreicht wird. Die Programmausführung wird dann von diesem LABEL aus fortgesetzt. LABEL-Abschnitte, die vor dem GOTO-Befehl definiert wurden, werden nie ausgeführt.

    Beispielcode

    Eingabecode:

    -- Additional Params: --scriptsTargetLanguage SnowScript
    .LOGON dbc,dbc;
    select 'STATEMENTS';
    .GOTO LABEL_B
    select 'IGNORED STATEMENTS';
    .label LABEL_B
    select 'LABEL_B STATEMENTS';
    
    Copy

    Ausgabecode

    EXECUTE IMMEDIATE
    $$
      DECLARE
        STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
      BEGIN
        --.LOGON dbc,dbc
        !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'BTLogOn' NODE ***/!!!
        null;
        BEGIN
          SELECT
            'STATEMENTS';
          STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
        EXCEPTION
          WHEN OTHER THEN
            STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
        END;
    
        /*.label LABEL_B*/
    
        BEGIN
          SELECT
            'LABEL_B STATEMENTS';
          STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
        EXCEPTION
          WHEN OTHER THEN
            STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
        END;
        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0070 - A RETURN STATEMENT WAS ADDED AT THE END OF THE LABEL SECTION LABEL_B TO ENSURE THE SAME EXECUTION FLOW ***/!!!
        RETURN 0;
        BEGIN
          SELECT
            'IGNORED STATEMENTS';
          STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
        EXCEPTION
          WHEN OTHER THEN
            STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
        END;
        /*.label LABEL_B*/
        --** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE.  **
    
        BEGIN
          SELECT
            'LABEL_B STATEMENTS';
          STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
        EXCEPTION
          WHEN OTHER THEN
            STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
        END;
      END
    $$
    
    Copy

    Empfehlungen

    SSC-EWI-TD0001

    Teile des Ausgabecodes wurden entfernt, um ihn leichter verständlich zu machen.

    Schweregrad

    Niedrig

    Beschreibung

    Diese Warnung erscheint, wenn SnowConvert rekursive Muster in Alias-Ausdrücken identifiziert. In solchen Fällen kann SnowConvert die Vorwärts-Alias-Transformation nicht durchführen, die notwendig ist, damit Aliase in Snowflake richtig funktionieren.

    Ein rekursiver Alias liegt vor, wenn zwei oder mehr Aliase in einem kreisförmigen Muster einander referenzieren. Dies kann direkt geschehen, wenn Alias A auf Alias B und Alias B auf Alias A verweist, oder indirekt (transitiv), wenn der Zirkelverweis über mehrere Zwischenaliase erfolgt.

    Beispielcode

    Hinweis: Snowflake unterstützt zwar im Allgemeinen keine rekursiven Aliase, aber einige einfache Fälle werden unterstützt.

    Hinweis: Snowflake unterstützt im Allgemeinen keine rekursiven Aliase. Einige einfache Fälle werden jedoch unterstützt, wie die folgenden Beispiele zeigen.

    Der folgende Code zeigt die erfolgreiche Ausführung in Snowflake nach Abschluss des Migrationsprozesses:

    Teradata:

    SELECT
        COL1 AS COL2,
        COL2 AS COL1
    FROM
        TABLE_EXAMPLE;
    
    Copy

    Snowflake Scripting:

    // SnowConvert Helpers Code section is omitted.
    SELECT
        COL1 AS COL2,
        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0001 - 'COL1' HAS RECURSIVE REFERENCES. FORWARD ALIAS CONVERSION COULD NOT BE COMPLETED ***/!!!
        COL2 AS COL1
    FROM
        TABLE_EXAMPLE;
    
    Copy

    Das unten gezeigte Codebeispiel wird nicht ordnungsgemäß ausgeführt:

    Teradata:

    SELECT
        A + B as C,
        COL2 + C AS A,
        COL3 AS B
    FROM
        TABLE_EXAMPLE;
    
    Copy

    Snowflake Scripting:

    // SnowConvert Helpers Code section is omitted.
    SELECT
        !!!RESOLVE EWI!!! /*** SSC-EWI-TD0001 - 'A' HAS RECURSIVE REFERENCES. FORWARD ALIAS CONVERSION COULD NOT BE COMPLETED ***/!!!
        COL2 + C AS A,
        COL3 AS B,
        A + B as C
    FROM
        TABLE_EXAMPLE;
    
    Copy

    Empfehlungen

    • Überprüfen Sie Ihren Code auf rekursive Vorwärts-Aliase. Die EWI-Meldung identifiziert den ersten rekursiven Alias an, aber es kann sein, dass es noch andere in Ihrem Code gibt, die beachtet werden müssen.

    • Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com

    SSC-EWI-TD0087

    Diese Dokumentation wird nicht mehr gepflegt. Aktuelle Informationen finden Sie unter SSC-FDM-TD0026.

    Teile des Codes wurden weggelassen, um das Beispiel klar und übersichtlich zu halten.

    Schweregrad

    Medium

    Beschreibung

    Bei der Replikation der Funktionalität der SQL-Anweisung IF kombinieren Entwickler häufig die Befehle GOTO mit den Befehlen IF und LABEL. Diese Kombinationen können direkt in if-, if-else- oder if-elseif-else-Anweisungen konvertiert werden. In solchen Fällen sollten Sie die GOTO-Befehle entfernen, um zu vermeiden, dass sie durch LABEL-Abschnitte ersetzt werden, da sie dann redundant werden.

    Beispielcode

    Eingabecode:

    -- Additional Params: --scriptsTargetLanguage SnowScript
    .If ActivityCount = 0 THEN .GOTO endIf
    DROP TABLE TABLE1;
    .Label endIf
    SELECT A FROM TABLE1;
    
    Copy

    Ausgabecode

    EXECUTE IMMEDIATE
    $$
      DECLARE
        STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
      BEGIN
        IF (NOT (STATUS_OBJECT['SQLROWCOUNT'] = 0)) THEN
          !!!RESOLVE EWI!!! /*** SSC-EWI-TD0087 - GOTO endIf WAS REMOVED DUE TO IF STATEMENT INVERSION ***/!!!
    
          BEGIN
            DROP TABLE TABLE1;
            STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
          EXCEPTION
            WHEN OTHER THEN
              STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
          END;
        END IF;
        /*.Label endIf*/
        --** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE.  **
    
        BEGIN
          SELECT
            A
          FROM
            TABLE1;
          STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
        EXCEPTION
          WHEN OTHER THEN
            STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
        END;
      END
    $$
    
    Copy

    Empfehlungen

    SSC-EWI-TD0025

    Schweregrad

    Niedrig

    Beschreibung

    Diese Warnung erscheint, wenn Sie eine CAST-Funktion mit einem Ausgabeformat verwenden, das Snowflake Scripting nicht unterstützt.

    Codebeispiel

    Teradata:

    CREATE TABLE SAMPLE_TABLE
    (
        VARCHAR_TYPE VARCHAR
    );
    
    REPLACE VIEW SAMPLE_VIEW
    AS
    SELECT
    CAST(VARCHAR_TYPE AS FLOAT FORMAT 'ZZZ.ZZZZZ'),
    CAST('01:02.030405' AS TIME(1) WITH TIME ZONE FORMAT 'MI:SS.S(6)'),
    CAST('01-12-2020' AS DATE FORMAT 'dd-mm-yyyy')
    FROM SAMPLE_TABLE;
    
    Copy

    Snowflake Scripting:

    CREATE OR REPLACE TABLE SAMPLE_TABLE (
        VARCHAR_TYPE VARCHAR
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    ;
    
    CREATE OR REPLACE VIEW SAMPLE_VIEW
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
    AS
    SELECT
        TO_NUMBER(VARCHAR_TYPE, '999.00000', 38, 10) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0025 - OUTPUT FORMAT 'ZZZ.ZZZZZ' NOT SUPPORTED. ***/!!!,
        TO_TIME('01:02.030405', 'MI:SS.FF6') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0025 - OUTPUT FORMAT 'MI:SS.S(6)' NOT SUPPORTED. ***/!!!,
        TO_DATE('01-12-2020', 'DD-MM-YYYY') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0025 - OUTPUT FORMAT 'dd-mm-yyyy' NOT SUPPORTED. ***/!!!
       FROM
        SAMPLE_TABLE;
    
    Copy

    Empfehlungen

    • Überprüfen Sie, ob der konvertierte Code genauso funktioniert wie der Quellcode.

    • Wenn Sie weitere Hilfe benötigen, wenden Sie sich an unser Support-Team unter snowconvert-support@snowflake.com.

    SSC-EWI-TD0040

    Schweregrad

    Niedrig

    Beschreibung

    Das von Ihnen angegebene Dateiformat wird vom System nicht unterstützt.

    Beispielcode

    Eingabe:

    CREATE TABLE T_2040
    (
        C1 VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC FORMAT 'X(50)',
        C2 VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC FORMAT 'X(75)'
    );
    
    Copy

    Ausgabe:

    CREATE OR REPLACE TABLE T_2040
    (
        C1 VARCHAR(255) COLLATE 'en-cs' FORMAT 'X(50)' !!!RESOLVE EWI!!! /*** SSC-EWI-TD0040 - FORMAT IN TABLE T_2040 NOT SUPPORTED ***/!!!,
        C2 VARCHAR(255) COLLATE 'en-cs' FORMAT 'X(75)' !!!RESOLVE EWI!!! /*** SSC-EWI-TD0040 - FORMAT IN TABLE T_2040 NOT SUPPORTED ***/!!!
    )
    COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "06/17/2024" }}'
    ;
    
    Copy

    Empfehlungen

    -Befehlen funktionieren.