2

我是 MDX 的新手。我在 Visual Studio 商业智能环境中使用 Team Foundation Server 中的 Team System Cube。我的问题听起来很简单,但我不知道解决方案。

1)我有一个具有 DateTime 数据类型的字段。这个字段的一个维度(按周的层次结构)我用它在我的报告中显示我的日历周。现在我有第二个字段,它有一个整数数据类型(它是一个度量)。我创建了一些数据集,所以它现在看起来:

  • 第 1 周:50
  • 第 2 周:34
  • 第三周:46
  • ...
  • 第 n 周:nn

我了解第二个字段中值的分配以及维度上的值的依赖。我的要求,听起来很简单:我需要所有字段值的总和,以便它看起来像下表:

  • 第 1 周:200 (54+34+46+...)
  • 第二周:190
  • 第三周:186

如果我试图总结没有变化。

IIF(ISEMPTY([Measures].[RemainingWorkProductBacklogItem]) OR NOT Mid([Work Item].
[PlannedWeek__HierarchyByWeek].CurrentMember.UniqueName,58,10)
<= Format(Now(), "yyyy-MM-dd"), SUM( [Measures].[RemainingWorkProductBacklogItem]),NULL)

(Mid 函数只显示实际值,它不应该在这里发挥作用。)

我也尝试了 YTD 函数与 sum 函数的结合,但我没有成功,仍然没有变化(它显示为 null)。是否有任何我可以使用或必须在多维数据集中进行更改的功能?

2)一般还有一个问题:如果我有两个不同维度的字段(都是日期时间),是否可以安排映射?例如

维度1:

  • 第 1 周:数据
  • 第2周:数据
  • 第 3 周:数据

维度2:

  • 第2周:数据
  • 第 3 周:数据

两个维度都包含第2周和第3周。针对Dimension1的报表,是否也可以显示来自Dimension2的数据?(我确信这一定是可能的,我在多维数据集选项中搜索但没有找到)。

非常感谢您的期待

欧根

4

1 回答 1

2

1)Ytd只有在您标记时间维度时才能正常工作(它必须是整个维度,而不仅仅是维度的某些属性作为时间,并为该维度的所有属性提供正确的类型。类型也为维度配置作为TypeBIDS 中具有属性的属性。然后它仅适用于多维数据集的第一个这样的维度。然后你会使用类似的东西

Sum(Ytd([Dim Time].[PlannedWeek__HierarchyByWeek].CurrentMember))

或者

Sum(Ytd([Dim Time].[PlannedWeek__HierarchyByWeek].CurrentMember), [Measures].[RemainingWorkProductBacklogItem])

2) 你绝对应该在你的多维数据集中有一个时间维度,其中包含年、季度、月、周、日、工作日等属性(你不需要所有这些,但需要一些)。不要将其与其他属性混合。然后参考就在那里,无需任何进一步的努力。我认为将几个事实表链接到这个维度没有问题。而且您也可以将Ytd函数应用于此,因为您只有一个时间维度。

如果你有错误的多维数据集设计,MDX 会变得非常困难,比使用错误表设计的 SQL 困难得多。

于 2013-08-26T14:24:24.870 回答