SnowConvert: Instruções DDL do Teradata

Tabelas

Nota

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

Descrição

A instrução TABLE do Teradata é convertida para a sintaxe do Snowflake TABLE.

Para obter mais informações sobre Teradata TABLEs, acesse aqui.

Amostra de padrões da origem

Criar tabela simples

Teradata

 CREATE TABLE table1, no fallback,
no before journal,
no after journal (
  c1 INTEGER NOT NULL,
	f1 INTEGER NOT NULL,
	p1 INTEGER NOT NULL,
  DATE,
  TIME,
	FOREIGN KEY(f1) REFERENCES WITH CHECK OPTION table2 (d1)
)
UNIQUE PRIMARY INDEX(c1)
PARTITION BY COLUMN(p1);
Copy

Snowflake

 CREATE OR REPLACE TABLE table1 (
	c1 INTEGER NOT NULL,
	f1 INTEGER NOT NULL,
	p1 INTEGER NOT NULL,
	DATE,
	TIME,
	FOREIGN KEY(f1) REFERENCES table2 (d1) ,
	UNIQUE (c1)
)
--** SSC-PRF-0007 - PERFORMANCE REVIEW - CLUSTER BY **
CLUSTER BY (p1)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;
Copy

Cláusula de tipo de tabela - SET e MULTISET

A cláusula kind do Teradata determina se as linhas duplicadas são permitidas (MULTISET) ou não (SET).

Teradata
 -- Set semantics
CREATE SET TABLE table1 (
    column1 INTEGER
);

--Multiset semantics
CREATE MULTISET TABLE table2(
    column1 INTEGER
);
Copy
Snowflake
 -- Set semantics
