使用MDX在查询设计器中过滤成员属性

3

如何使用MDX过滤两个成员属性?

enter image description here

目前我有以下解决方案。它能够工作,但我相信一个MDX查询会更加高效。

在查询设计器中的数据集包含以下MDX,以将成员属性包括为字段:

DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, [Store].[Store].[Closed Date],[Store].[Store].[Opening Date]

我在数据集属性中使用了两个过滤器,分别使用以下表达式:

    =Cint(Fields!Opening_Date.Value) 
    < 
    =Cint(Format(Today(), "yyyyMMdd"))

并且

    =Cint(Fields!Closed_Date.Value) 
    >
    =Cint(Format(Today(), "yyyyMMdd"))

你遇到了什么问题?乍一看,我看到你想获取 Closed_Date 大于今天日期的行,这对于你的逻辑来说是正确的吗? - alejandro zuleta
请问您能否添加一些您已经尝试过的 MDX 代码呢? - whytheq
@alejandro zuleta:确切地说,它运行得非常缓慢,如果可能的话,我想将此过滤器添加到MDX查询中。 - krynil
@whytheq:我尝试使用过滤函数,但它没有返回任何行。我会回来给你一些代码。 - krynil
@krynil - 你有机会测试我的方法了吗? - SouravA
2个回答

1
我怀疑以下代码的性能可能不太令人满意,但你可以试一试。
SELECT SomeDim.SomeHIerarchy.MEMBER 
HAVING 
Val(SomeDim.SomeHIerarchy.CURRENTMEMBER.Properties("Opening Date")) <  Format(now(), "dd-MM-yyyy")
Val(SomeDim.SomeHIerarchy.CURRENTMEMBER.Properties("Closing Date")) > Format(now(), "dd-MM-yyyy")
ON 1,
Measures.Foo on 0
FROM [Your Cube]

谢谢!我会试试这个 :) - krynil
我通过在MDX中使用过滤器成功解决了这个问题。你的代码确实帮了我很大的忙,非常感谢! - krynil

1

我发现使用过滤器是解决这个问题的最佳方法:

filter(
  [Store].[Store].members, [Store].[Store].Properties( "Opening Date" ) < Format(Now(),'yyyyMMdd') 
  and [Store].[Store].Properties( "Closed Date" ) > Format(Now(),'yyyyMMdd'))
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接