Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/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
在Excel中创建MDX度量值以基于另一个维度计算一个维度的成员数_Excel_Pivot Table_Ssas_Mdx_Olap - Fatal编程技术网

在Excel中创建MDX度量值以基于另一个维度计算一个维度的成员数

在Excel中创建MDX度量值以基于另一个维度计算一个维度的成员数,excel,pivot-table,ssas,mdx,olap,Excel,Pivot Table,Ssas,Mdx,Olap,我正在尝试在OLAP工具中的Excel中创建一个MDX度量,该度量将计算另一个维度中每个其他项的成员数。由于我不知道MDX和OLAP多维数据集的确切语法和符号,我将尝试简单地解释我想要做什么: 我有一个基于OLAP多维数据集的数据透视表。我有一个机器编号字段存储在一维中,即父级,对于每个机器编号,都有一定时间内生产的大量物品。这些物品由订单号表示。这些数字存储在另一个维度中。我想计算每台机器的订单号 因此,该表如下所示: +------------------+----------------+

我正在尝试在OLAP工具中的Excel中创建一个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函数,但是它不可能总是显示1,或者每台机器都显示相同的错误数字。我相信我必须以某种方式将这两个维度连接在一起,以便订单号取决于机器号,但由于缺乏关于MDX和OLAP多维数据集的知识,我甚至不知道如何询问谷歌如何做到这一点。
提前感谢您提供的提示和解决方案。

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

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

-我正在努力寻找为每个产品类别提供的促销活动。 选择 [措施][互联网销售额] 在专栏上, 【产品】【类别】【类别】【促销】【促销】【促销】 成排 从…起 [冒险作品]

结果 结果是所有产品类别和促销的交叉积。现在让我们让多维数据集只返回有效的组合

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

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

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]
结果

替代查询

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]

@Bartosz Gęstwa能帮上忙吗?很抱歉我到现在还没有回答,我没有时间坐下来试试你的解决方案。您的回答当然很有帮助,但当我尝试在excel mdx编辑器中重新创建它时,我得到了一个语法错误:count函数的2参数必须是flag@BartoszGęstwa刚刚做了一个编辑,请尝试其他查询感谢您的帮助。我用DistinctCount而不是count解决了我的问题。如果有帮助的话,你可能想把它标记为一个答案。