0% found this document useful (0 votes)
3 views

chapter2

Uploaded by

my home deccor
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

chapter2

Uploaded by

my home deccor
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

Connecting to

Snowflake and DDL


commands
INTRODUCTION TO SNOWFLAKE

Palak Raina
Senior Data Engineer
Connecting to Snowflake
Snowsight: Snowflake Web Interface

INTRODUCTION TO SNOWFLAKE
Web Interface: Worksheets

INTRODUCTION TO SNOWFLAKE
Connecting to Snowflake: Drivers, SnowSQL

Drivers & Connectors


ODBC (Open Database Connectivity) and JDBC (Java Database Connectivity) drivers

Connectors : Python/Spark and more

SnowSQL
Command-line client
Installed on Linux, Windows, or Mac

INTRODUCTION TO SNOWFLAKE
Staging
Temporary location storing data

Internal Stage

External Stage (Cloud storage: Amazon S3, Google Cloud Storage)


Raw data sources: Initial, unprocessed data, e.g., CSV files

Staging Area: Temporary storage, loading

Table: Final data is loaded here

INTRODUCTION TO SNOWFLAKE
CREATE STAGE
CREATE STAGE my_local_stage

PUT file:///path_to_your_local_file/orders.csv
@my_local_stage -- stage name prefixed with @

@ -> Prefix to reference stage.

INTRODUCTION TO SNOWFLAKE
DDL Commands
Some Data Definition Language (DDL) commands
CREATE

ALTER

DROP

RENAME

COMMENT

INTRODUCTION TO SNOWFLAKE
DDL: Create
CREATE TABLE orders_pizza (
order_id NUMBER,
order_date DATE,
time TIME
)

CREATE VIEW orders_pizza_view AS


SELECT order_id,
order_date
FROM orders_pizza

INTRODUCTION TO SNOWFLAKE
DDL: ALTER, RENAME, DROP
ALTER & RENAME

ALTER TABLE IF EXISTS orders_pizza RENAME TO orders;

IF_EXISTS -> Table's presence

ALTER TABLE orders


RENAME COLUMN time TO order_time;

DROP
DROP TABLE orders

INTRODUCTION TO SNOWFLAKE
DDL: Comment
CREATE TABLE pizza_type (
pizza_type_id VARCHAR(50) COMMENT 'Unique identifier for pizza type',
name VARCHAR(100) ,
category VARCHAR(50),
ingredients VARCHAR(500)
)
COMMENT = 'Table that stores information about different types of pizzas, including their names,
categories, and ingredients'

Postgres

COMMENT ON [OBJECT TYPE] [OBJECT NAME] IS 'comment';


COMMENT ON TABLE pizza_type IS 'Table with pizza type info'

INTRODUCTION TO SNOWFLAKE
Let's practice!
INTRODUCTION TO SNOWFLAKE
Snowflake database
structures and DML
INTRODUCTION TO SNOWFLAKE

Palak Raina
Senior Data Engineer
Overview
Snowflake Similarities to Postgres

SHOW INSERT

DESCRIBE UPDATE

INSERT MERGE

UPDATE

MERGE

COPY

INTRODUCTION TO SNOWFLAKE
SHOW DATABASES
Snowflake

SHOW

SHOW DATABASES

INTRODUCTION TO SNOWFLAKE
SHOW TABLES
SHOW TABLES IN { DATABASE [ <db_name> ] }

SHOW TABLES IN DATABASE PIZZA_SALES

INTRODUCTION TO SNOWFLAKE
SHOW TABLES LIKE
SHOW TABLES [ LIKE '<pattern>' ]
[ IN { DATABASE [ <db_name> ] } ]

SHOW TABLES LIKE '%PIZZA%' IN DATABASE PIZZA_SALES

INTRODUCTION TO SNOWFLAKE
SHOW SCHEMAS, COLUMNS
SHOW SCHEMAS IN DATABASE PIZZA_SALES

