如何解决MDX结果计数
我是MDX查询的初学者。谁能告诉我如何获取MDX查询产生的记录计数?
查询如下:
select {[Measures].[Employee Department History Count],[Measures].[Rate]} on columns,Non Empty{{Filter([Shift].[Shift ID].[Shift ID].Members,([Shift].[Shift ID].CurrentMember.name <> "1"))}*{[Employee].[Business Entity ID].[Business Entity ID].Members}} on rows from [Adventure Works2012].
我尝试了各种方法,但实际上还没有解决方案。
解决方法
当您谈到“记录计数”时,我假设您指的是行计数,因为 MDX 不知道记录的概念,但 MDX 查询显示的结果是由轴上的元组构建的空间。
我看到了两种获取行数的可能性:
- 只需在调用 MDX 查询的工具中计算从上述查询返回的行数即可。
- 如果您想在 MDX 中计数,那么让我们说明您想要拥有什么:
您想知道 Shift ID 不是“1”的 [Shift ID]
和 [Business Entity ID]
的非空组合集合的成员数量,并且至少有一个度量 {{ 1}} 和 [Employee Department History Count]
不为空。
为了说明不同:让我们将第一个度量不为空的元组称为“SET1”,将第二个度量不为空的元组称为“SET2”。然后您想知道包含在这些集合之一(或两者中)的元组的数量。
为了实现这一点,我们定义了这两个集合,然后定义了一个包含该计算的计算成员(在我们的例子中是一个新的度量),然后在 [Rate]
子句中使用这个计算成员来显示它:
select
请注意:
- 集合
WITH SET SET1 AS NonEmpty({{Filter([Shift].[Shift ID].[Shift ID].Members,([Shift].[Shift ID].CurrentMember.name <> "1"))} * {[Employee].[Business Entity ID].[Business Entity ID].Members}},{[Measures].[Employee Department History Count]) SET SET2 AS NonEmpty({{Filter([Shift].[Shift ID].[Shift ID].Members,{[Measures].[Rate]) MEMBER [Measures].[MyCalculation] AS COUNT(SET1 + SET 2) SELECT [Measures].[MyCalculation] ON COLUMNS FROM [Adventure Works2012]
和SET1
不是绝对必要的,您也可以将整个计算放在一个长而复杂的SET2
度量定义中,但将其拆分会更容易阅读。但是,新成员的定义是必要的,因为在 MDX 中,您只能将成员放在轴上(行、列等)。这些成员可以已经在多维数据集中定义,或者您必须在查询的MyCalculation
子句中定义它们。在 MDX 中没有将表达式/计算放在轴上的东西,只有成员。 - 集合的
WITH
是一个去除重复项的联合,因此这个操作为我们提供了至少一个度量具有非空值的元组。或者,您可以使用与+
等效的 Union function。 - 我在集合的定义中使用的
+
是 NonEmpty function,它与您可以在轴上使用的Nonempty()
关键字略有不同。在两个集合定义中,我们都使用其中一个度量作为该函数的第二个参数。 - 我目前没有可用的 SSAS 安装来测试我的语句,因此我的上述语句中可能存在小错误或拼写错误,但这个想法应该可行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。