【问题标题】:Frantic - need advice on building a report POC using SSAS 2012 [closed]疯狂 - 需要有关使用 SSAS 2012 构建报告 POC 的建议 [关闭]
【发布时间】:2014-01-18 21:30:44
【问题描述】:

对于这篇文章的冗长,我提前道歉。我不知道什么是重要的,所以我通常写得比需要的多。

一点背景

我有一个半星期的时间来创建一个 POC,以便在面向客户的报告后面使用 OLAP。我们不致力于报告工具,而且我们有大量数据,所以 OLAP 似乎很有意义(?)。现在我们使用 SSRS 2005 来处理一个有些扁平化的报告数据库,但我们有一个新客户要求我们快速变得成熟。

我在 10 年前使用 SSAS - 用它们构建了多维数据集和简单的数据透视表 - 没有 MDX。我精通 SSRS,但反对关系资源。我们没有维度模型,所以我必须模拟一个。我打算在 SSAS 2012 中进行模拟(针对 SQL 2005 DB)。

POC 要求

报告有关医生在多个属性中的表现的信息

尺寸:​​m>

  • 时间(日期/月/年)
  • 内科医生
  • 医师专业(1:M 与医师)
  • 隶属关系 1 > 隶属关系 2 > 隶属关系 3(层次结构,1:M 与医师)
  • Registry > HEDIS Measure (hierarchy, M:M with Physician, HEDIS 以下是因为“Measure”得到 令人困惑)

措施(最低粒度是医师/日期/HEDIS - 有时需要钻取患者数据):

  • 患者人群
  • 看过的患者(部分患者)
  • 分数(这是我们的 KPI - 就诊患者/患者的商百分比 人口)
  • 四分位数(基于分数;针对医师、附属机构 1、2 和 3,跨日/月/年的 HEDIS 和专业)

我创建了一个包含所有维度和两个附加度量(患者人数和已见患者)的功能立方体。我去添加分数和四分位数并冻结。现在我处于分析瘫痪模式和恐慌。我不知道 MDX 如此不直观(或者我可能只是密集),而且计算四分位数会是个问题!

所以现在我试图将一些东西与视图和静态表一起放入数据库中。在维度建模方面,我还很初级。我需要设计表格以实现最快、最简单的多维数据集开发和报告周转。它不需要完美,但我还没有看到这样的项目,我希望得到一些关于如何避免在多维数据集和报告开发过程中由于糟糕的数据库设计选择而遇到明显“陷阱”的建议.有人可以给我一个概括的“你会在我的鞋子里做什么”吗?

以下是我的一些问题/疑虑,以精神呕吐的形式出现

所以我有完全加法和非加法的措施,对吗? (我什至不确定 Score 是什么——我认为它不符合半加法的条件?)。无论如何,我对是否将这些非完全相加指标存储在 Measure Dimension 或多个不同粒度的事实表中感到困惑。

似乎走事实表路线可能不那么令人困惑,但是每个事实表是否都有自己的多维数据集并向下钻取/跨越将通过 Excel 或 SSRS 中的某种链接来完成?例如,您正在查看按年度 HEDIS 四分位数划分的 YTD 医师分数……如果它们在不同的立方体中,您如何按每月 HEDIS 四分位数深入查看 MTD 医师分数?或者他们可能会在不同度量组的同一个多维数据集中......?或者,如果我使用 Measure Dimension 并使用单个多维数据集,我如何保护用户免受上述情况的影响……他们正在按年度 HEDIS 四分位数查看 YTD 医师分数,然后将年度 HEDIS 四分位数替换为每月 HEDIS 四分位数- 这样的事情是怎么阻止的?或者这种情况是否合法?

我很想把它扔到 SSRS 中,在那里我可以通过参数控制事物,但是对于 OLAP 源来说这样的难度有多大?更不用说交互式图表了?

我现在很困惑,我什至不知道这些问题是否有意义。任何帮助(甚至是您认为有用的简洁文档的链接)都会很棒!

