SnowConvert AI - SQL Server-Azure Synapse - Exibições

Applies to
  • SQL Server

  • Azure Synapse Analytics

Nota

Algumas partes do código de saída foram omitidas por motivos de clareza.

Nesta seção, verificaremos a transformação para Create View.

Amostra de padrões da origem

SIMPLE CREATE VIEW

O exemplo a seguir mostra uma transformação para uma instrução CREATE VIEW simples.

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

A definição CREATE OR ALTER usada no SqlServer é transformada em CREATE OR REPLACE no Snowflake.

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

Nesse tipo de visualização, após o nome da visualização, podem vir as seguintes cláusulas

  • WITH ENCRYPTION

  • WITH SCHEMABINDING

  • WITH VIEW_METADATA

Aviso

Observe que as cláusulas acima foram removidas da conversão, pois não são relevantes na sintaxe do Snowflake.

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

Nesse tipo de visualização, a cláusula WITH CHECK OPTION vem depois do final da instrução Select usada em Create View.

Aviso

Observe que WITH CHECK OPTIONfoi removido da conversão, pois não é relevante na sintaxe do Snowflake.

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

As expressões de tabela comuns devem ser usadas para recuperar os dados:

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

As expressões de tabela comuns com instruções Update, Insert ou Delete serão comentadas porque não são compatíveis com o Snowflake e o SQLServer.

No caso de um CTE inválido ser adicionado à visualização, ele será completamente comentado.

 --!!!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

Vamos ver um exemplo final, vamos juntar todos os casos que vimos até agora e ver como seria a transformação

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

Como você pode ver, alteramos OR ALTER por OR REPLACE e removemos a cláusula WITH ENCRYPTION que vem depois do nome da visualização e WITH CHECK OPTION que vem depois do Select.