有没有一种健康的方式来在事实维度之间建立联系,而他们的关系只是部分的?

问题描述 投票:0回答:1

我正在尝试获取一个与相关度量仅具有不完整关系的维度。如果我们有两个表 A 和 B 及其 #'d 列,则 A.1 列中的集合将具有 B.1 集合中不存在的列成员。

在示例场景中,我们有三个表:

项目:由sql视图提供:T_Items

商品编号 项目 正常价格
1 苹果 1.99 美元
2 香蕉 2.99 美元
3 葡萄 3.99 美元
4 火腿 4.99 美元
5 牛肉 5.99 美元

特价商品:由sql视图提供:T_Items_On_Sale

特价商品ID 商品编号 销售价格 销售期间
1 1 1.00 美元 1/1 - 1/10
2 1 1.00 美元 1/21 - 1/31
3 2 $2.00 1/11 - 1/20
4 3 $3.00 1/21 - 1/30
5 2 1.00 美元 1/1 - 1/10

销售:由sql视图提供:T_Sales

交易ID 商品编号 日期 价格 数量
1 1 1/2 1.00 2
2 4 1/23 4.99 1
3 3 1/22 3.00 2
4 1 1/15 1.99 1
5 2 1/4 1.00 1
6 5 1/17 5.99 1

根据上述数据,我正在尝试安排如下内容:

尺寸: 关键栏目: 提供数据表:
特价商品 特价商品ID T_物品_特价
测量: 提供数据表:
销售 T_销售

我做了如下的桥接定义:

事实加入专栏: 桥台: 加入专栏: 连接列(维度表):
销售.ItemId T_物品_特价 T_Items_On_Sale.ItemId 促销商品.ItemId

Items_on_sale 的维度条目希望与基于商品 ID 的销售度量相关联。

  • 但商品 ID 不是 Items_on_Sale 维度中使用的键
  • 他们的关系也不完整。
    • 有从未打折的商品的销售(商品 4 和 5 的销售条目),因此不会填写此关系的元组

在我的真实场景中,我试图与这个部分相关的维度相关的度量最终将遗漏每一个不完整的记录,并极大地改变结果。是否有更健康的方法将这些维度与这些措施联系起来?

在我自己的测试中,我尝试过:

  • 弄乱桥定义的每种组合:
    • 两边一对一选择

    • 是否根据商品ID或On Sale条目ID将“On sale”维度侧关联到其维度。

  • 增加允许的最大未解析行数,以允许加载仍然合法完成。但同样,这仅意味着最终产品缺少数据。
mdx iccube
1个回答
0
投票

感谢您彻底解释问题。正如您所指出的,桥接表仅过滤桥接表中的 ID 的事实表(如 SQL 内部联接)。

要链接

T_Items_On_Sale
维度并保留事实表中的所有信息,您可以:

  • 使用 SQL
    T_Items_On_Sale
    使用不存在的所有项目 ID 来扩展
    union
    。对于没有任何销售的商品,价格和期间列将为空。
  • 创建一个新的事实表,它是
    T_Sales
    T_Items_On_Sale
    Item ID
    Date
    之间的
    Sale Period
    的左连接。现在,您可以将
    T_Items_On_Sale
    T_Items
    作为维度单独链接到此表。
© www.soinside.com 2019 - 2024. All rights reserved.