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

Graph in SSRS only shows a couple of week's data

我正在 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(除了有 Quantity (null) 的一周。

但是,当我将此数据添加为 SSRS 图表中的 Y 轴以及 Weeks 属性作为 X 轴时,仅返回四行。返回的行是周数

1,19,3,40

图表中的所有其他值都是空白的。有谁知道为什么会发生这种情况?

此致,

森德泽

EDIT updated x-axis from using Interval value = 1

当我更改 Horizontal Axis Properties 下的 Interval value 时,我现在得到以下 x 轴值:

1, 13, 14,[...],19, 2, 20, 21, 22, 23, [...], 29, 3, 30, 31, 32,[...],39, 4, 41, 42,[...], 53

加粗的结果看起来很奇怪。我猜这些值是 quarters?但是,我使用 Weeks 作为我的分组变量。

EDIT

跟随 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])

应该可以工作,但它只是返回数量为 (null)。为什么这不等同于我编写的其他查询,而是基于日期而不是周?

EDIT

我还注意到,我正在创建的图表在最右边有第 52 周,而它应该在最右边有第 4 周。

EDIT

EDIT

将查询编辑为:

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

EDIT (very close now!)

右键单击 x 轴并选择 "Horizontal Axis Properties"。在轴选项下,将间隔值从自动更改为 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

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