Translation reference to convert Teradata Normalize functionality to Snowflake
Description
NORMALIZE specifies that period values in the first-period column that meet or overlap are combined to form a period that encompasses the individual period values. For more information about Normalize clause, see the Teradata documentation.
CREATETABLE PUBLIC.project( emp_id INTEGER, project_name VARCHAR(20), dept_id INTEGER, duration VARCHAR(24) /*** MSC-WARNING - MSCEWI2053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/
);INSERT INTO PUBLIC.project VALUES (10, 'First Phase', 1000, PUBLIC.PERIOD_UDF(DATE '2010-01-10', DATE '2010-03-20') /*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'PERIOD_UDF' INSERTED. ***/ /*** MSC-WARNING - MSCEWI2053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/);
INSERT INTO PUBLIC.project VALUES (10, 'First Phase', 2000, PUBLIC.PERIOD_UDF(DATE '2010-03-20', DATE '2010-07-15') /*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'PERIOD_UDF' INSERTED. ***/ /*** MSC-WARNING - MSCEWI2053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/);
INSERT INTO PUBLIC.project VALUES (10, 'Second Phase', 2000, PUBLIC.PERIOD_UDF(DATE '2010-06-15', DATE '2010-08-18') /*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'PERIOD_UDF' INSERTED. ***/ /*** MSC-WARNING - MSCEWI2053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/);
INSERT INTO PUBLIC.project VALUES (20, 'First Phase', 2000, PUBLIC.PERIOD_UDF(DATE '2010-03-10', DATE '2010-07-20') /*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'PERIOD_UDF' INSERTED. ***/ /*** MSC-WARNING - MSCEWI2053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/);
INSERT INTO PUBLIC.project VALUES (20, 'Second Phase', 1000, PUBLIC.PERIOD_UDF(DATE '2020-05-10', DATE '2020-09-20') /*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'PERIOD_UDF' INSERTED. ***/ /*** MSC-WARNING - MSCEWI2053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/);
Normalize Clause
Suppose you want to use Normalize clause with the employee id.
Normalize clause can use ON MEETS OR OVERLAPS, ON OVERLAPS or ON OVERLAPS OR MEETS, for these cases SnowConvert will add an error that this translation is planned for the future.
SELECT NORMALIZE ON MEETS OR OVERLAPS emp_id, duration FROM table1;```sql
SELECT-- --** MSC-ERROR - MSCEWI1073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'NORMALIZE SET QUANTIFIER' NODE **-- NORMALIZE ON MEETS OR OVERLAPS emp_id,duration FROMtable1;