SSRS中的图表仅显示了几周的数据

时间:2017-03-22 15:02:22

标签: reporting-services graph mdx

我在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]
    )

按预期工作,并有一周134的输出,每周的销售额为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周。

  

编辑

enter image description here

  

修改

编辑查询成为:

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]进行查询,两者都具有相同的输出。

  编辑(非常接近!)

enter image description here

2 个答案:

答案 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)

Chart design with count(id) and two category groups

若要隐藏销售额低于400的列,请右键单击第二个类别组(第一周)并添加过滤器:[Count(ID)] (integer) > 400

filter count(id) > 400

即使您的数据集与我正在使用的原始数据方法不同,希望这会引导您朝着正确的方向前进。

enter image description here