--** SSC-FDM-TD0024 - SET TABLE FUNCTIONALITY NOT SUPPORTED. TABLE MIGHT HAVE DUPLICATE ROWS **
CREATE OR REPLACE TABLE table1 (
    column1 INTEGER
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;

--Multiset semantics
CREATE OR REPLACE TABLE table2 (
    column1 INTEGER
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;
Copy

Tabelas temporárias voláteis e globais

As tabelas Volatile e Global Temporary do Teradata são usadas para o armazenamento temporário de dados. A diferença está no fato de que a definição da tabela (DDL) das tabelas Global Temporary é mantida no Data Dictionary, enquanto a definição das tabelas Volatile não é armazenada.

Teradata
 --Global Temporary Table
CREATE MULTISET GLOBAL TEMPORARY TABLE table1 (
    column1 INTEGER
);

--Volatile Table
CREATE MULTISET VOLATILE TABLE table3 (
    column1 INTEGER
);
Copy
Snowflake
 --Global Temporary Table
--** SSC-FDM-0009 - GLOBAL TEMPORARY TABLE FUNCTIONALITY NOT SUPPORTED. **
CREATE OR REPLACE TABLE table1 (
    column1 INTEGER
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;

--Volatile Table
CREATE OR REPLACE TEMPORARY TABLE table3 (
    column1 INTEGER
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;
Copy

Com opção de dados e sem dados

Teradata

 -- With data
CREATE TABLE table1 AS table2 WITH DATA

-- With no data
CREATE TABLE table1 AS table2 WITH NO DATA 
Copy

Snowflake

 -- With data
CREATE OR REPLACE TABLE table1 CLONE table2
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;

-- With no data
--** SSC-FDM-0019 - SEMANTIC INFORMATION COULD NOT BE LOADED FOR table1. CHECK IF THE NAME IS INVALID OR DUPLICATED. **
CREATE OR REPLACE TABLE table1 LIKE table2
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
;
Copy

Palavras-chave reservadas e limitadas do Snowflake

O SnowConvert facilita as migrações perfeitas do SQL para o Snowflake, abordando os desafios associados às palavras-chave reservadas. De acordo com a documentação de palavras-chave reservadas e limitadas do Snowflake, certas palavras-chave não podem ser usadas como nomes de colunas, nomes de tabelas ou aliases sem tratamento especial. O SnowConvert inclui funcionalidade para garantir a compatibilidade do código SQL nesses casos.

Palavras-chave ANSI reservadas como nomes de colunas

Para os nomes de coluna que correspondem às palavras-chave reservadas ANSI ou Snowflake ****, o SnowConvert envolve automaticamente o nome da coluna entre aspas duplas (") para cumprir as regras de sintaxe do Snowflake. Esse ajuste garante que as consultas com esses nomes de coluna sejam compiladas corretamente no Snowflake sem a necessidade de intervenção manual.

Exemplo:

 CREATE TABLE ReservedKeywords (
  "CREATE" VARCHAR(50),
  FOLLOWING VARCHAR(50),
  "ILIKE" VARCHAR(50),
  RLIKE VARCHAR(50)
);
Copy

Snowflake

 CREATE OR REPLACE TABLE ReservedKeywords (
    "CREATE" VARCHAR(50),
    "FOLLOWING" VARCHAR(50),
    "ILIKE" VARCHAR(50),
    "RLIKE" VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "11/28/2024",  "domain": "test" }}'
;
Copy

Palavras-chave reservadas específicas do Snowflake

As colunas que correspondem às palavras-chave reservadas específicas do Snowflake (por exemplo, CONSTRAINT, CURRENT_DATE, CURRENT_TIME) ainda podem causar problemas de compilação, mesmo quando colocadas entre aspas. O SnowConvert detecta essas instâncias e gera um aviso com o código SSC-EWI-0045, solicitando que os usuários revisem e, possivelmente, renomeiem essas colunas para fins de compatibilidade.

Exemplo:

 CREATE TABLE ColumnReservedNames (
  "CONSTRAINT" VARCHAR(50),
  "CURRENT_DATE" VARCHAR(50),
  "CURRENT_TIME" VARCHAR(50)
);
Copy

Snowflake

 CREATE OR REPLACE TABLE ColumnReservedNames (
    !!!RESOLVE EWI!!! /*** SSC-EWI-0045 - COLUMN NAME 'CONSTRAINT' IS A SNOWFLAKE RESERVED KEYWORD ***/!!!
    "CONSTRAINT" VARCHAR(50),
    !!!RESOLVE EWI!!! /*** SSC-EWI-0045 - COLUMN NAME 'CURRENT_DATE' IS A SNOWFLAKE RESERVED KEYWORD ***/!!!
    "CURRENT_DATE" VARCHAR(50),
    !!!RESOLVE EWI!!! /*** SSC-EWI-0045 - COLUMN NAME 'CURRENT_TIME' IS A SNOWFLAKE RESERVED KEYWORD ***/!!!
    "CURRENT_TIME" VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "transact",  "convertedOn": "11/28/2024",  "domain": "test" }}'
;
Copy

Problemas conhecidos

1. Create table options not supported

Conforme mostrado no exemplo «Simple Create Table», o Snowflake não oferece suporte às opções de criação de tabela do Teradata. Eles são removidos.

2. Partition by performance issues

No exemplo «Simple Create Table», a instrução partition by foi removida devido a considerações de desempenho.

3. Primary Index moved

No Teradata, a restrição de índice primário é declarada fora da instrução create table, mas no Snowflake é necessário que ela esteja dentro, conforme mostrado no exemplo «Simple Create Table».

4. SET semantics not supported

Conforme mostrado no exemplo «Cláusula de tipo de tabela - SET e MULTISET», o Snowflake não oferece suporte à semântica SET do Teradata. Eles são removidos.

5. Global Temporary table option not supported

Conforme mostrado no exemplo «Tabela temporária volátil e global», o Snowflake não oferece suporte à opção de tabela temporária global do Teradata. Ela será removido.

6. Compress unsupported

COMPRESS (value1. value2, value3) foi removido por não ser suportado.

7. On commit unsupported

On commit é removido por não ter suporte.

8. Block compression unsupported

Block compression foi removido por não ser suportado.

9. Normalize unsupported

Normalize foi removido por não ser suportado.

WITH DEFAULT

Nota

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

Descrição

A cláusula WITH DEFAULT do Teradata define um valor padrão do sistema para as colunas que são inseridas sem valores. Esse valor é normalmente equivalente a zero ou vazio.

Sintaxe:

 WITH DEFAULT
Copy

A tabela a seguir mostra os tipos de dados do Teradata, seu tipo correspondente no Snowflake e o valor padrão a ser definido, se suportado.

TeradataSnowflakeDefault Value
BLOB[(n)]BYTENOT SUPPORTED
BYTE[(n)]BYTENOT SUPPORTED
VARBYTE[(n)]BYTENOT SUPPORTED
BIGINTBIGINT0
BYTEINTBYTEINT0
DECIMAL [(n[,m])]DECIMAL0
DOUBLE PRECISIONDOUBLE PRECISION0
FLOATFLOAT0
INTEGERINTEGER0
NUMBER(n[,m])NUMBER0
NUMBER[(*[,m])]NUMBER0
NUMERIC [(n[,m])]NUMERIC0
REALREAL0
SMALLINTSMALLINT0
DATEDATECURRENT_DATE
TIME [(n)]TIMECURRENT_TIME
TIMESTAMP [(n)]TIMESTAMPCURRENT_TIMESTAMP
TIMESTAMP WITH TIME ZONETIMESTAMP_TZLOCALTIMESTAMP
INTERVAL DAY [(n)]VARCHAR(21)'0DAY'
INTERVAL DAY [(n)] TO HOURVARCHAR(21)'0DAY'
INTERVAL DAY [(n)] TO MINUTEVARCHAR(21)'0DAY'
INTERVAL DAY [(n)] TO SECONDVARCHAR(21)'0DAY'
INTERVAL HOUR [(n)]VARCHAR(21)'0HOUR'
INTERVAL HOUR [(n)] TO MINUTEVARCHAR(21)'0HOUR'
INTERVAL HOUR [(n)] TO SECONDVARCHAR(21)'0HOUR'
INTERVAL MINUTE [(n)]VARCHAR(21)'0MINUTE'
INTERVAL MINUTE [(n)] TO SECOND [(m)]VARCHAR(21)'0MINUTE'
INTERVAL MONTHVARCHAR(21)'0MONTH'
INTERVAL SECOND [(n,[m])]VARCHAR(21)'0SECOND'
INTERVAL YEAR [(n)]VARCHAR(21)'0YEAR'
INTERVAL YEAR [(n)] TO MONTHVARCHAR(21)'0YEAR'
CHAR[(n)]CHAR''
CHARACTER(n) CHARACTER SET GRAPHIC-NOT SUPPORTED
CLOB-NOT SUPPORTED
CHAR VARYING(n)VARCHAR''
LONG VARCHAR-NOT SUPPORTED
LONG VARCHAR CHARACTER SET GRAPHIC-NOT SUPPORTED
VARCHAR(n)VARCHAR''
VARCHAR(n) CHARACTER SET GRAPHIC-NOT SUPPORTED
PERIOD(DATE)VARCHAR(24)NOT SUPPORTED
PERIOD(TIME [(n)])VARCHAR(24)NOT SUPPORTED
PERIOD(TIMESTAMP [(n)])VARCHAR(24)NOT SUPPORTED

Amostra de padrões da origem

Teradata

 CREATE TABLE SAMPLE_TABLE
(
    ID INT,

    -- Numeric Types
    big_integer_col BIGINT WITH DEFAULT,
    byteint_col BYTEINT WITH DEFAULT,
    decimal_col DECIMAL(10,2) WITH DEFAULT,
    double_precision_col DOUBLE PRECISION WITH DEFAULT,
    float_col FLOAT WITH DEFAULT,
    integer_col INTEGER WITH DEFAULT,
    number_col NUMBER WITH DEFAULT,
    numeric_col NUMERIC(10,2) WITH DEFAULT,
    real_col REAL WITH DEFAULT,
    smallint_col SMALLINT WITH DEFAULT,

    -- Character Types
    char_col CHAR(50) WITH DEFAULT,
    character_col CHARACTER(50) WITH DEFAULT,
    --clob_col CLOB,
    char_varying_col CHAR VARYING(100) WITH DEFAULT,
    --long_varchar_col LONG VARCHAR WITH DEFAULT,
    --long_varchar_graphic_col LONG VARCHAR CHARACTER SET GRAPHIC WITH DEFAULT,
    varchar_col VARCHAR(255) WITH DEFAULT,
    --varchar_graphic_col VARCHAR(255) CHARACTER SET GRAPHIC WITH DEFAULT,

    -- Date and Time Types
    date_col DATE WITH DEFAULT,
    time_col TIME WITH DEFAULT,
    time_precision_col TIME(6) WITH DEFAULT,
    timestamp_col TIMESTAMP WITH DEFAULT,
    timestamp_precision_col TIMESTAMP(6) WITH DEFAULT,
    tz_timestamp_col TIMESTAMP WITH TIME ZONE WITH DEFAULT,
    tz_timestamp_precision_col TIMESTAMP(6) WITH TIME ZONE WITH DEFAULT,    
    interval_col INTERVAL DAY(4) WITH DEFAULT,
    interval_day_to_hour_col INTERVAL DAY(4) TO HOUR WITH DEFAULT,
    interval_hour_col INTERVAL HOUR(2) WITH DEFAULT,
    interval_minute_col INTERVAL MINUTE(2) WITH DEFAULT,
    interval_month_col INTERVAL MONTH WITH DEFAULT,
    interval_second_col INTERVAL SECOND(2) WITH DEFAULT,
    interval_year_col INTERVAL YEAR(4) WITH DEFAULT,

    -- Binary Types
    -- blob_col BLOB(1000),
    byte_col BYTE(1000) WITH DEFAULT,
    varbyte_col VARBYTE(1000) WITH DEFAULT
);
Copy
Snowflake
 CREATE OR REPLACE TABLE SAMPLE_TABLE
(
    ID INT,
    -- Numeric Types
    big_integer_col BIGINT DEFAULT 0,
    byteint_col BYTEINT DEFAULT 0,
    decimal_col DECIMAL(10,2) DEFAULT 0,
    double_precision_col DOUBLE PRECISION DEFAULT 0,
    float_col FLOAT DEFAULT 0,
    integer_col INTEGER DEFAULT 0,
    number_col NUMBER(38, 18)
--                              WITH DEFAULT
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0021 - WITH DEFAULT FOR 'NUMBER' NOT SUPPORTED IN SNOWFLAKE ***/!!!
                                                                                                      ,
    numeric_col NUMERIC(10,2) DEFAULT 0,
    real_col REAL DEFAULT 0,
    smallint_col SMALLINT DEFAULT 0,
    -- Character Types
    char_col CHAR(50) DEFAULT '',
    character_col CHARACTER(50)
--                                WITH DEFAULT
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0021 - WITH DEFAULT FOR 'CHARACTER(50)' NOT SUPPORTED IN SNOWFLAKE ***/!!!
                                                                                                             ,
    --clob_col CLOB,
    char_varying_col CHAR VARYING(100)
--                                       WITH DEFAULT
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0021 - WITH DEFAULT FOR 'CHAR VARYING(100)' NOT SUPPORTED IN SNOWFLAKE ***/!!!
                                                                                                                 ,
    --long_varchar_col LONG VARCHAR WITH DEFAULT,
    --long_varchar_graphic_col LONG VARCHAR CHARACTER SET GRAPHIC WITH DEFAULT,
    varchar_col VARCHAR(255) DEFAULT '',
    --varchar_graphic_col VARCHAR(255) CHARACTER SET GRAPHIC WITH DEFAULT,

    -- Date and Time Types
    date_col DATE DEFAULT CURRENT_DATE,
    time_col TIME DEFAULT CURRENT_TIME,
    time_precision_col TIME(6) DEFAULT CURRENT_TIME(6),
    timestamp_col TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    timestamp_precision_col TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6),
    tz_timestamp_col TIMESTAMP_TZ DEFAULT LOCALTIMESTAMP,
    tz_timestamp_precision_col TIMESTAMP_TZ(6) DEFAULT LOCALTIMESTAMP(6),
    interval_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY(4) DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0DAY',
    interval_day_to_hour_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY(4) TO HOUR DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0DAY',
    interval_hour_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL HOUR(2) DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0HOUR',
    interval_minute_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL MINUTE(2) DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0MINUTE',
    interval_month_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL MONTH DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0MONTH',
    interval_second_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL SECOND(2) DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0SECOND',
    interval_year_col VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR(4) DATA TYPE CONVERTED TO VARCHAR ***/!!! DEFAULT '0YEAR',
    -- Binary Types
    -- blob_col BLOB(1000),
    byte_col BINARY
--                    WITH DEFAULT
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0021 - WITH DEFAULT FOR 'BYTE(1000)' NOT SUPPORTED IN SNOWFLAKE ***/!!!
                                                                                                          ,
    varbyte_col BINARY(1000)
--                             WITH DEFAULT
--    !!!RESOLVE EWI!!! /*** SSC-EWI-0021 - WITH DEFAULT FOR 'VARBYTE(1000)' NOT SUPPORTED IN SNOWFLAKE ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
Copy

Problemas conhecidos

1. Unsupported types

Conforme mostrado na tabela de descrição, alguns tipos não são compatíveis e nenhum valor padrão será definido ao transformar a cláusula WITH DEFAULT.

EWIs relacionados

  1. SSC-EWI-0021: Não é compatível com o Snowflake.

  2. SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.

Índice

Aviso

Atualmente, a instrução _ Create Index _ não está sendo convertida, mas está sendo analisada. Além disso, se o seu código-fonte tiver instruções Create index, elas serão contabilizadas no _ Relatório de avaliação. _

Exemplo de criação de índice

 CREATE INDEX (col1, col2, col3) ORDER BY VALUES (col2) ON table1;

CREATE INDEX my_index_name ON my_table (column1, column2);
Copy

Nota

Por motivos arquitetônicos, o Snowflake não oferece suporte a índices, portanto, o SnowConvert removerá todo o código relacionado à criação de índices. O Snowflake cria automaticamente micropartições para cada tabela que ajudam a acelerar o desempenho das operações de DML. O usuário não precisa se preocupar em criar ou gerenciar essas micropartições.

Normalmente, isso é suficiente para ter um desempenho de consulta muito bom; no entanto, há maneiras de melhorá-lo criando chaves de clustering de dados. A página oficial do Snowflake fornece mais informações sobre micropartições e clustering de dados.

Índice de junção

Descrição

No Snowconvert, os índices Join do Teradata são transformados em tabelas dinâmicas do Snowflake. Para configurar corretamente as tabelas dinâmicas, dois parâmetros essenciais devem ser definidos: TARGET_LAG e WAREHOUSE. Se esses parâmetros não forem especificados nas opções de configuração, o Snowconvert usará como padrão os valores predefinidos durante a conversão, conforme demonstrado no exemplo abaixo.

Para obter mais informações sobre índices de junção, clique aqui.

Para obter detalhes sobre os parâmetros necessários para as tabelas dinâmicas, clique aqui.

Amostra de padrões da origem

Teradata

 CREATE JOIN INDEX Employee
AS   
SELECT 
  Employee_Id,
  First_Name,
  Last_Name,
  BirthDate,
  DepartmentNo   
FROM Employee   
PRIMARY INDEX (First_Name); 
Copy

Snowflake

 CREATE OR REPLACE DYNAMIC TABLE Employee
--** 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":1, "minor":0},"attributes":{"component":"teradata"}}'
AS
SELECT
  Employee_Id,
  First_Name,
  Last_Name,
  BirthDate,
  DepartmentNo
FROM 
  Employee;
Copy

Problemas conhecidos

Nenhum erro conhecido foi detectado até o momento.

EWIs relacionados

  1. SSC-FDM-0031: Parâmetros necessários da tabela dinâmica definidos por padrão

Esquema

Descrição

A conversão da instrução CREATE SCHEMA do Teradata para o Snowflake é simples, pois a sintaxe básica permanece a mesma.

Amostra de padrões da origem

Teradata

 CREATE SCHEMA IF EXISTS schema_name;
Copy

Snowflake

 CREATE SCHEMA IF EXISTS schema_name
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "07/23/2024" }}'
;
Copy

Problemas conhecidos

Propriedades WITH de CREATE SCHEMA

As propriedades WITH associadas à instrução CREATE SCHEMA no Teradata não são compatíveis com o Snowflake, pois não há funcionalidade equivalente disponível.

Teradata

 CREATE SCHEMA IF EXISTS schema_name
WITH ( PROPERTY1 = PROPERTYNAME, PROPERTY2 = PROPERTTYNAME, PROPERTY3 = PROPERTTYNAME);
Copy

Snowflake

 CREATE SCHEMA IF EXISTS schema_name
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "teradata",  "convertedOn": "07/23/2024" }}'
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'SCHEMA WITH' NODE ***/!!!
WITH ( PROPERTY1 = PROPERTYNAME, PROPERTY2 = PROPERTTYNAME, PROPERTY3 = PROPERTTYNAME);
Copy

EWIs relacionados

  1. SSC-EWI-0073: Revisão de equivalência funcional pendente.

Exibições

Nota

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

Descrição

A instrução VIEW do Teradata é convertida para a sintaxe do Snowflake VIEW.

Para obter mais informações sobre o Teradata VIEW, acesse aqui.

Amostra de padrões da origem

Criar transformação de visualização

Teradata

 CREATE VIEW view1 (someTable.col1, someTable.col2) AS locking row for access
    SELECT
    my_table.col1, my_table.col2
    FROM table1 AS my_table
    WHERE my_table.col1 = 'SpecificValue'
    UNION ALL
    SELECT other_table.col2
    FROM table2 AS other_table
    WHERE my_table.col2 = other_table.col2
Copy

Snowflake

 --** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "table1", "table2" **
CREATE OR REPLACE VIEW view1
(
    col1,
    col2)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
AS
SELECT
    my_table.col1,
    my_table.col2
    FROM
    table1 AS my_table
    WHERE my_table.col1 = 'SpecificValue'
    UNION ALL
    SELECT
    other_table.col2
       FROM
    table2 AS other_table
       WHERE my_table.col2 = other_table.col2;
Copy

Tag de esquema personalizado

O esquema personalizado é especificado na seção de comentários antes da especificação da visualização, com uma tag XML chamada «sc-view» que contém apenas o valor do esquema e o nome da visualização separados por um ponto «.», conforme mostrado abaixo: <sc-view>SCHEMANAME.VIEWNAME</sc-view>

O esquema personalizado será usado como um qualificador de visualização e, em seguida, o nome da visualização e todos os objetos mencionados nas consultas FROM e nas consultas internas usarão esse esquema personalizado. Portanto, pode haver várias exibições com o mesmo nome, mas com diferentes tags personalizadas. Exemplo: duas exibições com o mesmo nome usarão as informações da tag de esquema personalizado para realizar a conversão.

Teradata
 /*<sc-view>RMSviews.EMPLOYEEB</sc-view>*/
REPLACE VIEW EMPLOYEEB AS
SELECT * FROM EMPLOYEE
WHERE AREA = "AREAB";

/*<sc-view>Views.EMPLOYEEB</sc-view>*/
REPLACE VIEW EMPLOYEEB AS
SELECT * FROM EMPLOYEE
WHERE AREA = "AREAB";
Copy
Snowflake

A transformação para o Snowflake variará dependendo do nome do esquema personalizado MySchema, do nome do banco de dados personalizado MyDatabase ou da não seleção de um banco de dados ou esquema personalizado nas configurações de conversão.

 /*<sc-view>RMSviews.EMPLOYEEB</sc-view>*/
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "EMPLOYEE" **
CREATE OR REPLACE VIEW RMSviews.EMPLOYEEB
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
AS
SELECT
* FROM
RMSviews.EMPLOYEE
WHERE AREA = "AREAB";

/*<sc-view>Views.EMPLOYEEB</sc-view>*/
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "EMPLOYEE" **
--** SSC-FDM-0019 - SEMANTIC INFORMATION COULD NOT BE LOADED FOR Views.EMPLOYEEB. CHECK IF THE NAME IS INVALID OR DUPLICATED. **
CREATE OR REPLACE VIEW Views.EMPLOYEEB
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"teradata"}}'
AS
SELECT
* FROM
Views.EMPLOYEE
 WHERE AREA = "AREAB";
Copy
 /*<sc-view>RMSviews.EMPLOYEEB</sc-view>*/
CREATE OR REPLACE VIEW MyDatabase.RMSviews.EMPLOYEEB
AS
   SELECT * FROM MyDatabase.RMSviews.EMPLOYEE
   WHERE AREA = "AREAB";

/*<sc-view>Views.EMPLOYEEB</sc-view>*/
CREATE OR REPLACE VIEW MyDatabase.Views.EMPLOYEEB
AS
   SELECT * FROM MyDatabase.Views.EMPLOYEE
   WHERE AREA = "AREAB";
Copy
 /*<sc-view>RMSviews.EMPLOYEEB</sc-view>*/
CREATE OR REPLACE VIEW RMSviews.PUBLIC.EMPLOYEEB
AS
   SELECT * FROM RMSviews.PUBLIC.EMPLOYEE
   WHERE AREA = "AREAB";

/*<sc-view>Views.EMPLOYEEB</sc-view>*/
CREATE OR REPLACE VIEW Views.PUBLIC.EMPLOYEEB
AS
   SELECT * FROM Views.PUBLIC.EMPLOYEE
   WHERE AREA = "AREAB";
Copy

Problemas conhecidos

1. Locking row for access logic difference

No Snowflake, o acesso a objetos e elementos é baseado em usuários e privilégios.

EWIs relacionados

  1. SSC-FDM-0007: Elemento com dependências ausentes.

  2. SSC-FDM-0019: Não foi possível carregar as informações semânticas.