SnowConvert AI – SQL Server – Azure Synapse – Ansichten

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

In diesem Abschnitt werden wir die Transformation für „Create View“ überprüfen.

Beispielhafte Quellcode-Muster

SIMPLE CREATE VIEW

Das folgende Beispiel zeigt eine Transformation für eine einfache CREATE VIEW-Anweisung.

Transact

CREATE VIEW VIEWNAME
AS
SELECT AValue from ATable;
Copy
Snowflake
CREATE OR REPLACE VIEW VIEWNAME
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
AS
SELECT
AValue
from
ATable;
Copy

CREATE OR ALTER VIEW

Die in SqlServer verwendete Definition CREATE OR ALTER wird in Snowflake in CREATE OR REPLACE umgewandelt.

Transact

CREATE OR ALTER VIEW VIEWNAME
AS
SELECT AValue from ATable;
Copy

Snowflake

CREATE OR REPLACE VIEW VIEWNAME
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
AS
SELECT
AValue
from
ATable;
Copy

CREATE VIEW WITH

In dieser Art von Ansicht können nach dem Namen der Ansicht die folgenden Klauseln stehen

  • WITH ENCRYPTION

  • WITH SCHEMABINDING

  • WITH VIEW_METADATA

Warnung

Beachten Sie, dass die oben genannten Klauseln aus der Übersetzung entfernt wurden, da sie in der Snowflake-Syntax nicht relevant sind.

Transact

CREATE OR ALTER VIEW VIEWNAME
WITH ENCRYPTION  
AS
SELECT AValue from ATable;
Copy

Snowflake

CREATE OR REPLACE VIEW VIEWNAME
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
AS
SELECT
AValue
from
ATable;
Copy

CREATE VIEW AS SELECT WITH CHECK OPTION

Bei dieser Art von Ansicht kommt die Klausel WITH CHECK OPTION nach dem Ende der SELECT-Anweisung, die in „Create View“ verwendet wird.

Warnung

Beachten Sie, dass WITH CHECK OPTIONaus der Übersetzung entfernt wurde, da es in der Snowflake-Syntax nicht relevant ist.

Transact

CREATE OR ALTER VIEW VIEWNAME
AS
SELECT AValue from ATable
WITH CHECK OPTION;
Copy

Snowflake

CREATE OR REPLACE VIEW VIEWNAME
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
AS
SELECT
AValue
from
ATable;
Copy

CREATE VIEW AS COMMON TABLE EXPRESSION

Zum Abrufen der Daten müssen allgemeine Tabellenausdrücke verwendet werden:

Transact

CREATE VIEW EMPLOYEEIDVIEW
AS
WITH CTE AS ( SELECT NationalIDNumber from [HumanResources].[Employee] 
UNION ALL 
SELECT BusinessEntityID FROM [HumanResources].[EmployeeDepartmentHistory] )
SELECT * FROM MyCTE;
Copy

Snowflake

CREATE OR REPLACE VIEW EMPLOYEEIDVIEW
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
AS
--** SSC-PRF-TS0001 - PERFORMANCE WARNING - RECURSION FOR CTE NOT CHECKED. MIGHT REQUIRE RECURSIVE KEYWORD **
WITH CTE AS ( SELECT
NationalIDNumber
from
HumanResources.Employee
UNION ALL
SELECT
BusinessEntityID
FROM
HumanResources.EmployeeDepartmentHistory
)
SELECT
*
FROM
MyCTE;
Copy

UNSUPPORTED SCENARIOS

Übliche Tabellenausdrücke mit Update-, Insert- oder DELETE-Anweisungen werden auskommentiert, da sie in Snowflake und SQLServer nicht unterstützt werden.

Wenn der Ansicht eine ungültige CTE hinzugefügt wird, wird diese vollständig auskommentiert.

 --!!!RESOLVE EWI!!! /*** SSC-EWI-0021 - COMMON TABLE EXPRESSION IN VIEW NOT SUPPORTED ***/!!!
--CREATE OR REPLACE VIEW PUBLIC.EmployeeInsertVew
--AS
--WITH MyCTE AS ( SELECT
--NationalIDNumber
--from
--HumanResources.Employee
--UNION ALL
--SELECT
--BusinessEntityID
--FROM
--HumanResources.EmployeeDepartmentHistory
--)
--INSERT INTO PUBLIC.Dummy
Copy

FINAL SAMPLE

Schauen wir uns ein letztes Beispiel an, fassen wir alle Fälle zusammen, die wir bisher gesehen haben, und sehen wir, wie die Transformation aussehen würde

Transact

CREATE OR ALTER VIEW VIEWNAME
WITH ENCRYPTION  
AS  
Select AValue from ATable
WITH CHECK OPTION;  
Copy
Snowflake
CREATE OR REPLACE VIEW VIEWNAME
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
AS
Select
AValue
from
ATable;
Copy

Wie Sie sehen können, haben wir OR ALTER durch OR REPLACE ersetzt und die Klausel WITH ENCRYPTION, die nach dem Namen der Ansicht kommt, sowie die Klausel WITH CHECK OPTION, die nach Select kommt, entfernt.