我有一个标题-详细信息类型的需求。
例如:
我的维度是产品、客户、日期表
我的事实表是FactOrders(列:订单号、产品ID、客户ID、日期、商品数量、总金额、包装成本)。
这是一个星型模式。
有一个新的要求,即添加/显示订单行项目的数据,并进行钻取,以便当用户单击订单时,他们应该能够钻取到显示订单行的新页面。
现在我正在从数据建模的角度思考这个需求。由于存在 pkg 成本,摆脱 FactOrders,仅使用 FactOrderLines 看起来并不是一个解决方案,因为这是一个订单级别值,无法分配到订单行。
我想到了 2 个解决方案:
创建 FactOrderLines 并将其连接到 FactOrders。但这会使模型变成雪花。
另一个选项是创建一个具有不同订单号的新维度,并将其视为维度表,然后创建 FactOrderLines。然后,将此暗淡表连接到 FactOrderLines 和 FactOrders。因此,我通过在 FactOrders 和 FactOrderLines 之间没有关系来保留星型模式,但我可以在 OrderNum 中实现钻取行为。
针对此类需求,推荐的模式是什么?
根据意大利人的说法,将标头合并到现有的事实表中并仅保留一个事实表是正确的方法。
https://www.sqlbi.com/articles/header-detail-vs-star-schema-models-in-tabular-and-power-bi/
关于pkg成本分摊,不分摊。只要确保当您对其进行计算时,您是在标题级别进行的(不同计数等)。