Snowflake cloud data platform 如果一个数据库有2个或更多管道,它们是否都具有相同的通知通道?

Snowflake cloud data platform 如果一个数据库有2个或更多管道,它们是否都具有相同的通知通道?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,(有趣的对话字符串,可能对其他Snowflake用户有价值…) Q: 我为一个数据库创建了两个管道,用于从ASW s3中抽取数据。除了目标表之外,这些管道几乎相同 其想法是根据原始s3前缀将数据插入不同的表中。我在s3 bucket上创建了两个事件通知,以查看两个不同的前缀,但由于snoflake生成的通知通道对于两个管道都是相同的,因此无法区分SF端的事件和两个从两个s3文件夹插入数据的管道 那么这是一个bug还是一个特性呢?a: 不同管道在同一区域具有相同的ARN值并不少见。只要copy语

(有趣的对话字符串,可能对其他Snowflake用户有价值…)


Q: 我为一个数据库创建了两个管道,用于从ASW s3中抽取数据。除了目标表之外,这些管道几乎相同

其想法是根据原始s3前缀将数据插入不同的表中。我在s3 bucket上创建了两个事件通知,以查看两个不同的前缀,但由于snoflake生成的通知通道对于两个管道都是相同的,因此无法区分SF端的事件和两个从两个s3文件夹插入数据的管道

那么这是一个bug还是一个特性呢?

a: 不同管道在同一区域具有相同的ARN值并不少见。只要copy语句中的目标目的地不同,就可以正确地测试数据。相同区域中的管道共享同一队列以输入数据。这一切都归结为正确配置目标


Q: 我的目标目的地不同:

创建或替换管道gen3\u管道自动摄取=真

作为

创建或替换管道gen2\u管道自动摄取=真

作为

表gen2和gen3获得的数据相同,基本上gen2是gen3的副本

如果两个管道订阅了相同的ARN,我如何区分事件

A: 管道之间共享队列(ARN)是正常的。只要您的目标表在两个语句(对于两个管道)中不同,并且在任何管道中都不包含purge,那么当文件进入bucket时,它将同时加载到表gen3_data和gen2_data中。您可以删除一个文件并对其进行测试。让我知道如果有任何问题,我们可以调试


Q: 这正是问题所在。我想分离来自s3的数据,为此我有两个单独的s3事件,希望雪花管道,每个都可以列在自己的事件中。但是这两条管道都有相同的ARN,所以在这个级别上分离似乎是不可能的,或者是吗

A: 也许我没有正确理解这一点。是否要将同一文件加载到两个目标表中,还是要区分加载到各自选项卡中的文件?创建外部后台文件时,可以在语句中包含前缀。当数据文件上载到bucket中时,与stage目录路径匹配的所有管道都会将文件一次性加载到相应的目标表中

例如:创建两个阶段 DEV的阶段是“
s3://bucket/sub\u folder\u 1
”,PROD的阶段是“
s3://bucket/sub\u folder\u 2

将“复制到”命令创建到目标表,该目标表定义为也指向相应的阶段


Q: 是的,谢谢!我在创建外部阶段时使用前缀/文件夹来计算解决方案

最初的想法是在s3端使用两个不同前缀的事件,因为我们还需要它们用于其他目的

所以,没有办法明确地告诉管道要侦听哪个队列(即分配ARN),是吗

A: 这是正确的。每个管道的阶段引用必须不同,否则它们可以将同一组文件加载到一个或多个目标表中

copy into gen3_data(device_id, event_datetime, load, origin, inserted_at ) 
from (select $1:device_id, TO_TIMESTAMP_NTZ($1:event_datetime), $1:load, metadata$filename, CURRENT_TIMESTAMP from @rawdata)
copy into gen2_data(device_id, event_datetime, load, origin, inserted_at) 
from (select $1:device_id, TO_TIMESTAMP_NTZ($1:event_datetime), $1:load, metadata$filename, CURRENT_TIMESTAMP from @rawdata)