【问题讨论】:

  • 如果它真的是 POC,那么你不应该太担心设计,将其用作学习过程并展示最好的部分......除非它是伪装成 POC 的真正工作,因为他们不想付钱。您需要与利益相关者确定后端设计不会保持这种状态,因为它只是一个 POC。实际上,有时您必须在多维数据集中做一些看起来很疯狂的事情,以便您可以根据它构建报告,因为实际上,很多业务还不够成熟,无法使用多维数据集。
  • ...重申 POC 意味着证明它可以做到,而不是构建和设计它。您无法在一周内构建和设计完美的东西。如果您与预售中的任何人交谈,您就会知道这一切都只是虚无缥缈。
  • 谢谢,我知道你是对的。你理性的声音很有帮助。

标签: sql-server database-design reporting-services ssas data-warehouse


【解决方案1】:

一些想法:

  • 我会将医师、专业和附属机构放在一个维度中,将“医师”作为单独的属性,然后从附属机构构建用户层次结构。
  • 这给您留下了三个维度:时间、医生和注册表(我从您的描述中无法理解这方面的细节)和一个事实表。
  • 事实表应包含“患者人数”和“看过的患者”这两个度量。 “患者群体”是每个医生、时间和登记处的患者数量。我认为它不能随时间聚合。您必须决定跨时间使用哪种聚合,例如。 G。 LastChild,我。 e.每个月显示其最后一天的值,每年显示其上个月的值等。对于“已查看的患者”,我不确定您要做什么:这应该是已查看的不同患者吗?在这种情况下,您无法跨时间聚合。您必须拥有患者级别的数据,并通过与主事实表的多对多关系将患者维度(可能仅包含患者 ID 且对最终用户不可见)链接起来。那么度量可以是 DistinctCount。
  • “分数”将是一个简单的计算量度 - 就是 [Measures].[patients seen] / [Measures].[patients population]
  • YTD 和 MAT 通常也在 MDX 中作为计算成员实现。最好的解决方案是使用实用程序维度(参见例如http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx)。但对于 POC,您也可以在 WITH clause 中的每个查询基础上实现它:使用 YtdParallelPeriod 函数将其定义为时间层次结构的成员。
  • 对于四分位数,我认为最好的方法 - 至少对于 POC - 将在您用 SSRS 编写的 MDX 中的查询特定 WITH 子句中实现这一点。我会对要计算四分位数的集合进行排名,然后使用带有四个WHEN 子句的CASE 表达式来表示四个四分位数,例如`WHEN rank >= count / 4 and rank

【讨论】:

  • 非常感谢您的见解,弗兰克。我最终得到了您描述的几乎所有维度结构。幸运的是,Population(因为我们存储它的方式)和 Seen 都可以跨时间完全聚合。分数是唯一没有的衡量标准。我将保存您在最后 2 个要点中提供的参考资料,并在完成此 POC 后深入研究它们。不幸的是,我还不能完全理解 MDX,所以我现在只使用最简单的代码。
【解决方案2】:

好的,我找到了一篇文章,它尖锐而简洁地回答了我关于不可聚合度量的大部分问题,然后是一个 YouTube 视频,展示了从 OLAP 多维数据集创建 SSRS 报告实际上是多么容易。

他们是为了后代:

文章 - http://www.packtpub.com/article/measures-and-measure-groups-microsoft-analysis-services-part2 视频-http://www.youtube.com/watch?v=o2N3ZCinpPs

我想我会以不同的粒度创建多个事实表(目前是视图),并将每个事实表作为自己的度量组引入到多维数据集中,将其链接到不同细节级别的一致维度。然后,对于报告层,我将使用上面链接中标题为“Non-aggregable measure: a different approach”下的技巧。

看起来,Score 应该只是创建针对 Population 和 Seen 的计算度量的简单问题。

我将通过模拟一个维度来处理四分位数,然后以每个相关粒度计算数据库中的四分位数并将该数字存储在事实中。然后,我将使用该数字作为加入 SSAS 中四分位数维度的键。看起来快速而直接。

我想再开一天左右,以防万一有人不同意这种方法?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多