Snowflake cloud data platform Snowpipe自动摄取配置看起来会触发所有管道

Snowflake cloud data platform Snowpipe自动摄取配置看起来会触发所有管道,snowflake-cloud-data-platform,snowflake-pipe,Snowflake Cloud Data Platform,Snowflake Pipe,我不熟悉Snowflake data warehouse,希望使用snowpipe加载数据,并从外部阶段(S3 bucket)自动摄取数据,该阶段包含多个文件夹(每个数据库一个),这些文件夹中有多个文件,每个表一个。不同文件夹中的文件将在不同的时间更新,我目前正在使用自动摄取转到S3到SQS到Snowpipe 我的示例S3 bucket设置如下: myS3bucket.s3amazonaws.com /db1 account.csv product.csv

我不熟悉Snowflake data warehouse,希望使用snowpipe加载数据,并从外部阶段(S3 bucket)自动摄取数据,该阶段包含多个文件夹(每个数据库一个),这些文件夹中有多个文件,每个表一个。不同文件夹中的文件将在不同的时间更新,我目前正在使用自动摄取转到S3到SQS到Snowpipe

我的示例S3 bucket设置如下:

myS3bucket.s3amazonaws.com
    /db1 
       account.csv
       product.csv
    /db2
        invoice.csv
        employees.csv
我目前的理解是,我将为每个表创建一个管道,这样account.csv将与一个管道相关,该管道将填充account表,然后product.csv将与另一个管道相关,以填充产品表等

目前,如果我将新文件添加到bucket中,所有管道都会被触发,因为通知在bucket中

我的问题是:

  • 添加新文件时触发所有管道是否正确?我是否需要将db1和db2设置为不同的外部阶段,以便如果我向db1文件夹添加一个文件,那么只读取链接到该外部阶段的管道
  • 我读过SNS可以使用,但不确定它是如何用于滑雪管的。S3是否发送了一条消息,以便它能够确定调用哪个管道并将消息扇出到该管道
  • 有没有更好的方法来解决这个问题,然后我用上面的方法

感谢您提供的帮助

如果您的阶段包含文件路径,那么当S3发送一条消息表示已添加文件时,Snowflake将计算出哪些阶段受到影响,因此只有指向该文件夹的管道才会拉入该文件

如果您有三个管道和三个阶段,并且这些阶段指向以下文件夹:

  • 1:
    blahblah
  • 2:
    blahblah/db1
  • 3:
    blahblah/db2

然后,当在
blahblah/db1
中创建文件时,它将触发管道1和2,但不会触发管道3。

如果您的阶段包括文件路径,那么当S3发送消息表示已添加文件时,Snowflake将确定哪些阶段受到影响,因此只有指向该文件夹的管道才会拉入文件

如果您有三个管道和三个阶段,并且这些阶段指向以下文件夹:

  • 1:
    blahblah
  • 2:
    blahblah/db1
  • 3:
    blahblah/db2

然后,当在
blahblah/db1
中创建文件时,它将触发管道1和2,但不会触发管道3。

当使用自动摄取雪花创建每个雪花帐户的SQS时,来自S3的所有通知都将转到该SQS,然后根据每个管道的阶段定义(桶和路径)传递到每个管道。如果阶段在路径中有重叠,SQS可能会将通知传递给多个管道

请参阅“AmazonS3自动Snowpipe”文档中“创建启用自动摄取的管道”下的“重要”部分


当使用“自动摄取雪花”为每个雪花帐户创建一个SQS时,来自S3的所有通知都会发送到同一个SQS,然后根据每个管道的阶段定义(桶和路径)传递到每个管道。如果阶段在路径中有重叠,SQS可能会将通知传递给多个管道

请参阅“AmazonS3自动Snowpipe”文档中“创建启用自动摄取的管道”下的“重要”部分