SSAS 多维数据集建模
SSAS Cube Modeling
两部分架构问题:
我有员工、职务和主管维度。我有点想将它们保持在一个维度上,并有类似站点 > 主管 > 职位 > 员工之类的东西。问题是这些需要是 SCD。也就是说,它们具有与事实相关的历史联想。事实表要求每五分钟处理一次(仪表板)。
1) 我是否应该将它们放在一个带有代理键的维度中(或就此而言是复合的)? keys/surrogate 键将由 calendar_id - employee_id.
组成
2) 事实表是否维护了对三个不同维度的引用?
要求每 5 分钟处理一次(MOLAP SSIS ETL 驱动处理)。让我倾向于将 time/change 保留在事实中,这样我就可以轻松地处理维度和事实表。
我会将其设计为单一维度,具有您提到的层次结构:站点 > 主管 > 职位 > 员工。
我们称此维度为 EmployeeAssignment,因为它的粒度不是 Employees,而是 site/supervisor/job 职位的任意组合,该员工 "adopts" 在 his/her 职业生涯中。 (随意想出一个更好的名字)。
我认为您在此维度中不需要 calendar_id 键:基于 DISTINCT SiteID、SupervisorID、JobTitleID、EmployeeID 的代理键就足够了。添加 calendar_id 键会使维度做太多工作:除了切分实际事实之外,这会使维度回答诸如
之类的问题
"Where was employeeID 12345 (in the site/supervisor/job title network) on 1 January 2015?" 和
"How many employees did supervisorID 98765 supervise on 1st January 2015?"
恕我直言,最好用事实而不是维度来解决这些问题。我用 EmployeeDay 度量处理地址的一个多维数据集:按维度 "EmployeeAssignment" 和时间切片,如果员工在那一天 "assignment" 中,则它只有一个 1。
这个 EmployeeAssignment SCD 实际上变化非常缓慢,尤其是与您的 5 分钟事实更新间隔相比。员工不会每 5 分钟移动一次或获得晋升,因此不需要比每天更频繁地重新处理维度。
如果我有任何误解,请在评论中告诉我。
两部分架构问题:
我有员工、职务和主管维度。我有点想将它们保持在一个维度上,并有类似站点 > 主管 > 职位 > 员工之类的东西。问题是这些需要是 SCD。也就是说,它们具有与事实相关的历史联想。事实表要求每五分钟处理一次(仪表板)。
1) 我是否应该将它们放在一个带有代理键的维度中(或就此而言是复合的)? keys/surrogate 键将由 calendar_id - employee_id.
组成2) 事实表是否维护了对三个不同维度的引用?
要求每 5 分钟处理一次(MOLAP SSIS ETL 驱动处理)。让我倾向于将 time/change 保留在事实中,这样我就可以轻松地处理维度和事实表。
我会将其设计为单一维度,具有您提到的层次结构:站点 > 主管 > 职位 > 员工。
我们称此维度为 EmployeeAssignment,因为它的粒度不是 Employees,而是 site/supervisor/job 职位的任意组合,该员工 "adopts" 在 his/her 职业生涯中。 (随意想出一个更好的名字)。
我认为您在此维度中不需要 calendar_id 键:基于 DISTINCT SiteID、SupervisorID、JobTitleID、EmployeeID 的代理键就足够了。添加 calendar_id 键会使维度做太多工作:除了切分实际事实之外,这会使维度回答诸如
之类的问题"Where was employeeID 12345 (in the site/supervisor/job title network) on 1 January 2015?" 和 "How many employees did supervisorID 98765 supervise on 1st January 2015?"
恕我直言,最好用事实而不是维度来解决这些问题。我用 EmployeeDay 度量处理地址的一个多维数据集:按维度 "EmployeeAssignment" 和时间切片,如果员工在那一天 "assignment" 中,则它只有一个 1。
这个 EmployeeAssignment SCD 实际上变化非常缓慢,尤其是与您的 5 分钟事实更新间隔相比。员工不会每 5 分钟移动一次或获得晋升,因此不需要比每天更频繁地重新处理维度。
如果我有任何误解,请在评论中告诉我。