我在sql语言中有这个where子句:
where (cond1=1 or cond2=1) and cond3=1
如何通过切片(条件进入where)在MDX中获得此结果?
{[cond1].&[1],[cond2].&[1]} /*and*/ {[cond3].&[1]}
由于
答案 0 :(得分: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]
)
希望这有帮助!
答案 1 :(得分:0)
您可以使用如上所述的子多维数据集表达式,但这不是唯一的选项。如果使用子多维数据集,则会大大提高查询性能(假设您不在其中执行交叉连接)。
您还可以在返回cube的最后一个表达式后使用常规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]。