我刚刚开始深入数据仓库,我有一个问题,我似乎无法弄清楚。
我的公司有十家商店,每家商店都有一定的员工。在我的数据仓库中,我有一个代表商店的维度。员工维度是SCD,包含开始/结束列以及员工工作的商店。
我的事实表基于员工(匿名)向商店经理提供的建议。此表包含建议类型(清洁度,工资问题等),提交日期(外键键入时间维度表)以及提交它的商店。
我想要做的是创建一份报告,显示建议数量与给定年份中员工人数的比率。由于员工人数会定期更改,因此无法对员工总数进行简单查询。
不幸的是,我在网上搜索了相当多的尝试寻找解决方案,但大多数示例都是基于零售的销售,这与我正在尝试的不同。
任何帮助将不胜感激。我确实在我的机器上安装了AdventureWorksDW,所以如果有人提供使用它的建议,我可以将其用作参考点。
提前致谢!
答案 0 :(得分:1)
缓慢变化的维度应该有一个标识行的源的自然键(否则它将如何知道要比较哪些来检测更改)。这应该在维度的所有迭代中保持不变。您可以通过计算自然密钥的不同计数来获得员工数量。
编辑:如果您的交易表(建议)上有日期,则按照建议日期的计算函数(例如datepart (yy, s.SuggestionDate)
)和业务分组的员工数量不同单位应该这样做。您无需担心员工维度上的日期,因为适用的行应直接加入事务表。
答案 1 :(得分:0)
为每个月的每个商店添加另一个关于员工数量的事实表 - 您可以使用该月的最大数量。然后是一年中的平均月份,将其用作“一年中的员工数量”。
在每个月末加载新的事实表。新表格如下:
事实表:EmployeeCount
KeyEmployeeCount int - 代理键
KeyDate int - FK到日期维度,指向一个月的最后一天
KeyStore int - 用于存储维度的FK
NumberOfEmployes int - (最大)给定商店中月份的员工数
如果您需要更精细的分辨率,请使用“每周”甚至“每天”。主要思想是对一年中给定商店的NumberOfEmployes度量进行平均。