PIPE 对象¶
PIPE 的对象是 Snowpipe Streaming 的服务器端处理层。每个流引入都流经一个管道,该管道在将数据提交到目标表之前处理架构验证、可选的动态数据转换和可选的预聚类。
PIPE 对象提供以下功能:
传输中的数据转换:在引入期间筛选行、重新排序列、转换类型,并通过使用 COPY 命令转换语法来应用表达式。这样就可以在引入时进行数据清理和整形,而无需单独的 ETL 步骤。
预聚类:在引入期间根据表聚类键对数据进行排序,以优化查询性能。
服务器端架构验证:在提交之前,根据管道中定义的架构验证传入数据。
表功能支持:引入到定义了聚类键、DEFAULT 值列和 AUTOINCREMENT(或 IDENTITY)列的表中。
为了快速设置,Snowflake 会为每个表自动创建 默认管道。默认管道会处理引入,无需手动 DDL。对于需要转换或预聚类的进阶用例,可以创建自定义命名的管道。有关更多信息,请参阅 CREATE PIPE 。
默认管道¶
Snowflake 为每个目标表提供一个默认管道。在针对目标表进行第一次成功的 pipe-info 或 open-channel 调用后,将按需创建默认管道。这使您可以立即开始流式传输数据,而无需手动执行 CREATE PIPE DDL 语句。
按需创建:您只能在由这些调用之一将管道实例化后查看或描述管道(使用 SHOW PIPES 或 DESCRIBE PIPE)。
命名规则:
<TABLE_NAME>-STREAMING``(例如,``MY_TABLE-STREAMING)完全由 Snowflake 管理:您无法在默认管道上运行 CREATE、ALTER 或 DROP。
可见性:您可以使用 SHOW PIPES、DESCRIBE PIPE 和 SHOW CHANNELS 检查默认管道。默认管道也包含在 ACCOUNT_USAGE.PIPES、ACCOUNT_USAGE.METERING_HISTORY 和 ORGANIZATION_USAGE.PIPES 视图中。
默认管道具有以下限制:
新的转换:在基础复制语句中,默认管道使用
MATCH_BY_COLUMN_NAME。它不支持特定的数据转换。无预聚类:默认管道不支持目标表的预聚类。
如果您的工作流需要转换或预聚类,请创建您自己的命名管道。有关更多信息,请参阅 CREATE PIPE 。
当您配置 Snowpipe Streaming Client SDK 或 REST API 时,可在客户端配置中引用此默认管道名称以开始流式传输。有关更多信息,请参阅 Tutorial: Get started with Snowpipe Streaming high-performance architecture SDK 和 。
在引入期间对数据进行预群集¶
Snowpipe Streaming 可以在引入期间对动态数据进行群集,从而提高目标表的查询性能。此功能在提交数据之前,直接在引入期间对数据进行排序。
要使用预聚类,必须为目标表定义聚类键。然后,在创建或替换 Snowpipe Streaming 管道时,您可以通过在 COPY INTO 语句中将将参数 CLUSTER_AT_INGEST_TIME 设置为 TRUE,来启用此功能。
有关更多信息,请参阅 CLUSTER_AT_INGEST_TIME。
重要
使用预聚类功能时,请勿禁用目标表上的自动聚类功能。随着时间的推移,禁用自动群集可能会导致查询性能下降。