Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要过滤这个MDX结果集_Mdx - Fatal编程技术网

我需要过滤这个MDX结果集

我需要过滤这个MDX结果集,mdx,Mdx,我希望过滤下面的结果集,以便只显示维度A值1的计数为1的结果,而不考虑维度A值2的计数值 Dimension A Value 1 Dimension A Value 2 Entity ID Count Count 11 1 78 1 90 1 101 1 114 1 11

我希望过滤下面的结果集,以便只显示维度A值1的计数为1的结果,而不考虑维度A值2的计数值

           Dimension A Value 1     Dimension A Value 2
Entity ID   Count                Count
11              1   
78          1   
90          1   
101         1   
114                                1
118         1   
125         1   
134                                    1
140         1   
161         1   
169         1   
186         1                  2
过滤后的集看起来像

    Dimension A Value 1 Dimension A Value 2
Entity ID   Count               Count
11           1  
78           1  
90           1  
101          1  
118          1  
125          1  
140          1  
161          1  
169          1  
186          1                 2

mdx是

WITH
SET [~COLUMNS] AS
    {[Dimension A].[Dimension A].[Value 1], [Dimension A].[Dimension A].[Value 2]}
SET [~ROWS] AS
    {[Entity].[Entity].[Entity ID].Members}
SELECT
NON EMPTY CrossJoin([~COLUMNS], {[Measures].[Count]}) ON COLUMNS,
NON EMPTY [~ROWS] ON ROWS
FROM [My Cube]

我一直在玩Filter和NoneEmpty,但我是MDX的新手,我的sql大脑很痛。我想这对一个有很多MDX的人来说可能是微不足道的,但我失败了。温柔点这是我的第一个问题你的问题应该是

Select ([Dimension A].[AttributeHierarchy1].[AttributeHierarchy1],{[Measures].[Value1],[Measures].[Value2]}) on columns,

filter([Dimension B].[EntityID].[EntityID],[Measures].[Value1]=0)
on rows 
from yourcube
然而,可能存在一个问题。例如,您的dimesnion有两个值A和B,对于一个特定的行,A,value1=1,但B,value1=0,这一行将显示为它的一个QUALIFIES,而B将被结转

编辑

让我们举一个例子,我希望看到瓶子和笼子的互联网销售超过150个$

我最初的询问

select 
([Product].[Subcategory].[Subcategory],[Measures].[Internet Sales Amount]
)
on columns,
[Customer].[City].[City]
on rows 
from 
[Adventure Works]
结果

现在修改查询

select 
([Product].[Subcategory].[Subcategory],[Measures].[Internet Sales Amount]
)
on columns,

filter
(
[Customer].[City].[City], [Measures].[Internet Sales Amount]>150
)
on rows 
from 
(select [Product].[Subcategory].&[28] on 0 from [Adventure Works])
结果

您可以尝试使用
子句:

WITH
SET [~COLUMNS] AS
    {
      [Dimension A].[Dimension A].[Value 1], 
      [Dimension A].[Dimension A].[Value 2]
    } 
MEMBER [Measures].[CountValue1] AS   //<<<<this is new <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    (
       [Measures].[Count],
       [Dimension A].[Dimension A].[Value 1]
    )
SELECT
NON EMPTY 
  CrossJoin(
    [~COLUMNS]
  , {[Measures].[Count]}
  ) ON COLUMNS,
NON EMPTY 
  [Entity].[Entity].[Entity ID].MEMBERS 
  HAVING [Measures].[CountValue1] = 1    //<<CHANGED TO NEW MEASURE
  ON ROWS
FROM [My Cube];

欢迎来到SO nooboy:奇怪的是,我只是在帮助做一些非常相似的事情嘿,谢谢你的回答,你认为有两种不同的方法?只有一个[Count],要么是1,要么是不存在的,我想过滤维度的值,我尝试了一系列过滤器,但本质上我需要过滤器引用维度的值,然后是引用该注释的度量值,“维度A”可能有太多的值,因此为每个维度指定一个单独的计数或维度是不切实际的。感谢您的回复,我尝试了多种不同的方法,但都不起作用,您在回复中对[Measures].[count]进行了操作,而没有关注[Value 1]这就是我要筛选的,所有以这种方式使用HAVING和filter的尝试都会返回相同的原始数据集,因为它们都有[Count]的值嘿,谢谢,我应该澄清一下,当我说[value 1]时,我指的是[Dimension a]。[Dimension a]。[value 1],我没有[Measures]。[CountValue1],我只有[Measures]。[计数]嗯,有人记下了我的答案。这是一个很好的问题答案,所以我想知道为什么被记下?这很有效,非常感谢你的时间和帮助,我也理解你在做什么,你动态创建了一个度量(我不知道)然后用它来执行过滤,不用担心。动态创建度量是MDX中非常常见的模式。如果您想将其标记为您的答案,请随意点击复选框/勾号。
WITH
SET [~COLUMNS] AS
    {
      [Dimension A].[Dimension A].[Value 1], 
      [Dimension A].[Dimension A].[Value 2]
    } 
//>>>>>> following is new >>>>>>>>>>>>>>>>>>>>>
MEMBER [Measures].[CountValueNEW] AS   
    (
       [Measures].[Count],
       [Dimension A].[Dimension A].[Value 1]
    )
SELECT
NON EMPTY 
    [~COLUMNS]
   *{[Measures].[Count]}
ON 0,
NON EMPTY 
FILTER(
  [Entity].[Entity].[Entity ID].MEMBERS,
  [Measures].[CountValueNEW] = 1 
)  
ON 1
FROM [My Cube];