1

我在 sql 语言中有这个 where 子句:

where (cond1=1 or cond2=1) and cond3=1

如何在 MDX 中通过切片(条件到 where)得到这个结果?

{[cond1].&[1],[cond2].&[1]} /*and*/ {[cond3].&[1]}

谢谢

4

2 回答 2

1

尝试使用子立方体:

    Select
    -- YOUR SELECTED MEASURES AND DIMENSIONS
    From
    (
     Select
       {[cond1].&[1],[cond2].&[1]}  on 0
      ,{[cond3].&[1]} on 1
   -- ,{more slices} on x
     From [CubeName]
    )

希望这有帮助!

于 2013-06-25T12:08:25.283 回答
0

您可以使用上述 subcube 表达式,但这不是唯一的选择。如果您使用 subcube,您将大大提高查询性能(假设您没有在其中执行交叉连接)。

您还可以在返回多维数据集的最后一个表达式之后使用通用 WHERE 关键字:

select
{ .. } on 0,
{ .. } on 1
from (select { [Dim1].[X].allmembers } on 0)
where ([Dim2].[Y].&[Y1])

或者:

select
{ .. } on 0,
{ .. } on 1
from (select { [Dim1].[X].allmembers } on 0)
where {[DimTime].[Time].[Year].&[2001] : [DimTime].[Time].[Year].&[2015]}

这在执行结束时应用,这意味着性能可能会降低。但是,如果您需要对所有轴应用外部过滤器,这是您需要的选项。

过滤成员值的另一种方法是使用元组表达式:

with member LastDateSale as ( (Tail(EXISTING [DimTime].[Time].[Dates].members,1), [Measures].[ActualSales]) )

如果可能,这将获取您的 DimTime 轴,应用外部过滤器,从中获取最后一个元素并为其计算 [ActualSales]。

于 2015-02-02T18:47:19.423 回答