Skip to content

Instantly share code, notes, and snippets.

View vvgsrk's full-sized avatar

Venkata Gowri Sai Rakesh Kumar Varanasi vvgsrk

View GitHub Profile
@vvgsrk
vvgsrk / serverless_task_batch_load.sql
Last active February 10, 2024 09:48
Snowflake serverless task batch load using schema detection and evolution
USE ROLE data_engineer;
-- Create external stage
CREATE OR REPLACE STAGE DP_DEV.STAGE.DP_DEV_DATA_INBOUND_TEST
STORAGE_INTEGRATION = DP_INGESTION_DEV
URL = 's3://dp-dev-data-inbound-test/'
;
-- List files in external stage
LIST @DP_DEV.STAGE.DP_DEV_DATA_INBOUND_TEST;
@vvgsrk
vvgsrk / task_error_notifications.sql
Created February 10, 2024 09:51
Snowflake task error notifications
CREATE OR REPLACE NOTIFICATION INTEGRATION TASK_ERROR_NOTIFICATIONS
ENABLED = true
TYPE = QUEUE
NOTIFICATION_PROVIDER = AWS_SNS
DIRECTION = OUTBOUND
AWS_SNS_TOPIC_ARN = 'arn:aws:sns:eu-central-1:123456789012345:dp-tools-slack-notifier-alarm'
AWS_SNS_ROLE_ARN = 'arn:aws:iam::123456789012345:role/dp-tools-snowflake-tasks-error-notifications';
Database Schema Role
dp_governance masking_policies masking_admin
dp_governance tags tag_admin
Business Unit/Team Name Description Tag Name Role Name Remarks
CX Customer experience customer_sensitive tag_admin tag_cx_admin can be created if required
EX Employee experience employee_sensitive tag_admin tag_ex_admin can be created if required
Masking Policy Example Role Name
<DATA_TYPE>_MASK_<BUSINESS_UNIT_NAME> NUMBER_MASK_EMPLOYEE | STRING_MASK_EMPLOYEE | DATE_MASK_EMPLOYEE MASKING_ADMIN
<COLUMN_TYPE>_MASK_<BUSINESS_UNIT_NAME> EMAIL_MASK_CUSTOMER | DOB_MASK_CUSTOMER | NAME_MASK_CUSTOMER MASKING_ADMIN
-- Devlopment
USE ROLE dp_owner_dev;
/*
Table: schema_name.table_name
Columns:
column_name_1
column_name_2
-- Devlopment
USE ROLE dp_owner_dev;
/*
Table: schema_name.table_name
Columns:
column_name_1
column_name_2
SELECT 'ALTER TABLE IF EXISTS ' || LOWER(table_catalog) || '.' || LOWER(table_schema) || '.' || LOWER(table_name) || ' MODIFY COLUMN ' || LOWER(column_name) || ' SET TAG ' || ' dp_governance.tags.customer_sensitive = ''add_source_name'';' AS set_statement,
'ALTER TABLE IF EXISTS ' || LOWER(table_catalog) || '.' || LOWER(table_schema) || '.' || LOWER(table_name) || ' MODIFY COLUMN ' || LOWER(column_name) || ' UNSET TAG ' || ' dp_governance.tags.customer_sensitive;' AS unset_statement
FROM dp_dev.information_schema.columns
WHERE table_name = 'TABLE_NAME_X'
AND column_name IN ('COLUMN_NAME_1', 'COLUMN_NAME_2', 'COLUMN_NAME_3')
;
@vvgsrk
vvgsrk / create_tags_cx.sql
Last active July 7, 2024 09:43
customer sensitive tag
USE ROLE TAG_ADMIN;
CREATE OR REPLACE TAG dp_governance.tags.customer_sensitive
COMMENT = 'Reserved for all sensitive customer experience data';
USE ROLE TAG_ADMIN;
CREATE OR REPLACE TAG dp_governance.tags.employee_sensitive
COMMENT = 'Reserved for all sensitive employee experience data';