无事实的事实表的粮食

时间:2016-05-18 15:08:11

标签: sql-server dimensional-modeling

在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次操作,最后两行是一次访问,有两次执行操作。

1 个答案:

答案 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值来计算访问次数。