0% found this document useful (0 votes)
110 views2 pages

Lab15 Views and MaterializedViews

Uploaded by

vrjs27 v
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views2 pages

Lab15 Views and MaterializedViews

Uploaded by

vrjs27 v
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

======

VIEWS
======
USE DATABASE PUBLIC_DB;

// Create a schema for views


CREATE SCHEMA MYVIEWS;

// Requirement: Need Contact details for BRAZIL customers.

// Create customre view


CREATE OR REPLACE VIEW MYVIEWS.VW_CUSTOMER
AS
SELECT CST.C_CUSTKEY, CST.C_NAME, CST.C_ADDRESS, CST.C_PHONE FROM
SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.CUSTOMER CST
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.NATION NTN
ON CST.C_NATIONKEY = NTN.N_NATIONKEY
WHERE NTN.N_NAME='BRAZIL';

// Query the view and see query profile how it is fetching data from underlying
tables
SELECT * FROM MYVIEWS.VW_CUSTOMER;

// Turno off cached results and suspend warehouse


ALTER SESSION SET USE_CACHED_RESULT=FALSE;

SELECT * FROM MYVIEWS.VW_CUSTOMER;

// Grant access to role PUBLIC


GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA PUBLIC_DB.MYVIEWS TO ROLE PUBLIC;
GRANT SELECT ON VIEW PUBLIC_DB.MYVIEWS.VW_CUSTOMER TO ROLE PUBLIC; -- role or user
who needs BRAZIL customers data

=============
SECURE VIEWS
=============

// Requirement: Need all details of AMERICA customers

// Create secure view


CREATE SECURE VIEW MYVIEWS.SEC_VW_CUSTOMER
AS
SELECT CST.* FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.CUSTOMER CST
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.NATION NTN
ON CST.C_NATIONKEY = NTN.N_NATIONKEY
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.REGION RGN
ON NTN.N_REGIONKEY = RGN.R_REGIONKEY
WHERE RGN.R_NAME='AMERICA';

// Query secure view


SELECT * FROM MYVIEWS.SEC_VW_CUSTOMER;

// Grant access to role PUBLIC


GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA PUBLIC_DB.MYVIEWS TO ROLE PUBLIC;
GRANT SELECT ON VIEW PUBLIC_DB.MYVIEWS.SEC_VW_CUSTOMER TO ROLE PUBLIC; -- role or
user who needs AMERICA customers data
// How to Identify a View is secure?
SELECT table_catalog, table_schema, table_name, is_secure
FROM public_db.information_schema.views;

SHOW VIEWS;

// Switch to public role and check


SHOW VIEWS; -- only owner can see the definition of view

==================
MATERIALIZED VIEWS
===================

//Try creating a mat view with multiple table - it won't work


CREATE MATERIALIZED VIEW MYVIEWS.MAT_VW_CUSTOMER
AS
SELECT CST.* FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.CUSTOMER CST
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.NATION NTN
ON CST.C_NATIONKEY = NTN.N_NATIONKEY
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.REGION RGN
ON NTN.N_REGIONKEY = RGN.R_REGIONKEY
WHERE RGN.R_NAME='AMERICA';

// Requirement: I want to check frequently the High priority order details.

// Create materialized view


CREATE MATERIALIZED VIEW MYVIEWS.MAT_VW_ORDERS
AS
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF100.ORDERS
WHERE SUBSTRING(O_ORDERPRIORITY,1,1)='2';
-- AND YEAR(O_ORDERDATE)=2022 AND MONTH(O_ORDERDATE)=7

// Query mat view and see query profile, run after some time
SELECT * FROM MYVIEWS.MAT_VW_ORDERS;

// Grant access to PUBLIC role


GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA PUBLIC_DB.MYVIEWS TO ROLE PUBLIC;
GRANT SELECT ON VIEW PUBLIC_DB.MYVIEWS.MAT_VW_ORDERS TO ROLE PUBLIC;

// How to see the mat views?


SHOW MATERIALIZED VIEWS;

// How to check the refresh history?


SELECT * FROM TABLE(INFORMATION_SCHEMA.MATERIALIZED_VIEW_REFRESH_HISTORY());

You might also like