MDX:过滤重复

MDX:过滤重复,mdx,olap,olap-cube,Mdx,Olap,Olap Cube,我想编写一个MDX查询,它只在特定的重复维度比一个维度重复时显示值 这是我的mdx查询: SELECT NON EMPTY { [Measures].[Value] } ON COLUMNS, NON EMPTY { ([Dim Result].[Sample Number].[Sample Number].ALLMEMBERS * [Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS ) } ON ROWS

我想编写一个MDX查询,它只在特定的重复维度比一个维度重复时显示值

这是我的mdx查询:

SELECT 
NON EMPTY { [Measures].[Value] } ON COLUMNS,
NON EMPTY { ([Dim Result].[Sample Number].[Sample Number].ALLMEMBERS 
             * [Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS ) } ON ROWS                                 
FROM [Cube]
结果是:

Sample Number          IdParameter        Value
1                      3                 5
1                      4                 6
2                      3                 2
3                      4                 0
我想要的是只获得重复的样本数值,如下所示:

Sample Number          IdParameter       Value
1                      3                 5
1                      4                 6   
并删除其他未重复的值

Sample Number          IdParameter       Value
2                      3                 2
3                      4                 0
我不知道该怎么做,这是可能的吗

我编写下一个mdx:

SELECT NON EMPTY {[Measures].[Recuento Fact Result]} ON COLUMNS,

 NON EMPTY { [Dim Result].[Sample Number].[Sample Number] }  ON ROWS
 FROM ( SELECT ({ [Dim Parameter].[IdParameter].&[420] , [Dim Parameter].[IdParameter].&[20] }    ) ON COLUMNS 

 FROM [cube])
结果是:

Sample Number    Recount Fact Result 
1                          1
2                          2
3                          2
4                          1
我想要的只是重新计票大于1的样本数


感谢您的帮助

我的方法是创建一个计算成员,每个
SampleNumber
可以容纳不同数量的非空成员。然后过滤掉上面计数不大于1的元组

未经测试(不在我的系统附近)


你似乎有两个不同的问题

第二个问题可以使用
HAVING
子句来回答:

SELECT 
    NON EMPTY 
      {[Measures].[Recuento Fact Result]} ON 0,
    NON EMPTY 
      {[Dim Result].[Sample Number].[Sample Number]}  
    HAVING [Measures].[Recuento Fact Result] > 1
    ON 1
FROM 
  ( 
    SELECT 
      ({ 
        [Dim Parameter].[IdParameter].&[420] 
      , [Dim Parameter].[IdParameter].&[20] 
      }) ON 0
   FROM [cube]
  )
对于第一个问题,您应该能够反复使用
过滤器
函数来检测样本号是否重复:

WITH
SET     [OrderedSampleNums] AS
        Order(
          [Dim Result].[Sample Number].[Sample Number].ALLMEMBERS ,
          [Dim Result].[Sample Number].CurrentMember.Caption,
          BASC
        )
SET     [RepeatedSampleNums] AS
        Filter(
          OrderedSampleNums ,
          OrderedSampleNums.Item(
            OrderedSampleNums.CurrentOrdinal-1
          ).Caption = [Dim Result].[Sample Number].CurrentMember.Caption
        )
SET     [NonRepeatedSampleNums] AS
        Except(
           OrderedSampleNums
          ,RepeatedSampleNums
        )
SELECT 
  NON EMPTY 
   {[Measures].[Value]} ON 0,
  NON EMPTY 
    [NonRepeatedSampleNums]
    * 
    [Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS
  ON 1                                 
FROM [Cube];

未测试,但我可以尝试针对
AdvWorks
多维数据集创建一些原型,以进一步探索?

以何种格式?Where子句是否符合您的要求,或者这是否适用于计算过的成员?@Ibon我们的努力是否帮助了您?感谢您的帮助,但这里不仅有2个参数,还有5万个参数。这有什么区别?如果有,请编辑问题并附加详细信息。
WITH
SET     [OrderedSampleNums] AS
        Order(
          [Dim Result].[Sample Number].[Sample Number].ALLMEMBERS ,
          [Dim Result].[Sample Number].CurrentMember.Caption,
          BASC
        )
SET     [RepeatedSampleNums] AS
        Filter(
          OrderedSampleNums ,
          OrderedSampleNums.Item(
            OrderedSampleNums.CurrentOrdinal-1
          ).Caption = [Dim Result].[Sample Number].CurrentMember.Caption
        )
SET     [NonRepeatedSampleNums] AS
        Except(
           OrderedSampleNums
          ,RepeatedSampleNums
        )
SELECT 
  NON EMPTY 
   {[Measures].[Value]} ON 0,
  NON EMPTY 
    [NonRepeatedSampleNums]
    * 
    [Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS
  ON 1                                 
FROM [Cube];