在Snowflake中,有一个名为Snowpipe的概念,它将自动将数据从不同的数据源加载到已配置的表中。
我们正在尝试通过Snowpipe将其加载到雪花中时进行归一化。
product_create.html
文件中的值
<form action="." method="post" enctype="multipart/form-data"> {% csrf_token %}
<p>Product ID {{product_form.product_id }}</p>
<p>Color Parent {{color_form.color}}</p> # Button target to add more {{color_form.color}}
<p>Video URL {{product_form.video}}</p>
<h3>Technical Specifications</h3>
<h4>Thickness Options</h4>
<p> # Button target to add more {{thickness_form.*}}
Dimension: {{thickness_form.dimension}} {{thickness_form.dimension_unit}}
Alias: {{thickness_form.alias}} {{thickness_form.alias_unit}}
</p>
<p><input type="submit" value="Save" /></p>
</form>
我们无法在同一管道中填充表A和表B,因为该管道只有一个copy语句。
是否有像依赖PIPE这样的概念以及其他先加载查找表并从示例文件加载主表的方法?
注意:
答案 0 :(得分:1)
一旦云服务提供商的Blob存储位置中的源数据可用,便应使用Snowpipe将数据加载到表中。您无法在Snowpipes之间设置依赖关系,否则无论如何都会增加管道的延迟。
您最好的选择是设置两个Snowpipe,以在数据到达Blob存储中后立即加载两个表,然后使用Snowflake tasks处理依赖关系和业务逻辑。
答案 1 :(得分:0)
我有一个多表复制的想法:
这将以给定的时间间隔将数据填充到目标表中。使用此选项,不会立即从您的源位置复制文件。必须检查TASK hoe上的选项才能在每次运行时得到通知。
希望这会有所帮助。让我知道您在开发存储过程方面是否需要任何帮助!
非常感谢, 斯里加
答案 2 :(得分:0)
只有几个想法:
设置Snowpipe以加载到单个永久性暂存区(PSA)表中。
使用哈希码作为两个分离表的代理键 (如果您必须使用代理键)。 这样,您不必查找代理键值。 您的表格如下所示: TableA-EmployerHash,EmployerName; TableB-EmployeeHash,EmployeeName,EmployerHash;
然后使用存储过程创建一个Task,该Task将发出多表插入,以便您将使用相同的源查询同时加载到两个表中。 (https://docs.snowflake.net/manuals/sql-reference/sql/insert-multi-table.html#insert-multi-table)
HTH, Gabor