我在SSRS中制作图表,该图表将突出显示特定周内每周的销售额,以及从该周的52周开始的销售情况。
为此,我在SSRS中创建了以下数据集:
WITH SET LAST52WEEKS AS
{
STRTOMEMBER("[Dim Date].[Week].&[2017]&[1]&[1]&[4]").Lag(52):
STRTOMEMBER("[Dim Date].[Week].&[2017]&[1]&[1]&[4]")
}
Select {[Measures].[Quantity]} ON 0,
{Last52Weeks} ON 1
FROM (
Select {
[Dim Store2].[Store Key].&[1024]
} on columns
from [DSV_FactStoreSales 1]
)
按预期工作,并有一周13
到4
的输出,每周的销售额为Quantity>400
(数量为零的一周除外)。
但是,当我将此数据作为Y轴添加到SSRS中的图形以及Weeks
属性作为X轴时,仅返回四行。返回的行是几周
1,19,3,40
图表中的所有其他值均为空白。有没有人知道为什么会这样?
此致
Cenderze
EDIT使用Interval value = 1
更新x轴
当我更改Interval value
下的Horizontal Axis Properties
时,我现在获得x轴的以下值:
1 ,13,14,[...],19, 2 ,20,21,22,23,[...],29,< strong> 3 ,30,31,32,[...],39, 4 ,41,42,[...],53
我的加粗结果似乎很奇怪。我猜这些值是quarters
?然而,我使用Weeks
作为我的分组变量。
修改
跟着Mike Honey我想:
WITH SET LAST52WEEKS AS
{STRTOMEMBER("[Dim Date].[Date].&[1]&[2017-01-29]").Parent.Lag(52)
:
STRTOMEMBER("[Dim Date].[Date].&[1]&[2017-01-29]").parent}
Select {[Measures].[Quantity]} ON 0,
{Last52Weeks} ON 1
FROM (
Select {
[Dim Store2].[Store Key].&[1024]
} on columns
from [DSV_FactStoreSales 1])
应该工作,但它只是返回Quantity是(null)。为什么这不等于我写的其他查询,而是基于日期而不是周?
修改
我还注意到我创建的图表在第52周到最右边,而它应该在最右边有第4周。
编辑
修改
编辑查询成为:
WITH SET LAST52WEEKS AS
{STRTOMEMBER("[Dim Date].[Hierarchy].&[2017 W4]").Lag(52):STRTOMEMBER("[Dim Date].[Hierarchy].&[2017 W4]")}
Select {[Measures].[Quantity]} ON 0,
{(Last52Weeks,[Dim Store2].[Store Name].Allmembers)} ON 1
from [DSV_FactStoreSales 1]
其中Hierarchy是属性层次结构,其值为2010 W1
,....,2018 W52
。
但这会产生一个输出:
2016 W40 Store1 300
2016 W40 Store2 400
...
2017 W39 Store1 400
我希望输出为:
2016 W4 Store1 300
2016 W4 Store2 400
...
2017 W4 Store1 400
有什么想法吗?它只是一个具有一个属性Week Name
的层次结构(我已尝试使用[Dim Date].[Hierarchy].[Week Name].&[2017 W4]
和[Dim date].[Hierarchy].&[2017 W4]
进行查询,两者都具有相同的输出。
编辑(非常接近!)
答案 0 :(得分:1)
右键单击x轴并选择&#34;水平轴属性&#34;。在Axis Options下,将Interval值从Auto更改为1.
答案 1 :(得分:1)
我可以在您当前的图表中看到两个问题。一个是你的周数被视为文本,这就是为什么排序有19, 2, 20
之类的序列。另一个原因是它无法区分一年的周数和另一年的周数开始。
我不熟悉mdx。我希望你能够制作一个简单的数据集,它纯粹是一个带日期的销售清单。对于我的解决方案,我使用了Oracle查询,如:
SELECT date SALEDATE, ID FROM sales
WHERE date BETWEEN '28-MAR-2016' AND '28-JAN-2017'
使用新图表时,请使用[Count(ID)]
作为值。然后它需要两个类别组,第一个用于一年,然后一个用于周数。您可以使用表达式从日期字段中获取这些表达式。对于第一个类别组,请将Group on:
和Label
设置为
=DatePart(DateInterval.Year, Fields!SALEDATE.Value)
并且对于第二个,将Group on:
和Label
设置为
=DatePart(DateInterval.WeekOfYear, Fields!SALEDATE.Value)
若要隐藏销售额低于400的列,请右键单击第二个类别组(第一周)并添加过滤器:[Count(ID)] (integer) > 400
。
即使您的数据集与我正在使用的原始数据方法不同,希望这会引导您朝着正确的方向前进。