Snowflake 数据处理、任务调度与安全管理全解析
1. 流数据处理
在 Snowflake 中,流中的所有数据都在成功提交的事务中被消费。可能需要多条语句来消费一个流,例如将流中的一部分数据写入一个目标表,另一部分写入另一个目标表。在这种情况下,必须用显式事务包围 INSERT 语句,以 BEGIN 开始,以 COMMIT 结束。
当多个消费者想使用来自同一源表的更改数据时,可以为每个消费者创建单独的流。由于流只跟踪偏移量,而不跟踪底层表的实际数据,因此为一个对象创建额外的流不会干扰每个消费者消费更改记录的方式。
Snowflake 提供了以下几种流类型:
| 流类型 | 可创建对象 | 跟踪内容 |
| ---- | ---- | ---- |
| 标准流 | 表、目录表或视图 | 源对象的所有更改,包括插入、更新和删除 |
| 仅追加流 | 标准表、目录表或视图 | 仅跟踪插入操作,不跟踪更新或删除 |
| 仅插入流 | 外部表 | 仅跟踪插入操作,不跟踪删除,如从外部表的云存储位置删除文件 |
2. 任务管理
任务是用户定义的对象,支持按计划执行 SQL 语句。任务可以按照创建时定义的计划执行,也可以由父任务执行(如果定义了任务依赖关系),但 Snowflake 不支持基于事件执行任务。
任务常与流结合使用,以定期加载数据的方式创建 ETL 流程。流确保每次 ETL 流程执行时,只有更改的数据被加载到目标表,而任务确保加载按计划进行。
任务可以执行不同类型的 SQL 代码,例如:
- 执行单个 SQL 语句
- 调用
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



