Mdx不会根据现有过滤器删除层次结构成员

时间:2015-08-05 12:53:39

标签: mdx mondrian

在日期维度上,我有4天(21,22,27,28)作为日期.. 我有时间维度,有一个小时。我从时间维度中选择了7个。可用的衡量标准是Max Price。对于[Time dimension.Hour]。[7]只有2天,即21和28有值,22和27为空。现在我想要基于过滤日期的底部2结果(按最大价格)。以下是mdx查询:

WITH 
  SET [XL_Col_Dim_0] AS 
    VisualTotals
    (
      (DISTINCT 
        Hierarchize
        (
          {
            Ascendants([Time dimensions.Hour].[7])
           ,Descendants([Time dimensions.Hour].[7])
          }
        ))
    ) 
  SET [XL_Row_Dim_0] AS 
    VisualTotals
    (
      (DISTINCT 
        Hierarchize
        (
          {
            {
              DrillDownLevelBottom
              (
                {[Date dimensions.Day].[All Date dimensions.Days]}
               ,2,
               ,[Measures].[Max Price]
              )
            }
          }
        ))
    ) 
SELECT 
  NON EMPTY 
    Hierarchize
    (
      Intersect
      (
        AddCalculatedMembers
        (
          {
            DrillDownLevel({[Time dimensions.Hour].[All Time dimensions.Hours]})
          }
        )
       ,[XL_Col_Dim_0]
      )
    )
  DIMENSION PROPERTIES 
    PARENT_UNIQUE_NAME
   ,HIERARCHY_UNIQUE_NAME
   ON COLUMNS
 ,NON EMPTY 
    Hierarchize
    (
      Intersect
      (
        AddCalculatedMembers
        (
          {
            DrillDownLevel({[Date dimensions.Day].[All Date dimensions.Days]})
          }
        )
       ,[XL_Row_Dim_0]
      )
    )
  DIMENSION PROPERTIES 
    PARENT_UNIQUE_NAME
   ,HIERARCHY_UNIQUE_NAME
   ON ROWS
FROM [mycube]
WHERE 
  [Measures].[Max Price]
CELL PROPERTIES 
  VALUE
 ,FORMAT_STRING
 ,LANGUAGE
 ,BACK_COLOR
 ,FORE_COLOR
 ,FONT_FLAGS;

这里的问题是虽然[小时]会返回27和28。[7]对于日期27没有价值。相反,应该返回的日期是21和28。

EDIT 当我用[Date dimensions.Day]。[21],[Date dimensions.Day]。[28]替换[Date dimensions.Day]。[All Date dimensions.Days]。这是[小时]的可用日期。[7]已经被用作切片器了,事情似乎工作得很好,但是如果我做底部1而不是2,它仍然会返回2天的维度结果,这是错误的,它应该只返回1.看起来像某种程度DrillDownLevelBottom没有按预期工作

1 个答案:

答案 0 :(得分:1)

如果您只是希望查询查看svc.pLoadEdges(someId).then(function(edgeArray) { // Use edgeArray here }); 成员,那么您应该使用函数not isempty

NonEmpty

如果你只想考虑小时7的NonEmpty({[Date dimensions.Day].[All Date dimensions.Days]}) 天,那么你在NonEmpty函数的第二个参数中使用一个元组:

NonEmpty

修改

请首先尝试这个非常简单的脚本,以确保您的NonEmpty( {[Date dimensions.Day].[All Date dimensions.Days]} ,( [Time dimensions.Hour].[7] ) ) 逻辑正常运行:

Not IsEmpty

也许每天都会存在每小时一次,以便在SELECT [Measures].[Max Price] ON COLUMNS, Filter( [Date dimensions.Day].Members ,Not IsEmpty([Time dimensions.Hour].[7]) ) ON ROWS FROM [mycube]; 函数中使用的元组中添加一个度量:

IsEmpty