SHOW COLUMNS IN PIZZA_TYPE

INTRODUCTION TO SNOWFLAKE
SHOW VIEWS
SHOW VIEWS IN DATABASE PIZZA_SALES

INTRODUCTION TO SNOWFLAKE
DESCRIBE DATABASE, SCHEMA
DESCRIBE or DESC

DESCRIBE DATABASE PIZZA_SALES

DESCRIBE SCHEMA PUBLIC

INTRODUCTION TO SNOWFLAKE
DESCRIBE TABLE, VIEW
DESCRIBE TABLE PIZZA_TYPE

DESCRIBE VIEW ORDERS_VIEW

INTRODUCTION TO SNOWFLAKE
DESCRIBE STAGE
DESCRIBE STAGE my_local_stage

INTRODUCTION TO SNOWFLAKE
DML (Data Manipulation Language) Commands

INSERT
Insert Using Explicitly Specified Values
INSERT INTO orders (order_id, order_date, order_time)
VALUES (1, '2015-01-01', '11:38:36')

INTRODUCTION TO SNOWFLAKE
INSERT Using Query
Insert using Query
INSERT INTO orders_filtered
SELECT * FROM orders
WHERE order_date > '2015-01-02'

INTRODUCTION TO SNOWFLAKE
UPDATE
UPDATE orders
SET order_time = '17:00:00'
WHERE order_id = '5'

Before:

After:

INTRODUCTION TO SNOWFLAKE
MERGE
Combines data from two tables

MERGE INTO orders_filtered AS target -- Target table


USING orders AS source -- Source table
ON target.order_id = source.order_id -- Common column
WHEN MATCHED THEN -- When there is a match
UPDATE SET
-- Update order_date and time of target table
target.order_date = source.order_date,
target.time = source.order_time

INTRODUCTION TO SNOWFLAKE
MERGE RESULTS
Source table: orders

After Merge: orders_filtered updated


Before Merge: orders_filtered order_id = 5 based on orders table

INTRODUCTION TO SNOWFLAKE
COPY
Snowflake:

COPY INTO orders FROM @my_local_stage/orders.csv


FILE_FORMAT = (TYPE = 'CSV' SKIP_HEADER=1 )

@my_local_stage : stage we have created.

orders.csv : file within that stage we're copying data from.

FILE_FORMAT : format of the source data, in this case, a CSV.

INTRODUCTION TO SNOWFLAKE
Let's practice!
INTRODUCTION TO SNOWFLAKE
Snowflake data type
and data type
conversion
INTRODUCTION TO SNOWFLAKE

Palak Raina
Senior Data Engineer
Data types
VARCHAR Similarities with Postgres known data types
NUMERIC
(non-exhaustive list):

INT VARCHAR

DATE NUMERIC

TIME INT

TIMESTAMP

VARIANT -> Semi-structured data

INTRODUCTION TO SNOWFLAKE
Comparison with Postgres

Data Type Snowflake PostgreSQL


VARCHAR Max Length 16,777,216 65,535
NUMERIC Default Precision 38 37
INTEGER Range ~±10^37 32-bit signed range

INTRODUCTION TO SNOWFLAKE
DATE
DATE
Formats: YYYY-MM-DD , DD-MM-YYYY , etc.

Default: YYYY-MM-DD

CREATE TABLE orders (


order_id NUMBER ,
order_date DATE -- DATE data type
)

INTRODUCTION TO SNOWFLAKE
TIME
TIME
Format: HH:MI:SS

CREATE TABLE orders (


order_id NUMBER ,
order_date DATE,
order_time TIME -- TIME data type
)

INTRODUCTION TO SNOWFLAKE
TIMESTAMP
TIMESTAMP - Combines DATE and TIME
Format: YYYY-MM-DD HH:MI:SS

CREATE TABLE orders (


order_id NUMBER ,
order_timestamp TIMESTAMP -- Timestamp
)

