1

我对必须在我的场景中编写合并语句以将数据从表加载到维度表和事实表的方式感到困惑。

下面是合并语句,我试图将数据从 JSON 表加载到我的 DIM 产品表中,但我正在加载 NULL 值。

我在合并时做错了什么吗?我不应该在主键上合并,而是在城市名等字段上合并

我在尝试将数据加载到事实表时遇到了同样的问题

有人可以帮忙吗?

merge into dim_product as a using (select productID, product from jsontable) as b
on b.productID = a.productID
when matched then update a.productID = b.productID
when not matched then insert (productID, product) values (b.productID, b.product));

下面是现有维度产品表

在此处输入图像描述

下面是我尝试将新记录Mango合并并插入到我的 DIM 表中并将PRODUCTID填充到我的事实表中的示例 JSON

在此处输入图像描述

下面是事实表

在此处输入图像描述

4

1 回答 1

0

如果我们在源上没有 ProductID 并且只在 Dim_Product 中设置它,我们应该使用业务密钥。在您的情况下, ProductName 是业务密钥。解决方案很简单,当您进行 MERGE 时,您应该使用 ProductName 而不是 ProductID 作为键。

您的 MERGE 应该类似于以下内容:

merge into dim_product as a using (select ProductName from jsontable) as b
on b.ProductName = a.ProductName
when not matched then insert (ProductName) values (b.ProductName));

如果您有更多描述产品的属性,则应在 MERGE 中对其进行修改。

于 2021-10-27T10:50:02.413 回答