【问题标题】:MDX - Why Cross join between measures do not work?MDX - 为什么度量之间的交叉连接不起作用?
【发布时间】:2014-12-08 03:38:08
【问题描述】:

MDX 中,我们可以CROSS JOIN 两个成员,一个度量和一个成员,但不能两个度量。为什么会这样?这意味着什么?

SELECT
   [Measures].[xyz] * [DimTable1].[SomeHierarchy].[Level] on 0,
   [DimTable2].[SomeOtherHierarchy].&[Value] on 1 
FROM [MyCube] 
// WORKS

SELECT 
   [Measures].[xyz]  on 0,
   [DimTable2].[SomeOtherHierarchy].&[Value] * [DimTable1].[SomeHierarchy].[Level] on 1 
FROM [MyCube] 
// OF COURSE IT WORKS

SELECT
    [Measures].[xyz] * [Measures].[ABC] on 0,
    [DimTable1].[SomeHierarchy].&[Value] on 1 
FROM [MyCube] 
// DOES NOT WORK!!

【问题讨论】:

  • 为什么要交叉连接两个度量?你期望的最终结果是什么?对于维度,您可以获得维度属性的可能组合,但为什么要对度量执行此操作?
  • 我试图了解当两个度量交叉连接时在后台发生了什么。我非常了解交叉连接意味着各种可能的条件。但我的问题是,当措施交叉连接时会发生什么,为什么会出错。这不是我想做的事,而是我想了解的事。
  • @Sourav_Agasti 交叉连接只是对一个集合的所有成员与另一个集合的所有成员进行笛卡尔积......假设你最终得到了大量的 2 个成员元组。这些元组中的大多数都在多维数据集的空白空间中,即它们没有结果。交叉连接的 autexists 属性意味着这些空元组被丢弃。
  • @Sourav_Agasti 您的第三个查询在它返回的表的主体中没有值?!它在 A 列下有数字,然后在 B 列下有数字,然后 c 列是 [DimTable1].[SomeHierarchy].&[Value] 但是你想在 C 列中显示什么值?!

标签: ssas mdx cross-join ssas-2012 measures


【解决方案1】:

编辑
您的第三个查询不起作用,如下所示:

黄色区域是空的,不开心是可以理解的。

编辑
以下是使用 OLAP 技术的 Excel 数据透视表的类比

如果您将度量 A 和 B 的交叉连接放在行上,您会得到如下结果:

如果我们在列上添加一个非常小的级别(有 4 个成员),我们会得到以下结果:

那么这个表格的主体部分会包含什么内容呢?
count 是可能的,并且很可能是,在 MDX 中,如果您创建自定义度量(没有服务器来测试此语句)。 Excel 将默认为 count,但结果毫无意义?

【讨论】:

  • 我觉得你的比喻不正确。当我们没有明确完成任何元组(保存所有层次结构)时,它会从这些层次结构中选择默认成员。如果我们简单地避免 CROSS JOIN,它将从所有层次结构中获取default member(通常为 ALL),这将返回度量的最大可能值。在这种情况下,我会期待类似的东西,但它会出错。
【解决方案2】:

我相信你忘记了:

选择 [dd].[hh].[mm1] * [dd].[hh].[mm2] 在 0 上, [DimTable1].[SomeHierarchy].&[Value] on 1 FROM [MyCube]

也没有用。在我的示例中,[Measures] 与 [dd] 没有什么不同。在 MDX 中,您不能定义具有 _ 多个成员 _ _ _ 相同层次结构 _ 的元组。看看这个gentle introduction 解释主要概念。

【讨论】:

  • 谢谢,我明白元组的概念了。交叉连接同一层次结构的 2 个成员时出现的错误消息(xyz 层次结构在 Crossjoin 函数中多次使用。)与将它们放在同一个元组中时的错误消息完全不同(“xyz”层次结构在元组中出现多次。)。但令人惊讶的是,当我交叉加入两个措施时,错误信息却大不相同。 Axis0 函数需要一个元组集表达式作为参数。使用了字符串或数字表达式。
  • 抱歉不知道SSAS的详细情况;可能是一个实现细节。
猜你喜欢
  • 1970-01-01
  • 2012-06-05
  • 2014-11-11
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多