MDX查询问题

时间:2010-08-19 18:50:45

标签: ssas mdx

在分析服务中,我有基于住院数据的立方体。对于每次住院治疗,可能存在9个icd代码,这些代码分别存储在多维数据集所基于的视图中的各自字段中。它们存储在SSAS数据库所基于的关系数据库的子表中。

我想查询多维数据集以返回在9个icd代码字段中的任何一个或多个中具有特定ICD代码的所有行。似乎在WHERE或Filter子句中使用这种“OR”应该很简单,但我找不到正确的方法。

提前致谢, 杰里米施拉德

3 个答案:

答案 0 :(得分:0)

据我所知,你是一个SQL人员,也是MDX的新手,所以这就是你在查询时遇到困难的原因。

如果你告诉我们你想用ICD代码选择哪些措施会更好,但我会尽量向你展示一个mdx查询样本。您的查询应如下所示;

select {Measure1,Measure2,...} on columns
ICDCodeDimension.Children on rows
//{ICDCodeDimension.ICDCode1,ICDCodeDimension.ICDCode5,...} on rows
from Cube

MDX是高级查询语言,您应该了解/学习更多有效使用它的概念。

希望得到这个帮助。

答案 1 :(得分:0)

我猜你有一个称为[ICD代码]的维度,其中一个级别称为[代码],9个成员称为[代码A]和[代码B]或其他。也许甚至是[无代码]的成员?

在这种情况下,您的查询将能够告诉您所有医院在特定时间段内每个代码的住院病例总数:

SELECT {[ICD Codes].[Codes].members} ON ROWS,
{[Measures].[Number of Cases]} ON COLUMNS
FROM [CubeName]
WHERE ([Time].[2010].[Quarter 1])

答案 2 :(得分:0)

感谢您的反馈。在我进一步研究之后(特别是这里的一篇文章:http://sqlblog.com/blogs/mosha/default.aspx使用SUBCUBE方法提供一些“OR”功能但性能非常差)我意识到我正在寻找的OR结构需要记录级信息和因此在SSAS执行的聚合之后不起作用。因此,我需要在事实表上创建一个字段,该字段具有我需要的SQL“OR”语句的结果。

在这种情况下,我将为任何9个ICD代码字段中具有特定范围的ICD代码的记录创建一个标志。然后,我将创建一个计算这些的计量。幸运的是,我的应用程序的要求是只需要以这种方式查看有限数量的诊断(即任何与糖尿病相关的住院治疗,与烟草有关的等等)。如果您需要允许用户选择任何ICD代码,我仍然很好奇如何处理此问题。我在这一点上的理解是,您需要恢复到纯SQL。

杰里米