不真实的事实 table

Grain of factless fact table

在 sql 服务器 14 中设计一个 factless fact table。应该很简单,但是..:我需要检查每个 day/client/team/status 的访问量。 除了这些访问量之外,我还需要跟踪每次访问时完成的操作量。

            SELECT [VISITS_PK]
                  ,[PERIOD_SK]
                  ,[CLIENT_SK]
                  ,[TEAM_SK]
                  ,[STATUSS_SK]
                  ,[ACTIONS_SK]
              FROM [dbo].[FACT_VISITS]

会 return

              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,但如果我不想考虑这些操作而只查看我总共访问了多少次,我是否需要另一个事实 table 与另一个粮食?我宁愿使用一个事实 table,因为访问量实际上更加聚合。

编辑:actions_sk 包含维度 table 的 link,其中包含有关所执行操作的详细信息。前 3 行是一次访问,执行了 3 个操作,最后 2 行是一次访问,执行了 2 个操作。

不是每个操作一行,每次访问只有一行,以及该访问中操作的总和:

          VISITS_PK PERIOD_SK   CLIENT_SK   TEAM_SK STATUSS ACTIONS
          1         20160515    1           1       1       3
          2         20160515    2           2       1       2

根据对您的数据的新理解编辑

好的,我会将 table 名称更改为 Fact_Actions,因为这是最低级别的粒度,并且 Make 访问 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 值来计算访问数。