2014-09-02 110 views
0

我有一個qlikview圖表,其中維度是日期的星期。 因此,我得到了幾週數值的分組總和。在QlikView圖表中設置升高X軸

它的好,但在從今年年中它的啓動將開始上升。例如:

y->2 5 2 
x->22 23 24 etc 

,但我想:

y->2 5 2 
x->1 2 3 

但我試圖以某種方式改變尺寸,但所有zhcon失敗,我嘗試在排序選項卡上的一些表達式或佈局,但我只是無法找到替換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

謝謝你的澄清,我爲你更新了我的答案。 – 2014-09-04 22:18:08

回答

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周後來到):

QlikView Chart with axis sorting problem

現在,爲了解決這個問題,我們需要另一種方法對數據進行排序,但仍然按照每週的級別進行分組。因爲我有原始的日曆日期,所以我可以創建一個新的字段,它可以做到這一點:一個數字和一年的連接(即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; 

如果我再從我的表換出WeekNumberWeekYear然後替換它的東西都在尋找更好的:

A better looking chart with correct axis sorting

編輯 - 現在重新標記尺寸值

要重新標記YearWeek值,以便它們僅顯示爲相對索引(或「列」數字),我們可以使用計算得出的暗淡度ension並利用aggr功能如下:

=aggr(RowNo(), YearWeek) 

這就導致在圖表中,如下所示:

A QlikView chart with relative column indexing

這種方法的好處是,你你的QlikView文檔中作取其選擇,即使基礎數據可能不連續,相對指數仍會保持連續。此外,這不會將索引硬編碼到數據模型中。

+0

我的尷尬實際上是例如:改變你的最後一張圖表 x軸labes到1 2 3 4 5 insted of 51 52 01 02 – Csanesz 2014-09-04 06:54:16

+0

謝謝,那是我尋找aggre和rownumbut我coudnt正確使用它。 – Csanesz 2014-09-05 07:36:49