在MDX中相交选择查询

时间:2015-06-19 05:42:51

标签: ssas mdx olap

我想让客户在两个mdx查询中交叉。

1

SELECT 
  [Measures].[Cs] ON 0
 ,NonEmpty([Customers].[Customer].MEMBERS) ON 1
FROM [sfe cube]
WHERE 
  (
    [Calend].[Period].&[201506]
   ,[Customers].[BP Territory].&[38UZ1]
   ,[Materials].[Brand].&[Coca-Cola]
  );

2

SELECT 
  [Measures].[Cs] ON 0
 ,NonEmpty([Customers].[Customer].MEMBERS) ON 1
FROM [sfe cube]
WHERE 
  (
    [Calend].[Period].&[201506]
   ,[Customers].[BP Territory].&[38UZ1]
   ,[Materials].[Brand].&[Fanta Orange CSD]
  );

我尝试的mdx脚本:

SELECT
 {} ON COLUMNS,
INTERSECT(
 (  Select [Measures].[Cs] on 0,
    nonempty([Customers].[Customer].members) on 1
    from [sfe cube]
    WHERE ([Calend].[Period].&[201506]
    ,[Customers].[BP Territory].&[38UZ1]
    ,[Materials].[Brand].&[Coca-Cola])
 )
,
(   Select [Measures].[Cs] on 0,
    nonempty([Customers].[Customer].members) on 1
    from [sfe cube]
    WHERE ([Calend].[Period].&[201506]
    ,[Customers].[BP Territory].&[38UZ1]
    ,[Materials].[Brand].&[Fanta Orange CSD]))

) ON ROWS      
FROM [sfe cube] 

当我运行查询时出现错误:

  

仅选择支撑轴COLUMNS。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以为WITH SET [YourSet] AS NonEmpty ( NonEmpty ( {[Customers].[Customer].MEMBERS} ,{[Materials].[Brand].&[Fanta Orange CSD]} ) ,{[Materials].[Brand].&[Coca-Cola]} ) SELECT [Measures].[Cs] ON 0 ,NON EMPTY [YourSet] ON 1 FROM [sfe cube] WHERE ( [Calend].[Period].&[201506] ,[Customers].[BP Territory].&[38UZ1] ); 逻辑实现类似的内容:

Exists

本文详细介绍了使用intersect的另一种变体(我更喜欢):

MDX query to calculate measure with AND condition by members from same dimension

我喜欢Sourav给我们的想法WITH SET CommonCustomers AS Intersect ( NonEmpty ( [Customers].[Customer].MEMBERS ,[Materials].[Brand].&[Coca-Cola] ) ,NonEmpty ( [Customers].[Customer].MEMBERS ,[Materials].[Brand].&[Fanta Orange CSD] ) ) SELECT {[Measures].[Cs]} ON COLUMNS ,NON EMPTY CommonCustomers ON ROWS FROM [sfe cube] WHERE ( [Calend].[Period].&[201506] ,[Customers].[BP Territory].&[38UZ1] ); 。我认为他的剧本可以稍微简化一下:

#cont {
  perspective: 10000px;
  transform-style: preserve-3d;
  -webkit-animation: rotat 1s linear infinite;
  animation: rotat 10s linear infinite;
  transform-origin: 50% 50% 50%;
}
.circ {
  height: 200px;
  width: 200px;
  border: 2px solid black;
  border-radius: 50%;
  position: absolute;
  top: 50px;
  left: 50%;
  margin-left: -100px;
  transform-origin: 50%;
  transform-style: preserve-3d;
  background: orange;
}
.circ:nth-child(1) {
  transform: rotateX(0deg);
}
.circ:nth-child(2) {
  transform: rotateX(30deg);
}
.circ:nth-child(3) {
  transform: rotateX(60deg);
}
.circ:nth-child(4) {
  transform: rotateX(90deg);
}
.circ:nth-child(5) {
  transform: rotateX(120deg);
}
.circ:nth-child(6) {
  transform: rotateX(150deg);
}
.circ:nth-child(7) {
  transform: rotateX(180deg);
}
/*other side rotated*/

.circ:nth-child(8) {
  transform: rotateY(30deg);
}
.circ:nth-child(9) {
  transform: rotateY(60deg);
}
.circ:nth-child(10) {
  transform: rotateY(90deg);
}
.circ:nth-child(11) {
  transform: rotateY(120deg);
}
.circ:nth-child(12) {
  transform: rotateY(150deg);
}
.circ:nth-child(13) {
  transform: rotateY(180deg);
}
.oth {
  background: crimson;
}
@-webkit-keyframes rotat {
  0% {
    -webkit-transform: rotateY(0deg) translateX(0);
  }
  100% {
    -webkit-transform: rotateY(360deg);
  }
}
@keyframes rotat {
  0% {
    transform: rotateY(0deg);
  }
  100% {
    transform: rotateY(360deg);
  }
}

答案 1 :(得分:0)

你的语法已经乱了!检查INTERSECT here的语法。

我获得“普通”客户的方式如下:

WITH SET CommonCustomers AS

INTERSECT(

            NonEmpty(
                        [Customers].[Customer].members, 
                        (
                            [Calend].[Period].&[201506],
                            [Customers].[BP Territory].&[38UZ1],
                            [Materials].[Brand].&[Coca-Cola]
                        ) * [Measures].[Cs]
                    )
            ,

            NonEmpty(
                        [Customers].[Customer].members, 
                        (
                            [Calend].[Period].&[201506],
                            [Customers].[BP Territory].&[38UZ1],
                            [Materials].[Brand].&[Fanta Orange CSD]
                        ) * [Measures].[Cs]
                    )

        )

SELECT {} ON COLUMNS,
CommonCustomers ON ROWS
FROM [sfe cube]
相关问题