我有一个qlikview图表,其中维度是日期的一周。 所以我得到了数周的分组总和。
它很好但是当它从年中开始时它将开始上升,例如:
y->2 5 2
x->22 23 24 etc
但我想:
y->2 5 2
x->1 2 3
但是我试图以某种方式改变维度,但是所有faild,我在sort选项卡上尝试了一些表达式或布局,但我只是无法找到替换x轴值。
所以现在维度(x)是日期的Calender_Week。但它在一年中的一周返回0-52。 但我不想显示这个0-52我想要一个静态数字。
If week 26-32 then 1-2-3-4-5-6-7
If week 12-13 then 1-2
If week 51-52-01-02 then 1-2-3-4
答案 0 :(得分:2)
您无法正确排序值的原因是因为周数只是1到53之间的值。您无法指定排序顺序,因为无法确定周数属于哪一年。
但是,有一种方法可以解决这个问题。在下面的示例中,假设我的数据表MyData
定义如下:
MyData:
LOAD
*
INLINE [
CalendarDate, Result
15/12/2014, 5
16/12/2014, 6
22/12/2014, 10
29/12/2014, 20
30/12/2014, 30
05/01/2015, 20
];
我有另一个表从MyData
加载并导出周数:
MyChartData:
NOCONCATENATE
LOAD
WeekNumber,
Sum(Result) as Result
GROUP BY WeekNumber;
LOAD
Week(date#(CalendarDate,'DD/MM/YYYY')) as WeekNumber,
Result
RESIDENT MyData;
DROP TABLE MyData;
如果我对这些数据进行绘制,我就会遇到排序问题(乍一看似乎没问题,但在这种情况下,第1周应该在第52周之后>)
现在,为了解决这个问题,我们需要另一种方法来对数据进行排序,但仍然将其分组为每周一级。由于我有原始的日历日期,我可以创建一个新的字段来做到这一点:周数和年份的连接(即YYYYWW):
NOCONCATENATE
LOAD
WeekNumber,
YearWeek,
Sum(Result) as Result
GROUP BY WeekNumber, YearWeek;
LOAD
WeekNumber,
(WeekYear * 100 + WeekNumber) as YearWeek,
Result;
LOAD
Week(date#(CalendarDate,'DD/MM/YYYY')) as WeekNumber,
WeekYear(date#(CalendarDate,'DD/MM/YYYY')) as WeekYear,
Result
RESIDENT MyData;
如果我然后从我的图表中换出WeekNumber
并将其替换为WeekYear
,那么事情看起来会更好:
编辑 - 现在重新标记尺寸值
要重新标记YearWeek
值以便它们只显示为相对索引(或“列”数字),我们可以使用计算的维度并使用aggr
函数,如下所示:
=aggr(RowNo(), YearWeek)
然后产生如下图表:
此方法的优点是无论您在QlikView文档中选择哪个选项,即使基础数据可能不连续,相对索引也将保持连续。此外,这并不会将索引硬编码到数据模型中。