在Excel中创建MDX度量,以根据另一维度对一个维度的成员进行计数

时间:2019-03-29 08:47:40

标签: excel pivot-table mdx olap

我正在尝试在Excel中(在OLAP工具中)创建MDX度量标准,该度量标准将计算另一个维度中每个其他项目的成员数。因为我不知道MDX和OLAP多维数据集的确切语法和符号,所以我将尝试简单地解释一下我想做什么:

我有一个基于OLAP多维数据集的数据透视表。我有一个存储在一个维度(即“父”)中的“机器编号”字段,并且对于每个机器编号,都有一定数量的商品(在一定时期内)产生。这些文章由订单号表示。这些数字存储在另一个维度中。我想用这种方法来计算每个机器号有多少个订单号。

所以表看起来像这样:

+------------------+----------------+
| [Machine Number] | [Order Number] |
+------------------+----------------+
| Machine001       |                |
|                  |      111111111 |
|                  |      222222222 |
|                  |      333333333 |
| Machine002       |                |
|                  |      444444444 |
|                  |      555555555 |
|                  |      666666666 |
|                  |      777777777 |
+------------------+----------------+

我希望结果是:

+------------------+----------------+------------+
| [Machine Number] | [Order Number] | [Measure1] |
+------------------+----------------+------------+
| Machine001       |                |          3 |
|                  |      111111111 |            |
|                  |      222222222 |            |
|                  |      333333333 |            |
| Machine002       |                |          4 |
|                  |      444444444 |            |
|                  |      555555555 |            |
|                  |      666666666 |            |
|                  |      777777777 |            |
+------------------+----------------+------------+

我也尝试将COUNT函数与EXISTING一起使用,但是它不起作用(总是显示1,或者每台机器都显示相同的错误数字)。我认为我必须以某种方式将这两个维度联系在一起,因此订单号取决于机器号,但是由于缺乏有关MDX和OLAP多维数据集的知识,我什至不知道如何问Google如何做到这一点。 预先感谢您提供任何提示和解决方案。

1 个答案:

答案 0 :(得分:1)

您的问题基本上是,您在不同维度上具有两个属性。您要检索这些属性的有效组合,还希望根据第一个属性的值计算在sceond属性中可用的属性值的数量。

基于上述问题,在OLAP多维数据集中,事实表或度量定义了链接到Measure \ Fact-Table的不同维度的属性之间的关系。看下面的示例。(我使用了SSAS示例数据库Adventureworks)

-我正在尝试查找针对每种产品类别提供的促销。     选择     [措施]。[互联网销售金额]     在列上     ([产品]。[类别]。[类别],[促销]。[促销]。[促销])     在行上     从     [冒险作品]

结果 enter image description here 结果是所有产品类别和促销的交叉产品。现在,让多维数据集仅返回有效组合。

select 
[Measures].[Internet Sales Amount]
on columns,
nonempty(
([Product].[Category].[Category],[Promotion].[Promotion].[Promotion])
,[Measures].[Internet Sales Amount])
on rows
from 
[Adventure Works]

结果 enter image description here

现在,我们表明它只需要返回有效的组合。请注意,我们提供了一种度量,该度量属于连接两个维度的事实。现在让我们数一数

with member 
[Measures].[test]
as
count(
nonempty(([Product].[Category].currentmember,[Promotion].[Promotion].[Promotion]),[Measures].[Internet Sales Amount])
)

select 
[Measures].[Test]
on columns,
[Product].[Category].[Category]
on rows
from 
[Adventure Works]

结果 enter image description here

替代查询

with member 
[Measures].[test]
as

{nonempty(([Product].[Category].currentmember,[Promotion].[Promotion].[Promotion]),[Measures].[Internet Sales Amount]) }.count

select 
[Measures].[Test]
on columns,
[Product].[Category].[Category]
on rows
from 
[Adventure Works]