【问题标题】:Should the "count" measure be stored in the fact table?“计数”度量是否应该存储在事实表中?
【发布时间】:2015-08-04 22:30:09
【问题描述】:

我有一个事实表,其中包含某些服务的“以小时为单位的等待时间”。我有很多维度可以描述基于不同切片的等待时间;但是,我也有兴趣了解有多少人(计数)通过相同维度的过滤器获得服务。

鉴于等待时间(以小时为单位)和获得服务的人数完全相同,我认为将其保存在同一个事实表中是最佳做法。我的问题是:

  1. 是否应该为提到的计数度量使用不同的事实表?
  2. 如何包含此度量?我只是在每一行中放 1 吗?因为不管等待时间长短,他们只获得了一次服务(在我的场景中,你不能高于/低于 1)。

【问题讨论】:

    标签: data-warehouse dimensions fact-table datamart


    【解决方案1】:

    1) 考虑一下现有事实表的粒度。听起来这可能是“一个人接受服务的场合”。如果这与您要计算的相同,那么是的 - 等待时间和计数是相同的。

    但是,虽然它们很可能是相同的谷物,但可能不需要在表中添加任何内容。阅读第 2 点的解释。

    2) 您可以在每一行的列中添加 1,但我不确定您会从中获得什么。你没有说什么工具会使用这些数据,但你应该能够做某种计数/不同的计数。

    在您标记 SSIS 的基础上工作,因此很可能使用 Microsoft 的 BI 堆栈:

    • TSQL 有count(),你可以做count(distinct [column])
    • SSAS 具有计数和非重复计数作为聚合类型。
    • MDX 提供几种不同类型的计数。
    • SSRS 具有 Count、CountDistinct 和 CountRows。

    您是进行正常计数还是非重复计数取决于您是要询问“有多少人使用此服务?”“有多少不同 有人使用过这项服务吗?”

    【讨论】:

    • 感谢您的回答。但是您的解释表明问题 1 的答案实际上是“否”(即我不需要额外的事实表来处理计数,而是可以使用 SQL 或 MDX 脚本来解决它)。
    • @LearnByReading - 是的,但我不想暗示它们与可能误导人们的谷物不同。它们相同的事实是使用该表计数可能对您有用的部分原因。不过我会做一个小编辑... ;)
    • 哦,我明白了,非常明智。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2021-09-18
    • 2011-06-17
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多