维度表高级知识与应用解析
1. 特定时间点的经理查询
在数据查询中,有时需要确定任意给定时间点的经理是谁。例如,要查看2007年7月1日每个部门的经理是谁,可以使用以下查询:
SELECT
department.department_name,
employee.employee_name
FROM
department_manager_facts,
department,
employee,
day ALIAS effective_day,
day ALIAS expiration_day
WHERE
effective_day.full_date <= '7/1/2007' AND
expiration_day.full_date >= '7/1/2007' AND
...(additional joins)...
此查询通过对日期维度进行别名处理,并应用粗体显示的一对约束条件,检索出在2007年7月1日有效的事实记录。第一个约束将结果行限制为任期生效日期在问题日期当天或之前的记录;第二个约束将结果限制为到期日期在问题日期当天或之后的记录。两者结合,仅选择在该日期处于活动状态的记录。
不过,当维度列中存在 NULL 值时,会给构建报告带来不必要的复杂性,应尽量避免。例如,活跃的部门负责人可能没有到期日期,如果事实表中的日期键记录为 NULL ,上述查询将无法识别在2007年7月1日活跃但尚未离职的经理。即使使用外连接,到期日期的比较也会失败。解决方法是在
超级会员免费看
订阅专栏 解锁全文
6192

被折叠的 条评论
为什么被折叠?



