雪花数据传输和格式化
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 加载到雪花时数据发生变化