Introduction to Data Modeling in Snowflake
Nuno Rocha
Director of Engineering
CREATE OR REPLACE TABLE manufacturers (
manufacturer_id NUMBER(10,0) PRIMARY KEY,
manufacturer VARCHAR(255),
location VARCHAR(255)
);
CREATE OR REPLACE TABLE details (
detail_id NUMBER(10,0) PRIMARY KEY,
detail VARCHAR(255)
);
INSERT INTO manufacturers (manufacturer_id, manufacturer, location)
SELECT DISTINCT manufacturer_id,
manufacturer_name,
location
FROM allproducts;
INSERT INTO details (detail_id, detail)
SELECT DISTINCT detail_id,
detail_description
FROM allproducts;
CREATE TABLE locations (
location_id NUMBER(10,0) PRIMARY KEY,
location VARCHAR(255)
);
INSERT INTO locations (location_id, location)
SELECT ROW_NUMBER() OVER (ORDER BY location),
location
FROM manufacturers
GROUP BY location;
ALTER TABLE manufacturers
DROP COLUMN location;
CREATE OR REPLACE TABLE products (
product_id NUMBER(10,0) PRIMARY KEY,
name VARCHAR(255)
);
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
product_name
FROM allproducts;
ROW_NUMBER() OVER (ORDER BY)
: SQL function to generate a sequential number.DISTINCT
: SQL clause to return unique (different) values from an attribute.DROP
: SQL command, used with ALTER TABLE,
to remove elements to the entity.INSERT INTO table_name (column_name, other_columns)
SELECT DISTINCT column_name,
other_columns
FROM another_table;
INSERT INTO table_name (column_name)
SELECT ROW_NUMBER() OVER (ORDER BY column_name)
FROM another_table
GROUP BY TRIM(column_name);
ALTER TABLE table_name
DROP COLUMN column_name;
Introduction to Data Modeling in Snowflake