我有一个事务事实表和产品、时间和位置作为维度表。这个事实表是稀疏的,所以如果 1 月份没有披萨售出,那么事实表中就没有披萨的记录。
当我按不在结果中的比萨的产品汇总结果向下钻取时。但我希望它具有 0 个值作为units_sold = 0。
一种解决方案是使用左外连接将产品表连接到事实表。然后我可以得到想要的结果。
但是当我使用另一个维度(例如位置或时间)进行切割时,结果中又缺少这些产品。
外连接为其他维度的外键提供空列,因此 WHERE 子句将再次删除它们。
我该如何解决这个问题?(我使用 ROLAP)
正如一些人回答的那样,使用连接条件是一个好主意。但我需要更通用的解决方案。
例如,
表格1
person birth year death year
a 1950 2006
b 1952 2008
c 1960 2007
d 1953 1990
我想逐年统计出生于 1950 年至 1953 年并死于 2006 年至 2008 年的人数。
喜欢
birth = 1950 death = 2006 count = 1
birth = 1951 death = 2006 count = 0
...
我们是否可以通过适当地使用连接条件和 where 条件来处理这种情况。