雪花数据传输和格式化

时间:2020-02-14 06:06:06

标签: snowflake-task

我们正在Snowflake中创建一个DataWarehouse,基本上,我们的开发人员所做的就是通过使用缝制将他们所有现有数据传输到Snowflake中的数据库,然后每天进行更新。

现在,我正在将表格结构格式化为清晰可辨的格式,以供PowerBI和第三方使用,这已经不是问题。我已经为所需的表和视图创建了所有必要的SQL,并将现有数据插入了新结构。

但是我的问题是我该如何更新随之而来的任何新数据?

例如开发人员有一个名为SN_BARCODE的表,其中包含所有产品的所有条形码,该表中的字段为:

   APNS (VARCHAR)
 , BARCODEID (NUMBER)
 , DATECREATED (TIMESTAMP)
 , DATEMODIFIED (TIMESTAMP)
 , DATEUPDATED (TIMESTAMP)
 , ID (NUMBER)
 , PRODUCTID (NUMBER) 
 , VENUEID (NUMBER) 
 , _SDC_BATCHED_AT(TIMESTAMP) 
 , _SDC_RECEIVE_AT (TIMESTAMP)
 , _SDC_SEQUENCE (TIMESTAMP)
 , _SDC_TABLE_VERSION (TIMESTAMP)  

我要执行以下操作

CREATE OR REPLACE Table pc_stitch_db.Dim_BarCodes
 (Barcodes_Id int, Barcodes_ProductId, Barcodes_APN, PRIMARY KEY (Barcodes_Id)) AS
SELECT
    "PC_STITCH_DB".sn_barcode.barcodeid AS Barcodes_Id,
    "PC_STITCH_DB".sn_product.id AS Barcodes_ProductId,
    "PC_STITCH_DB".sn_barcode.apns AS Barcodes_APN
FROM "PC_STITCH_DB".sn_Barcode
INNER JOIN "PC_STITCH_DB".sn_product  ON (
        "PC_STITCH_DB".sn_product.PRODUCTID = "PC_STITCH_DB".sn_barcode.productid
    AND "PC_STITCH_DB".sn_product.venueid = "PC_STITCH_DB".sn_barcode.venueid
);

针脚从其他来源加载数据后,如何每天更新这些信息?

1 个答案:

答案 0 :(得分:0)

您面临着简单与效率的矛盾。

您可以轻松创建任务,以在例如上重新创建表。使用您上面提供的CREATE OR REPLACE TABLE语句之类的语句的每日时间表。这意味着您的数据每天都会完全重新加载。

但是,如果您拥有庞大且不断增长的表,那么这种方法最终将导致容量问题。然后,您必须修改解决方案以进行增量更新。

增量更新有两种主要类型,

  1. 使用INSERT附加数据
  2. 使用MERGE合并数据(通常更复杂,更灵活)