【问题标题】:Data warehouse reporting questions数据仓库报告问题
【发布时间】:2009-06-15 14:38:44
【问题描述】:

我刚刚开始涉足数据仓库,但有一个问题我似乎无法弄清楚。

我的公司有十家商店,每家都有一定的员工。在我的数据仓库中,我有一个代表商店的维度。员工维度是一个 SCD,具有开始/结束列,以及员工所在的商店。

我的事实表基于员工(匿名)给商店经理的建议。此表包含建议类型(清洁度、工资问题等)、提交日期(时间维度表的外键)以及提交的商店。

我想做的是创建一个报告,显示给定年份的建议数量与员工数量的比率。因为员工人数会定期变化,所以我无法对员工总数进行简单的查询。

不幸的是,我在网上搜索了很多试图找到解决方案,但大多数示例都是基于零售的销售,这与我正在尝试做的不同。

任何帮助将不胜感激。我的机器上确实安装了 AdventureWorksDW,因此如果有人提出使用建议,我可以将其用作参考。

提前致谢!

【问题讨论】:

  • 那你用的是SQL吗?如果您发布您的基本表结构会有所帮助。

标签: data-warehouse dimensions


【解决方案1】:

缓慢变化的维度应该有一个自然键来标识行的来源(否则它怎么知道要比较什么来检测变化)。这在维度的所有迭代中应该是恒定的。您可以通过计算自然键的不同计数来获得员工数量。

编辑:如果您的交易表(建议)上有日期,则按建议日期的计算函数(例如datepart (yy, s.SuggestionDate))和业务部门分组的员工的不同计数应该做。您无需担心员工维度上的日期,因为适用的行应该直接连接到事务表。

【讨论】:

  • 雇员表上确实有一个自然键。最大的问题是在查询多维数据集时获取特定业务部门在给定时间段内的员工数量。如果需要架构,请告诉我,我会发布一些内容
【解决方案2】:

为每个月的每个商店中的员工人数添加另一个事实表——您可以使用该月的最大人数。然后是一年的平均月数,将其用作“一年中的员工人数”。

在每个月底加载您的新事实表。新表如下所示:

事实表:EmployeeCount

KeyEmployeeCount int -- 代理键

KeyDate int -- FK 到日期维度,指向一个月的最后一天

KeyStore int -- FK 存储维度

NumberOfEmployes int -- 给定商店当月的(最大)员工人数

如果您需要更精细的分辨率,请使用“每周”甚至“每天”。主要思想是平均一年中给定商店的 NumberOfEmployes 度量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多