filter - MDX 过滤器问题

标签 filter mdx hyperion essbase

我对整个 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]
    )

我正在尝试按财政年度的一周提取特定销售 channel 的毛单位(有些列略有混淆)。所有这些过滤器都已到位,因为我经常需要在 SKU 级别分解这些过滤器,而且在我的机器上处理截断的数据集更简单(我说让数据库来完成工作!)。

问题是,此查询在 FOS channel 中返回 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 channel 中出现了销售情况。这让我大吃一惊;以前,我假设我正在过滤以只接收显示销售的行,但我没有得到。现在我展示了所有内容,并且有销售行。使用 Perl 或其他工具解决这个问题很容易,但我宁愿“正确”解决它。

我很确定我只是误解了一些琐碎的细节,但我已经厌倦了用头撞 table 。

谢谢!

最佳答案

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

轴将被独立评估,因此 Group 上的过滤器语句将仅查看 where 子句中的成员。那么,您的 Gross Units 是否有可能有一些负值并且小于或等于 09 财年的 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]
    )

关于filter - MDX 过滤器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266455/

相关文章:

sql - 将表从 Oracle 转移到 SQL Server 的方法有哪些

swift - 如何将 CIFilter 添加到从图库导入的视频文件

javascript - 按键名过滤对象

javascript - 无法在加载期间在 jqGrid 上分配预过滤器以保存其状态

ssas - MDX 中的 NONEMPTY 和 CROSSJOIN 性能和顺序

linux - 如何在 Linux 上监控 Hyperion 服务

ios - 用于多个字典键的 Swift 过滤器

mdx - 如何在测量成员中用 '0' 替换空值

sql-server - 多个语句以防 MDX

java - Oracle Hyperion MDM Web 服务 API 和 .NET 互操作