Below - 圖表函數

Below()會評估表格中資料行區段內目前列下方的列中的運算式。要計算的列取決於offset的值,如果存在,預設為正下方的列。針對圖表而非表格,Below()會評估圖表的連續表同等表格內目前資料行下方的列。

語法:  

Below([TOTAL] expression [ , offset [,count ]])

傳回資料類型: 雙值

引數:  

引數 描述
expr 包含待測量資料的運算式或欄位。
offset

將一個 offsetn指定為大於 1,則可將運算式的評估從目前列往下移動 n 列。

若將位移指定為 0,則會根據目前列來評估運算式。

若指定負值的位移,會讓 Below函數的作用相當於包含對應正值位移的 Above 函數。

count

將第三個參數 count指定為大於 1,函數會傳回 count 的範圍值,從原始儲存格往下算 count 個表格列的每列一個值。 在這種形式下,此函數可作為任何特殊範圍函數的引數。 範圍函數

TOTAL

如果表格為單一維度或限定詞 TOTAL作為引數,則目前資料行區段一律等於整個資料行。

請參閱: 定義彙總範圍

系統會對資料行區段的最後列傳回 NULL值,因為該列之下沒有任何列。

備註: 資料行區段被定義為具有目前排序順序中的相同維度值的連續儲存格子集。記錄間圖表函數在資料行區段中進行計算,不包括同等連續表圖表中的最右方維度。如果圖表中僅有一個維度,或如果指定 TOTAL限定詞,運算式會評估完整表格。
備註: 如果表格或同等表格有多個垂直維度,則目前資料行區段僅會包含在所有維度資料行中與目前列有相同值的列 (顯示欄位間排序順序之最後一個維度的資料行除外)。

限制:  

遞迴呼叫會傳回 NULL

範例與結果:  

範例 1:  

Customer Sum(Sales) Below(Sum(Sales)) Sum(Sales) + Below(Sum(Sales)) Below offset 3 Higher?
  2566 - - 1344 -
Astrida 587 539 1126 - Higher
Betacab 539 683 1222 - -
Canutility 683 757 1440 - -
Divadip 757 - - - -
範例 1 表格圖表。

範例 1 顯示的表格圖表的表示法中,表格是從維度Customer和下列量值建立而成:Sum(Sales)Below(Sum(Sales))

資料行 Below(Sum(Sales))會針對包含 DivadipCustomer 列傳回NULL,因為該列之下沒有任何列。Canutility列的結果顯示 DivadipSum(Sales) 值;Betacab 的結果顯示 CanutilitySum(Sales) 值,以此類推。

該表格也顯示更複雜的量值,會顯示在具有下列標記的資料行中:Sum(Sales)+Below(Sum(Sales))Below +Offset 3Higher?。這些運算式的運作方式如以下段落所述。

針對標記為 Sum(Sales)+Below(Sum(Sales))的資料行,Astrida 列顯示 Betacab + Astrida 列加上Sum(Sales) 值的結果 (539+587)。Betacab列的結果顯示 Canutility + Betacab 列加上 Sum(Sales) 值的結果 (539+683)。

使用 Sum(Sales)+Below(Sum(Sales), 3)運算式所建立且標記為 Below +Offset 3 的量值,擁有設為 3 的引數offset,且具有使用目前列下方第三列值的效果。將目前 CustomerSum(Sales) 值加到下方三列的Customer 值。最下面三個 Customer列傳回的值為 NULL。

標記為 Higher?的量值是從運算式:IF(Sum(Sales)>Below(Sum(Sales)), 'Higher') 建立而成。這會比較量值Sum(Sales)中目前列的值與其下方列的值。若目前列的值較大,輸出則為文字「Higher」。

提示: 此函數可同樣用於圖表而非表格,例如長條圖。
提示: 若是其他圖表類型,請將圖表轉換為連續表同等表格,從而可以輕鬆解釋該函數的關聯列。

對於包含一個以上維度的圖表,包含 AboveBelowTopBottom 功能的運算式結果取決於QlikView 將資料行維度排序的順序。QlikView根據最後排序的維度所產生的資料行區段評估函數。資料行排序順序控制在排序下,並且不一定是資料行在表格中出現的順序。請參閱Above函數中的範例:2,以取得進一步詳細資料。

範例 2:  

結果

Below函數可做為範圍函數的輸入使用。例如︰RangeAvg (Below(Sum(Sales),1,3)).

Below()函數的引數中,offset 設為 1 且count 設為 3。函數得到資料行區段 (其中有一列) 中目前列正下方三列的Sum(Sales)運算式結果。這三個值可用做 RangeAvg()函數的輸入,該函數進而得出所提供數值範圍中的平均值。

含有 Customer作為維度的表格可提供 RangeAvg() 運算式的以下結果。

 
Astrida
Betacab
Canutility
Divadip:
659.67
720
757
-

範例中使用的資料:

Monthnames:

LOAD * INLINE [

Month, Monthnumber

Jan, 1

Feb, 2

Mar, 3

Apr, 4

May, 5

Jun, 6

Jul, 7

Aug, 8

Sep, 9

Oct, 10

Nov, 11

Dec, 12

];

Sales2013:

crosstable (Month, Sales) LOAD * inline [

Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec

Astrida|46|60|70|13|78|20|45|65|78|12|78|22

Betacab|65|56|22|79|12|56|45|24|32|78|55|15

Canutility|77|68|34|91|24|68|57|36|44|90|67|27

Divadip|57|36|44|90|67|27|57|68|47|90|80|94

] (delimiter is '|');

若要取得按正確順序排序的月份,請在建立圖表時前往圖表屬性的 Sort標籤,並勾選 Sort by 下的Expression 核取方塊。在運算式方塊中寫入 Monthnumber