我有一个立方体:
DimEntity
EntityID
EntityName
EntityLongName
FactReturns
TotalReturn
我想要做的是将所有实体组合之间的TotalReturns相加,所以输出如下:
NameA NameB
LongNameA sum(A, 1) sum(A, 2)
LongNameB sum(B, 1) sum(B, 2)
(sum(A,1)= sum(A,A),因为EntityName“A”和EntityID“1”指的是同一个实体)
我现在拥有的是:
WITH MEMBER [Measures].[SumReturns] AS
SUM([Dim Entity].[EntityID], [Measures].[TotalReturn])
SELECT
[Dim Entity].[EntityName].Children ON COLUMNS,
[Dim Entity].[EntityLongName].Children ON ROWS
FROM
[Returns]
WHERE
[Measures].[SumReturns]
但这只是给我一张这样的表格:
NameA NameB
LongNameA A.TotalReturn null
LongNameB null B.TotalReturn
etc...
我只是在学习MDX并且很难理解它是如何工作的。
答案 0 :(得分:3)
你混淆了一些MDX概念,很抱歉误导你。我建议你花些时间阅读一些MDX文档。您已快速了解MDX here,阅读此page也很有意思;不要错过下一页 - 高级。
维度和层次结构之间存在重要差异。维度代表事实空间中的坐标(也就是您的立方体事实)。为了从这个空间(也称为立方体)中检索一些值,您需要定义一个子空间(也称为单元格)。层次结构是对维度的坐标(实体)进行分组的“另一种”方式。如果定义具有相同维度的不同层次结构的两个实体,则执行这两个实体之间的交集。这个交集可以是空的,这是你的情况。
我们举一个例子:
现在你问元组([Dim Entity]。[Flat]。[Entity 1],[Dim Entity]。[包含A]。[with a]),它总是为null,因为这个元组不存在此组合的多维数据集中没有坐标。为什么? [实体1]不包含'a'。
我不确定你在计算什么,但你需要扭曲你的计算成员。在santiii的评论之后,我们需要一个新的维度:
WITH MEMBER [Measures].[SumReturns] AS
-- we're reseting here COLUMNS information, sum is not needed
([Dim Entity].[EntityName].defaultmember,[Measures].[TotalReturn])
+
-- we're reseting here ROWS
([Dim Entity 2].defaultmember,[Measures].[TotalReturn])
SELECT
[Dim Entity].[EntityName].Children ON COLUMNS,
[Dim Entity 2].[EntityName].Children ON ROWS
FROM [Returns]