INTRODUCTION TO SNOWFLAKE
Data type conversion - What?
Converting data from one type to another

INTRODUCTION TO SNOWFLAKE
Data type conversion - Why?
Improving performance

Data accuracy and consistency

Data quality

INTRODUCTION TO SNOWFLAKE
Data type conversion - How?
1. CAST Syntax:
CAST( <source_data/column> AS <target_data_type> )

CAST('80' AS INT)

2. :: Syntax:
<source_data/column>::<target_data_type>

'80'::INT

INTRODUCTION TO SNOWFLAKE
CAST COLUMN
SELECT CAST(order_date AS TIMESTAMP)
AS order_timestamp
FROM orders

Before casting:
After casting:

INTRODUCTION TO SNOWFLAKE
Conversion functions
Examples: TO_VARCHAR , TO_DATE , etc.
TO_DATE

TO_DATE( <expr> )
expr - string, timestamp, etc.

Result: DATE

Example:

SELECT TO_DATE('2023-08-16 11:51:00')

Result:

2023-08-16

INTRODUCTION TO SNOWFLAKE
Let's practice!
INTRODUCTION TO SNOWFLAKE
Functions, sorting,
and grouping
INTRODUCTION TO SNOWFLAKE

Palak Raina
Senior Data Engineer
Functions
AGGREGATE

STRING

DATE & TIME

INTRODUCTION TO SNOWFLAKE
Aggregate functions
Aggregation Command Example
Averaging AVG() SELECT AVG( <expr> ) FROM table

Sum SUM() SELECT SUM( <expr> ) FROM table

Minimum Value MIN() SELECT MIN( <expr> ) FROM table

Maximum Value MAX() SELECT MAX( <expr> ) FROM table

Count COUNT() SELECT COUNT( <expr> ) FROM table

INTRODUCTION TO SNOWFLAKE
String functions - CONCAT
Combines the expressions. Combining category with ' - Pizza'
Syntax: SELECT CONCAT(category, ' - Pizza')
AS pizza_category
CONCAT( <expr1> [ , <exprN> ... ] ) FROM pizza_type

Before Concat:
After Concat:

INTRODUCTION TO SNOWFLAKE
UPPER & LOWER
Syntax: UPPER( <expr> ) Syntax: LOWER( <expr> )

SELECT UPPER(category) AS upper_category SELECT LOWER(category) AS lower_category


FROM pizza_type FROM pizza_type

INTRODUCTION TO SNOWFLAKE
DATE & TIME functions
CURRENT_DATE() or CURRENT_DATE

CURRENT_TIME() or CURRENT_TIME

SELECT CURRENT_DATE

SELECT CURRENT_TIME

INTRODUCTION TO SNOWFLAKE
EXTRACT
Syntax

EXTRACT( <date_or_time_part> FROM <date_or_time_expr> )


<date_or_time_part> - year , month , day , etc.

SELECT drop_timestamp,
EXTRACT(YEAR FROM drop_timestamp) AS year
FROM uber_data

INTRODUCTION TO SNOWFLAKE
SORTING and GROUPING
SORTING: ORDER BY

GROUPING: GROUP BY
Snowflake: GROUP BY ALL

INTRODUCTION TO SNOWFLAKE
GROUP BY ALL
GROUP BY column1, column2 GROUP BY ALL

SELECT
pizza_type_id,
SELECT
size,
pizza_type_id,
AVG(price) AS average_price
size,
FROM
AVG(price) AS average_price
pizzas
FROM
GROUP BY
pizzas
pizza_type_id, -- explicit columns
-- No need to specify columns
size
GROUP BY ALL
ORDER BY
ORDER BY
pizza_type_id, average_price DESC
pizza_type_id, average_price DESC

INTRODUCTION TO SNOWFLAKE
Let's practice!
INTRODUCTION TO SNOWFLAKE

You might also like