创建图表,其中数据集的列是类别 - Report Builder 3.0
Create chart where the columns of the data set are the categories - Report Builder 3.0
我有一个非常简单的图表,我想添加它,但我一辈子都弄不明白。该图表引用的数据集 returns 是这样的数据。它正在计算每个 Location 的总和,然后使用 Rollup 为每个 Week Column
生成一个 Total Count
Location CurrentWeek PreviousWeek 2WeeksAgo
======== =========== =========== ===========
North 5 6 3
South 4 3 1
East 8 2 3
West 2 7 0
Total 19 18 7
我想要做的是让 X 轴(水平)由 CurrentWeek、PreviousWeek、2WeeksAgo 列表示,并绘制每个列的 "Total" 值。
正在添加截图...
Sample Chart
感谢您添加图像。
所以我们有几个步骤可以到达我们需要的地方 - 首先,我们需要将数据转换成一种更容易和更具可扩展性的格式(如果我们添加“3 周前”专栏,我们不想返工)。所需格式为:
Date Amount
Current Week 19
1 week ago 18
2 weeks ago 17
就我个人而言 - 我不会命名 "current week"、“1 周前”等,而是会有一个 WeeksPrior
列,其中 0 表示当前周,1 表示一周前,等等。
无论如何,要从您的示例 table 获得更标准化的输入,我们必须使用逆轴(这些总是伤害我的大脑,但文档中有一些您可以使用的好示例)。
SELECT
*
, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Ordinal
--this is hacky, but ordering by (select null) allows us to assign a row number by the default order
FROM (SELECT 'Total' AS Location, 19 AS CurrentWeek, 18 AS PreviousWeek, 7 AS [2WeeksAgo]) x
--This is the test data, replace this with your actual query
UNPIVOT (Value FOR Date IN ([CurrentWeek], [PreviousWeek], [2WeeksAgo])) y
--This unpivots the test data, converting the separate columns into a single [Date] column, and assigning the values to the [Value] column.
这将吐出以下内容:
Location Value Date Ordinal
Total 19 CurrentWeek 1
Total 18 PreviousWeek 2
Total 7 2WeeksAgo 3
从这里开始,我们将数据添加到图表中。这很简单,但有一些 "gotchas" 需要注意。
首先,我们将添加 Value
列作为图表值,添加 Ordinal
列作为类别组。
让我们通过 运行 报告看看图表现在的样子。
好吧,它到了那里,但我们希望我们的标签在底部。为此,我们进入 Ordinal
类别组的属性并将标签切换到 date
列。确保你仍然按 Ordinal
排序,因为 SSRS 不知道“1 周前”相对于 "Current Week" 是什么意思,如果你不告诉它排序,它将按字母顺序或随机排序按顺序排列。
我们还可以通过删除图例并将水平轴上的主要刻度线样式更改为 "solid" 来稍微清理一下图表,留下如下所示的内容:
向垂直轴添加标签可能也有助于提高可读性,就像向图表上的点添加悬停文本一样。
我有一个非常简单的图表,我想添加它,但我一辈子都弄不明白。该图表引用的数据集 returns 是这样的数据。它正在计算每个 Location 的总和,然后使用 Rollup 为每个 Week Column
生成一个 Total CountLocation CurrentWeek PreviousWeek 2WeeksAgo
======== =========== =========== ===========
North 5 6 3
South 4 3 1
East 8 2 3
West 2 7 0
Total 19 18 7
我想要做的是让 X 轴(水平)由 CurrentWeek、PreviousWeek、2WeeksAgo 列表示,并绘制每个列的 "Total" 值。
正在添加截图... Sample Chart
感谢您添加图像。
所以我们有几个步骤可以到达我们需要的地方 - 首先,我们需要将数据转换成一种更容易和更具可扩展性的格式(如果我们添加“3 周前”专栏,我们不想返工)。所需格式为:
Date Amount
Current Week 19
1 week ago 18
2 weeks ago 17
就我个人而言 - 我不会命名 "current week"、“1 周前”等,而是会有一个 WeeksPrior
列,其中 0 表示当前周,1 表示一周前,等等。
无论如何,要从您的示例 table 获得更标准化的输入,我们必须使用逆轴(这些总是伤害我的大脑,但文档中有一些您可以使用的好示例)。
SELECT
*
, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Ordinal
--this is hacky, but ordering by (select null) allows us to assign a row number by the default order
FROM (SELECT 'Total' AS Location, 19 AS CurrentWeek, 18 AS PreviousWeek, 7 AS [2WeeksAgo]) x
--This is the test data, replace this with your actual query
UNPIVOT (Value FOR Date IN ([CurrentWeek], [PreviousWeek], [2WeeksAgo])) y
--This unpivots the test data, converting the separate columns into a single [Date] column, and assigning the values to the [Value] column.
这将吐出以下内容:
Location Value Date Ordinal
Total 19 CurrentWeek 1
Total 18 PreviousWeek 2
Total 7 2WeeksAgo 3
从这里开始,我们将数据添加到图表中。这很简单,但有一些 "gotchas" 需要注意。
首先,我们将添加 Value
列作为图表值,添加 Ordinal
列作为类别组。
让我们通过 运行 报告看看图表现在的样子。
好吧,它到了那里,但我们希望我们的标签在底部。为此,我们进入 Ordinal
类别组的属性并将标签切换到 date
列。确保你仍然按 Ordinal
排序,因为 SSRS 不知道“1 周前”相对于 "Current Week" 是什么意思,如果你不告诉它排序,它将按字母顺序或随机排序按顺序排列。
我们还可以通过删除图例并将水平轴上的主要刻度线样式更改为 "solid" 来稍微清理一下图表,留下如下所示的内容:
向垂直轴添加标签可能也有助于提高可读性,就像向图表上的点添加悬停文本一样。