【问题标题】:Grain of factless fact table无事实事实表的粒度
【发布时间】:2016-05-18 15:08:10
【问题描述】:

在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 行是一次访问,包含 3 个操作,最后两行是一次访问,包含 2 个执行操作。

【问题讨论】:

  • 为什么说样本数据显示了两次访问,而每一行都有不同的VISITS_PK?对我来说,这表明每一行都来自不同的访问。
  • 我编辑了我的帖子,前 3 行是一次访问,在客户端执行了 3 个操作,最后 2 行是一次访问,执行了 2 个操作。
  • 之所以叫VISITS_PK是因为这个表的核心是获取访问量,但是每次访问执行的动作量也需要知道,虽然不是主要问题.所以我认为将表访问和访问_pk 称为键名是不好的命名,因为最低级别是执行的操作。
  • 是的,您选择的名称在数据方面误导了我。我已经更新了我的答案。

标签: sql-server dimensional-modeling


【解决方案1】:

每次访问只保留一行,而不是每个操作一行,其中包含该访问中操作的总和:

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

【讨论】:

  • 这删除了有关操作的信息,我现在看到我忘记将 _SK 放在 STATUS_SK 和 ACTIONS_SK 后面,但它们对于确定访问中发生了哪些操作是必要的。删除此信息不是一种选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
相关资源
最近更新 更多