【问题标题】:How should I design my SSAS cube to handle non aggreagable data?我应该如何设计我的 SSAS 多维数据集来处理不可聚合的数据?
【发布时间】:2014-12-08 10:49:17
【问题描述】:

我正在开展一个 SSIS/SAAS 项目以构建 BI 解决方案。

我的一个数据源包含有关服务台的信息。

用户可以创建与服务目录相关的新请求(例如,因为他的笔记本电脑崩溃了)。 因此它将在请求表中生成一个新行(创建日期、评论、跟踪号等)。 要解决此问题,将执行很少的操作。所以这些动作都会被记录在动作表中(Request和Action表之间是一对多的关系)。

动作可以是:“尝试格式化计算机”、“更换硬盘”等。 在生产环境中,一个请求包含大约 10 到 100 个操作。

我在设计这个时遇到了一个问题,因为我的事实表的许多列无法聚合。 实际上有很多日期列、跟踪号(字符串)、布尔值和只有几个 SUM 属性。

这是 dw 模型的摘录:

事实请求:

  • ID(DW 主键)
  • 业务密钥(原始PK)
  • 请求编号(字符串)
  • 开始日期(日期时间)
  • 结束日期(日期时间)
  • 最大分辨率日期(日期时间)
  • 是时候解决请求了
  • 评论(字符串)
  • 延迟(整数)
  • ...

事实行动:

  • ID(DW 主键)
  • 业务密钥(原始PK)
  • 开始日期(日期时间)
  • 结束日期(日期时间)
  • 名称(字符串)
  • 是时候解决问题了
  • ...

我知道在事实表中添加不可聚合的数据并不是最好的解决方案。

在我的 SSAS 项目中,我基于我的 FactRequest 表创建了一个新的多维数据集。 除了“字符串”属性(例如请求标识符)之外,它工作正常,因为它是一个字符串。 我应该使用 SSAS“事实维度”根据我的 FactRequest 表创建“请求”维度吗?

有什么想法吗? 非常感谢,

【问题讨论】:

  • 你的最后一句话基本上说明了一切。将所有非度量移出事实度量组本身,并指向它自己的维度。然后,您可以使用此维度进行过滤并执行您想要的操作,并且胖表可以跨常规维度进行聚合。

标签: sql-server ssis sql-server-2012 ssas


【解决方案1】:

听起来您缺少特定要求(这在 BI 项目中很常见)。是否需要在报告中显示文本数据?如果是:是否仅在某些详细视图中需要?

ID、业务密钥、请求编号等列在您的多维数据集中通常没有什么价值。此数据仅对详细报告有用(例如,获取针对某个请求 ID 执行的所有操作),并且此类列表通常不需要汇总。这样的列表不需要多维数据集,可以直接用SQL查询数据库。

仅当您需要摘要报告(例如,获取每个工作日解决请求所花费的平均时间)时,多维数据集才有意义 - 如果您可以获得几乎相同的结果,那么使用 SSAS 数据库可能仍然不值得使用直接 SQL 查询的查询响应时间。

【讨论】:

  • 我需要提供完整的详细报告以及摘要报告。我需要提供 OLAP 多维数据集,它将通过 PowerPivot 使用。
  • 那么你提出的——“事实维度”——可能是在你的多维数据集中存储文本数据的唯一方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多