SnowConvert AI – Redshift-Probleme¶
SSC-EWI-RS0002¶
Die Einstellung „Konfigurationsparameter“ wird von Snowflake nicht unterstützt.
Schweregrad¶
Medium
Beschreibung¶
Die Verwendung von SET-Konfigurationsparameter wird von Snowflake nicht unterstützt. Weitere Informationen dazu finden Sie unter Dokumentation zu CREATE PROCEDURE.
Codebeispiele¶
Eingabecode:¶
Redshift¶
CREATE OR REPLACE PROCEDURE procedure2(
IN input_param INTEGER,
OUT output_param NUMERIC
)
AS $$
BEGIN
output_param := input_param * 1.7;
END;
$$
LANGUAGE plpgsql
SET enable_numeric_rounding to ON;
Generierter Code:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE procedure2 (input_param INTEGER, output_param OUT NUMERIC)
RETURNS VARCHAR
LANGUAGE SQL
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0002 - SET CONFIGURATION PARAMETER 'enable_numeric_rounding' IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
SET enable_numeric_rounding to ON
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
BEGIN
output_param := input_param * 1.7;
END;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0003¶
Ansicht ohne Schemabindung kann aufgrund fehlender Referenzen nicht entfernt werden.
Schweregrad¶
Medium
Beschreibung¶
Die Redshift-Dokumentation für CREATE VIEW enthält eine optionale Klausel, die angibt, dass die jeweilige Ansicht weder an die Datenbankobjekte wie Tabellen oder Funktionen noch an die Objekte, auf die sie verweist, gebunden ist. In der Dokumentation wird auch erklärt, dass in Fällen, in denen diese Klausel verwendet wird, die referenzierten Objekte mit einem Schemanamen qualifiziert werden müssen. Mit dieser Klausel können Sie eine Ansicht erstellen und auf Objekte verweisen, die möglicherweise noch nicht vorhanden sind. Ihr Vorhandensein wird überprüft, sobald die Ansicht abgefragt wird, aber nicht bei ihrer Definition.
Es gibt jedoch weder einen gleichwertigen Befehl noch eine offensichtliche Problemumgehung, um diese Funktionalität in Snowflake zu implementieren. Darüber hinaus schlägt die Snowflake-Dokumentation vor, dass die Ansichten mit einem bestimmten Schema verknüpft werden und damit die referenzierten Objekte in der Ansicht sind.
Wenn die mit der Ansicht verknüpften Verweise im Eingabecode vorhanden sind, wird die Anweisung ohne Probleme entfernt. Falls jedoch die erforderlichen Verweise fehlen, wird eine Warnmeldung hinzugefügt, um Benutzende darüber zu informieren, dass die Anweisung aufgrund der fehlenden Verweise nicht entfernt werden kann.
SnowConvert AI führt die Analyse nur für den Eingabecode durch und berücksichtigt nicht Objekte, die bereits in Snowflake bereitgestellt wurden. Daher kann die Ausgabe einige Probleme aufweisen, die auf fehlende Verweise hindeuten. Wenn die Verweise bereits in der Snowflake-Datenbank vorhanden sind, können Benutzende die Anweisung ohne Probleme sicher entfernen.
Codebeispiele¶
Eingabecode:¶
Redshift¶
CREATE VIEW myView AS SELECT col1 FROM public.missingTable
WITH NO SCHEMA BINDING;
Generierter Code:¶
Snowflake¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "public.missingTable" **
CREATE VIEW myView
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "09/17/2024" }}'
AS SELECT col1 FROM
public.missingTable
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0003 - WITH NO SCHEMA BINDING STATEMENT CAN NOT BE REMOVED DUE TO MISSING REFERENCES. ***/!!!
WITH NO SCHEMA BINDING;
Best Practices¶
Um dieses Problem zu beheben, wird empfohlen, die fehlenden Verweise zum Eingabecode hinzuzufügen. Wenn das Objekt bereits in der Snowflake-Datenbank bereitgestellt ist, kann die Anweisung ohne Probleme entfernt werden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0004¶
HLLSKETCH-Datentyp, der von Snowflake nicht unterstützt wird.
Schweregrad¶
Hoch
Beschreibung¶
Dieses Konvertierungsproblem wurde hinzugefügt, weil der HLLSKETCH-Datentyp von Snowflake nicht unterstützt wird.
Codebeispiel¶
Eingabecode:¶
CREATE TABLE table1
(
col_hllsketch HLLSKETCH
);
Generierter Code:¶
CREATE TABLE table1
(
col_hllsketch HLLSKETCH !!!RESOLVE EWI!!! /*** SSC-EWI-RS0004 - HLLSKETCH DATA TYPE NOT SUPPORTED IN SNOWFLAKE. ***/!!!
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "09/17/2024" }}';
Best Practices¶
Überprüfen Sie alle Aggregatfunktionen, die von Snowflake bereitgestellt werden, um die Kardinalität mit HyperLogLog zu schätzen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0005¶
Spaltenaliasse können nicht in der IN-Klausel verwendet werden.
Schweregrad¶
Hoch
Beschreibung¶
Dieses Konvertierungsproblem wurde hinzugefügt, da die Spaltenaliasse in der IN-Klausel der Abfrage PIVOT/UNPIVOT in Snowflake nicht verwendet werden können.
Codebeispiel¶
Eingabecode:¶
SELECT *
FROM count_by_color UNPIVOT (
cnt FOR color IN (red AS r, green AS g, blue AS b)
);
Generierter Code:¶
SELECT *
FROM
count_by_color UNPIVOT (
cnt FOR color IN (red
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0005 - COLUMN ALIASES CANNOT BE USED IN THE IN CLAUSE OF THE PIVOT/UNPIVOT QUERY IN SNOWFLAKE. ***/!!! AS r, green
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0005 - COLUMN ALIASES CANNOT BE USED IN THE IN CLAUSE OF THE PIVOT/UNPIVOT QUERY IN SNOWFLAKE. ***/!!! AS g, blue
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0005 - COLUMN ALIASES CANNOT BE USED IN THE IN CLAUSE OF THE PIVOT/UNPIVOT QUERY IN SNOWFLAKE. ***/!!! AS b)
);
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0006¶
Das Verhalten der SUBSTRING-Funktion kann sich unterscheiden, wenn die Funktion auf Binärdaten angewendet wird.
Schweregrad¶
Medium
Beschreibung¶
Das Verhalten der SUBSTRING-Funktion kann sich unterscheiden, wenn die Funktion auf Binärdaten angewendet wird. Da Redshift und Snowflake binäre Daten unterschiedlich verarbeiten, können die Ergebnisse zwischen den beiden Plattformen variieren.
Codebeispiel¶
Eingabecode:¶
SELECT SUBSTRING('12345'::varbyte, 2, 4) AS substring_binary;
SELECT SUBSTRING('abc'::varbyte, 2, 4) AS substring_binary;
Generierter Code:¶
SELECT SUBSTRING('12345':: BINARY, 2, 4) !!!RESOLVE EWI!!! /*** SSC-EWI-RS0006 - THE BEHAVIOR OF THE SUBSTRING FUNCTION MAY DIFFER WHEN APPLIED TO BINARY DATA. ***/!!! AS substring_binary;
SELECT SUBSTRING('abc':: BINARY, 2, 4) !!!RESOLVE EWI!!! /*** SSC-EWI-RS0006 - THE BEHAVIOR OF THE SUBSTRING FUNCTION MAY DIFFER WHEN APPLIED TO BINARY DATA. ***/!!! AS substring_binary;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0007¶
Datumsliterale werden von Snowflake nicht unterstützt.
Schweregrad¶
Hoch
Beschreibung¶
Einige DATE-, TIME- oder TIMESTAMP-Formate werden von Snowflake nicht unterstützt. Diese Formate können eine manuelle Bearbeitung erfordern.
Codebeispiel¶
Eingabecode:¶
select datediff(century, '2000-Jan-31', 'Jan-31-2000');
Generierter Code:¶
select
DATEDIFF(YEAR,
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0007 - '2000-Jan-31' DATE LITERAL IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
'2000-Jan-31',
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0007 - 'Jan-31-2000' DATE LITERAL IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
'Jan-31-2000') / 100;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0008¶
Datumsliterale werden von Snowflake nicht unterstützt.
Schweregrad¶
Hoch
Beschreibung¶
Dieses Konvertierungsproblem wurde hinzugefügt, da Sie in Redshift die DELETE-Anweisung auf materialisierte Ansichten anwenden können, die für die Streaming-Aufnahme verwendet werden. In Snowflake werden diese Ansichten in dynamische Tabellen umgewandelt, und die DELETE-Anweisung kann nicht für dynamische Tabellen verwendet werden.
Codebeispiel¶
Eingabecode:¶
CREATE MATERIALIZED VIEW mv AS
SELECT id, name, department_id FROM employees WHERE department_id = 101;
DELETE FROM mv
WHERE id = 2;
Generierter Code:¶
CREATE DYNAMIC TABLE mv
--** SSC-FDM-0031 - DYNAMIC TABLE REQUIRED PARAMETERS SET BY DEFAULT **
TARGET_LAG='1 day'
WAREHOUSE=UPDATE_DUMMY_WAREHOUSE
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "03/03/2025", "domain": "test" }}'
AS
SELECT id, name, department_id FROM
employees
WHERE department_id = 101;
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0008 - MATERIALIZED VIEW IS TRANSFORMED INTO A DYNAMIC TABLE, AND THE DELETE STATEMENT CANNOT BE USED ON DYNAMIC TABLES. ***/!!!
DELETE FROM
mv
WHERE id = 2;
Best Practices¶
Da dynamische Tabellen nicht direkt gelöscht werden können, können Sie das gleiche Ergebnis erzielen, indem Sie die Definition der dynamischen Tabellen ersetzen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0009¶
Semantische Informationen für die Quelltabelle wurden nicht gefunden.
Schweregrad¶
Niedrig
Beschreibung¶
MERGE mit der REMOVE DUPLICATES-Klausel wird von Snowflake nicht unterstützt. Um den ursprünglichen Code vollständig zu unterstützen, ist eine Problemumgehung erforderlich. Eine INSERT WHEN NOT MATCHED-Klausel muss im Ausgabecode generiert werden, und es sind die Spalten der Quelltabelle erforderlich. Wenn die Quelltabelle während der Migration nicht gefunden wurde, werden keine Spalten generiert. Es wird ein Fehler ausgegeben.
Codebeispiel¶
Eingabecode:¶
Redshift¶
MERGE INTO target USING source ON target.id = source.id REMOVE DUPLICATES;
Generierter Code:¶
Snowflake¶
CREATE TEMPORARY TABLE source_duplicates AS
SELECT DISTINCT
source.*
FROM
source
INNER JOIN
target
ON target.id = source.id;
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0009 - SEMANTIC INFORMATION NOT FOUND FOR THE SOURCE TABLE. COLUMNS TO BE INSERTED MAY BE ADDED MANUALLY. ***/!!!
--** SSC-FDM-RS0005 - REDSHIFT MERGE STATEMENT DOESN'T ALLOW DUPLICATES IN THE SOURCE TABLE. SNOWFLAKE BEHAVIOR MAY DIFFER IF THERE ARE DUPLICATE VALUES. **
MERGE INTO target
USING source ON target.id = source.id
WHEN MATCHED THEN
DELETE
WHEN NOT MATCHED THEN
INSERT
VALUES ();
INSERT INTO target
SELECT
*
FROM
source_duplicates;
DROP TABLE IF EXISTS source_duplicates CASCADE;
Best Practices¶
Führen Sie eine Suche aus, um zu sehen, ob die Quelltabelle im migrierten Code vorhanden ist, und fügen Sie die Spalten manuell mit der Einfügeoperation hinzu.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-RS0010¶
Ausgabeparameter, die auf der CALL-Einheit der obersten Ebene nicht unterstützt werden.
Schweregrad¶
Niedrig
Beschreibung¶
Redshift lässt die Verwendung von CALL-Anweisungen innerhalb von Ausgabeparametern als Codeeinheiten der obersten Ebene zu, ohne eine Variable zu definieren, die als Ausgabe zugewiesen würde. Snowflake erzwingt die Verwendung einer Variablen, um den Ausgabewert irgendwo festzulegen.
Codebeispiel¶
Eingabecode:¶
Redshift¶
CREATE OR REPLACE PROCEDURE get_total_sales_by_product(
IN p_product_name VARCHAR(100),
OUT p_total_sales DECIMAL(18, 2)
)
AS $$
BEGIN
NULL;
END;
$$ LANGUAGE plpgsql;
CALL get_total_sales_by_product('Laptop');
Generierter Code:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE get_total_sales_by_product (p_product_name VARCHAR(100), p_total_sales OUT DECIMAL(18, 2))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "07/10/2025", "domain": "no-domain-provided" }}'
AS $$
BEGIN
NULL;
END;
$$;
!!!RESOLVE EWI!!! /*** SSC-EWI-RS0010 - Top-level Procedure Call with out parameters is not supported. ***/!!!
CALL get_total_sales_by_product('Laptop');
Best Practices¶
Verschieben Sie den Aufruf in einen anonymen Block, und deklarieren Sie eine Variable, die als Ausgabeparameter übergeben wird.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.