Snowflake 中的数据管道自动化
Emily Melhuish
Technical Curriculum Developer, Snowflake



关于 Harbr

Stage = 临时存储位置

内部 Stage
外部 Stage
目录表
CREATE STAGE harbr_stage
DIRECTORY = (ENABLE = TRUE)
内部 Stage 加密
ENCRYPTION = (TYPE = SNOWFLAKE_FULL)
ENCRYPTION = (TYPE = SNOWFLAKE_SSE)
外部 Stage 加密
ENCRYPTION =
([ TYPE = 'AWS_CSE' ] MASTER_KEY = '')
ENCRYPTION =
([ TYPE = 'AWS_SSE_S3' ])
...
半结构化格式:JSON、Parquet、Avro、ORC、XML
VARIANT 列仅需一次更新格式对象
SQL
CREATE FILE FORMAT harbr_csv_format
TYPE = 'CSV'
FIELD_DELIMITER = ','
SKIP_HEADER = 1;
使用命名 Stage 与命名文件格式加载
COPY INTO logistics.shipments
FROM @harbr_internal_stage/shipments/
FILE_FORMAT = (FORMAT_NAME = 'harbr_csv_format')
| ON_ERROR 选项 | 行为 |
|---|---|
ABORT_STATEMENT |
首个错误即终止整个加载(默认) |
CONTINUE |
跳过坏行,其余照常加载 |
SKIP_FILE |
文件含任意错误则跳过整个文件 |
SKIP_FILE_<num> |
仅当错误数超出指定计数时跳过文件 |
SKIP_FILE_<num>% |
仅当错误超出指定百分比阈值时跳过文件 |
仅验证不加载 = 试运行
COPY INTO logistics.shipments
FROM @harbr_internal_stage/shipments/
FILE_FORMAT = (FORMAT_NAME = 'harbr_csv_format')
VALIDATION_MODE = RETURN_ERRORS;
查看加载历史
SELECT * FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
TABLE_NAME => 'shipments',
START_TIME => DATEADD('hour', -24,
CURRENT_TIMESTAMP())));
Snowflake 中的数据管道自动化