在sql server 14中设计一个无事实的事实表。应该很简单,但是......:我需要检查每天/客户/团队/状态的访问量。 除了这次访问量之外,我还需要跟踪每次访问时所执行的操作量。
SELECT [VISITS_PK]
,[PERIOD_SK]
,[CLIENT_SK]
,[TEAM_SK]
,[STATUSS_SK]
,[ACTIONS_SK]
FROM [dbo].[FACT_VISITS]
将返回
VISITS_PK PERIOD_SK CLIENT_SK TEAM_SK STATUSS_SK ACTIONS_SK
1 20160515 1 1 1 1
2 20160515 1 1 1 2
3 20160515 1 1 1 3
4 20160515 2 2 1 1
5 20160515 2 2 1 2
摘要:完成了2次访问,总共完成了5次操作。
跟踪操作量允许我使用COUNT,但如果我不想考虑这些操作并且只看到我总共访问了多少次,那么我是否需要另一个带有另一个粒子的事实表?我宁愿使用一个事实表,因为访问量实际上只是更加聚合。
编辑:actions_sk包含指向维度表的链接,其中包含有关已执行操作的详细信息。前三行是一次访问,有3次操作,最后两行是一次访问,有两次执行操作。
答案 0 :(得分:2)
而不是为每个操作添加一行,每次访问只有一行,并且访问中的操作为:
VISITS_PK PERIOD_SK CLIENT_SK TEAM_SK STATUSS ACTIONS
1 20160515 1 1 1 3
2 20160515 2 2 1 2
编辑基于对数据的新理解:
好的,我会将表名更改为Fact_Actions,因为这是最低级别的粒度,并且让访问次数为SK,如下所示:
VISITS_SK PERIOD_SK CLIENT_SK TEAM_SK STATUSS_SK ACTIONS_PK
1 20160515 1 1 1 1
1 20160515 1 1 1 2
1 20160515 1 1 1 3
2 20160515 2 2 1 4
2 20160515 2 2 1 5
现在,您可以通过计算行来计算操作数,并通过计算DISTINCT Visits_SK值来计算访问次数。