SnowConvert AI - SQL Server-Azure Synapse - ビュー

Applies to
  • SQL Server

  • Azure Synapse Analytics

注釈

わかりやすくするため、出力コードの一部を省略しています。

このセクションでは、create viewの変換を確認します。

サンプルソースパターン

SIMPLE CREATE VIEW

次の例は、単純な CREATE VIEW ステートメントに対する変換を示しています。

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

SqlServer で使用された CREATE OR ALTER 定義は、Snowflakeでは CREATE OR REPLACE に変換されます。

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

このタイプのビューでは、ビュー名の後に以下の句が来ることがあります

  • WITH ENCRYPTION

  • WITH SCHEMABINDING

  • WITH VIEW_METADATA

警告

上記の句は、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

このタイプのビューでは、 WITH CHECK OPTION 句は、Create Viewで使用されるSelectステートメントの終了後に続きます。

警告

Snowflake構文では関係ないため、WITH CHECK OPTION が翻訳から削除されていることに注意してください。

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

データを取得するには、共通テーブル式を使用する必要があります。

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

Update、Insert、またはDeleteステートメントを含む共通テーブル式は、Snowflakeおよび SQLServer ではサポートされていないため、コメントアウトされます。

無効な CTE がビューに追加された場合は、完全にコメントアウトされます。

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

最後のサンプルとして、これまで見てきたケースをまとめて、どのように変換されるかを見てみましょう

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

ご覧のように、 OR ALTEROR REPLACE に変更し、ビュー名の後にある句 WITH ENCRYPTION とSelectの後にある句 WITH CHECK OPTION を削除しました。