我在 sql 语言中有这个 where 子句:
where (cond1=1 or cond2=1) and cond3=1
如何在 MDX 中通过切片(条件到 where)得到这个结果?
{[cond1].&[1],[cond2].&[1]} /*and*/ {[cond3].&[1]}
谢谢
我在 sql 语言中有这个 where 子句:
where (cond1=1 or cond2=1) and cond3=1
如何在 MDX 中通过切片(条件到 where)得到这个结果?
{[cond1].&[1],[cond2].&[1]} /*and*/ {[cond3].&[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]
)
希望这有帮助!
您可以使用上述 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]。