Filter MDX过滤器问题

Filter MDX过滤器问题,filter,mdx,hyperion,essbase,Filter,Mdx,Hyperion,Essbase,我对MDX这个东西还不太熟悉,但下面的内容让我抓狂。我使用的FILTER语句正在执行。。。奇怪的是。代码示例,后跟说明: SELECT { FILTER( MEMBERS([Time].[5-4-4 Week Year]), [Measures].[Ship Gross Units] > 0 ) } ON COLUMNS, { FILTER(

我对MDX这个东西还不太熟悉,但下面的内容让我抓狂。我使用的
FILTER
语句正在执行。。。奇怪的是。代码示例,后跟说明:

SELECT
    {
        FILTER(
            MEMBERS([Time].[5-4-4 Week Year]),
            [Measures].[Ship Gross Units] > 0
        )
    }
    ON COLUMNS,
    {
        FILTER(
            MEMBERS([Group].[Alternate Hierarchies]),
            [Measures].[Ship Gross Units] > 0
        )
    }
    ON ROWS
FROM SBD.SBD
WHERE
    (
        [FiscalYear].[FY09],
        [Scenario].[Actuals Total],
        [Measures].[Ship Gross Units],
        [Channel].[FOS]
    )
我试图按会计年度的周数(有些列有点模糊)提取特定销售渠道的总单位。所有这些过滤器都已准备就绪,因为我经常需要在SKU级别对它们进行分解,而且在我的机器上处理截断的数据集更简单(我说,让DB来完成这项工作!)

问题是,此查询返回FOS渠道的0销售额。这似乎很奇怪,因此我删除了行筛选器:

SELECT
    {
        FILTER(
            MEMBERS([Time].[5-4-4 Week Year]),
            [Measures].[Ship Gross Units] > 0
        )
    }
    ON COLUMNS,
    MEMBERS([Group].[Alternate Hierarchies])
    ON ROWS
FROM SBD.SBD
WHERE
    (
        [FiscalYear].[FY09],
        [Scenario].[Actuals Total],
        [Measures].[Ship Gross Units],
        [Channel].[FOS]
    )
突然,FOS渠道出现了销售。这让我心烦意乱;在此之前,我假设我只接收显示销售额的行,而没有得到任何结果。现在我把所有的东西都展示出来了,而且有关于销售的争论。用Perl或其他工具解决这个问题很容易,但我宁愿“正确”地解决它

我有理由肯定我只是误解了一些琐碎的细节,但我厌倦了把头撞在桌子上


谢谢

我通常使用Microsoft Analysis Services,但MDX通常与Essbase中使用的非常相似

axis将独立计算,因此Group上的filter语句将只查看where子句中的成员。那么,您的总单位是否可能有一些负数,并且在2009财年小于或等于0?或者您的单位计数是否足够大,以至于它们可能会溢出数据类型并环绕为负数

如果只是查找非空单元格,一个可能的解决方法是在轴上使用non-empty关键字。 例如

SELECT    
   NON EMPTY MEMBERS([Time].[5-4-4 Week Year]),
     ON COLUMNS,
   NON EMPTY  MEMBERS([Group].[Alternate Hierarchies])
     ON ROWS
FROM SBD.SBD
WHERE
    (
        [FiscalYear].[FY09],
        [Scenario].[Actuals Total],
        [Measures].[Ship Gross Units],
        [Channel].[FOS]
    )