雪花数据传输和格式化

Posted

技术标签:

【中文标题】雪花数据传输和格式化【英文标题】:snowflake data transfer and formatting 【发布时间】:2020-02-14 06:06:06 【问题描述】:

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

现在我正在将表格结构格式化为可用于 PowerBI 和第 3 方的清晰格式,这不是问题。我已经为我希望的表和/或视图创建了所有必要的 SQL,并将现有数据插入到这个新结构中。

但是我的问题是我该如何更新出现的任何新数据?

例如dev 有一个名为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
);

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

【问题讨论】:

【参考方案1】:

您面临简单与效率的两难选择。

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

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

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

    使用INSERT附加数据 使用MERGE 合并数据(通常更复杂、更灵活)

【讨论】:

以上是关于雪花数据传输和格式化的主要内容,如果未能解决你的问题,请参考以下文章

雪花不接受批量加载的文件格式

如何在雪花日期数据类型字段中插入儒略日期

使用 talend 将数据从 as400 加载到雪花时数据发生变化

如何通过GCS将GA360表从Big query导出到雪花作为json文件而不丢失数据?

预计将解析从 S3 加载的雪花数据中的列时到达记录末尾

如何将所有数据提取到拆分行中的雪花对象数组中?