0

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

现在我正在将表格结构格式化为可用于 PowerBI 和 3rd 方的清晰格式,这不是问题。我已经为我希望的表和/或视图创建了所有必要的 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
);

在缝合从其他来源加载数据后,我如何每天更新这些?

4

1 回答 1

0

您面临简单与效率的两难境地。

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

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

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

  1. 使用附加数据INSERT
  2. 合并数据使用MERGE(通常更复杂和更灵活)
于 2020-02-19T05:56:22.097 回答