我无法使用基于自定义 MDX 查询的仪表板设计器在 PerformancePoint 中正确生成折线图。
我们试图显示本年度的最后 6 个月与去年相同的 6 个月期间的比较。我已经编写了查询,它返回了我们期望的数据。
SELECT NONEMPTY([Invoice Date].[Fiscal Week of Year].[Fiscal Week of Year])
ON COLUMNS
,NONEMPTY({[Invoice Date].[Hierarchy].[Fiscal Year]
* [Measures].[Amount]}) ON ROWS
FROM [Sales]
这将返回正确的数据。
我们创建一个折线图来显示数据。我们在 y 轴和一年中的第几周得到 [Amount](以美元为单位)。一年中的一周基本上只是数字,所以当前的周数是 22(因为我们使用的是非日历财政年度)。然后我们有一个基于年份的时间序列,它允许我们查看今年的第 22 周数字与上一年的第 22 周。
我们的问题是过去 6 个月跨越了一年的“边界”。正因为如此,我们的 x 轴没有“正确”的时间顺序。我们的底轴看起来像(我已经简化了周数):
1 | 2 | 3 | ... | 20 | 21 | 22 | 48 | 49 | 50 | 51 | 52 |
注意 22 和 48 之间的跳跃。这在数字上是正确的,但按时间顺序,这个折线图应该是:
48 | 49 | 50 | 51 | 52 | 1 | 2 | 3 | ... | 20 | 21 | 22 |
我知道为什么会这样。年度会计周不是我们 [发票日期] 层次结构的一部分。
我们的层次结构是财政年度 => 财政季度 => 财政月份 => 财政日期
所以我们修复了这个问题并将星期添加到层次结构中
财政年度 => 财政季度 => 财政月份 => 年度财政周 => 财政日期
新的 MDX 查询如下所示:
SELECT NONEMPTY([Invoice Date].[Hierarchy].[Fiscal Week of Year])
ON COLUMNS
,NONEMPTY({[Invoice Date].[Fiscal Year].[Fiscal Year]
* [Measures].[Amount]}) ON ROWS
FROM [Sales]
好吧,这解决了我们的排序问题,因为现在一年中的一周有关于第 22 周属于哪一年的上下文......但这提出了一个不同的问题
由于有了新的上下文,我们的图表现在不会重叠两个不同的时间序列,而是背靠背显示它们,因为它们不再共享一个简单的数字,它们现在有年 + 周(即使图表只显示周数)
所以图表现在如下所示
48 | 49 | 50 | 51 | 52 | 1 | 2 | 3 | ... | 20 | 21 | 22 |48 | 49 | 50 | 51 | 52 | 1 | 2 | 3 | ... | 20 | 21 | 22 |
请注意排序在时间顺序上是如何正确的,但是现在沿着 x 轴并排显示了两年的时间。
希望这个冗长的解释有助于解释这个问题。似乎我们可以将时间序列与“错误”排序重叠,或者我们可以对周进行正确排序,但失去了逐年比较的能力。
我想要的是让我们得到正确的排序,所以:
48 | 49 | 50 | 51 | 52 | 1 | 2 | 3 | ... | 20 | 21 | 22 |
但仍然可以让 2 个不同的年份相互重叠。
或者换一种说法,我希望一年中的一周根据年份进行排序,然后在返回数据时“忘记”该上下文,以便折线图允许周数按数字重叠。我很困惑如何解决这个问题。