Above - 圖表函數

Above() 會在表格中某個資料行區段內的目前列上方,在某個列中評估運算式。用來計算的列取決於 offset 的值,如果呈現,預設情況下是正上方的列。對於表格以外的圖表,Above() 會評估圖表連續表同等表格中目前列上方的列。

Syntax:  

Above([TOTAL] expr [ , offset [,count]])

Return data type: 雙值

Arguments:  

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

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

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

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

count

將第三個引數 count 指定為大於 1,函數會傳回 count 的範圍值,從原始儲存格往上算 count 個表格列的每列一個值。

在這種形式下,該函數可作為任何特殊範圍函數的引數。 範圍函數

TOTAL

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

定義彙總範圍

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

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

Limitations:  

遞迴呼叫會傳回 NULL

Examples and results:  

Example 1:  

範例 1 的表格視覺化。

本範例展示的表格螢幕擷取畫面中,表格視覺化是從維度 Customer 和量值:Sum(Sales)Above(Sum(Sales)) 建立而成。

資料行 Above(Sum(Sales)) 會針對包含 AstridaCustomer 列傳回 NULL,因為該列之上沒有任何列。Betacab 列的結果顯示 AstridaSum(Sales) 值;Canutility 的結果顯示 BetacabSum(Sales) 值,以此類推。

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

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

該表格也顯示更複雜的量值:一個是從 Sum(Sales)+Above(Sum(Sales)) 建立,另一個標記為 Higher?,是從 IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') 建立而成。

提示: 此函數還可以用於表格之外的圖表中,例如長條圖。
提示: 對於其他圖表類型,將圖表轉換為連續表同等表格,以便您可以輕鬆解譯函數相關的列。

Example 2:  

本範例展示的表格螢幕擷取畫面中,視覺化中新增了更多維度:MonthProduct。 對於有多個維度的圖表,包含 AboveBelowTopBottom 函數的運算式結果取決於按 Qlik Sense 排序的資料行維度的順序。Qlik Sense 會根據上一次排序維度所產生的資料行區段來評估功能。資料行排序順序在屬性面板的排序下進行控制,而不需要按照資料行在表格中呈現的順序。

以下範例 2 的表格視覺化螢幕擷取畫面中,最後一個排序的維度是 Month,因此 Above 函數會根據月份進行評估。每個月 (JanAug) 的每個 Product 值都有一組結果 - 一個資料行區段。其後接著下一個資料行區段的序列:針對下個月 Month 的下個 Product。每個 Product 的每個 Customer 值都有一個資料行區段。

範例 2 的表格視覺化。

Example 3:  

範例 3 的表格視覺化螢幕擷取畫面中,最後一個排序的維度是 Product。此程序是透過將維度 Product 移動到屬性面板上「排序」標籤中的位置 3 而完成。系統會針對每個 Product 評估 Above 函數,而因為只有兩個產品 AABB,每個序列中只會有一個非 NULL 結果。在 Jan 月份的 BB 列中,Above(Sum(Sales)) 的值是 46。而 AA 列的值為 NULL。每月的每個 AA 列的值一律為 NULL,因為 AA 上方沒有任何 Product 值。第二個序列是對 Feb 月份的 AABB 進行評估,針對 Customer 值、Astrida。針對 Astrida 完成所有月份的評估後,該順序會針對第二個 CustomerBetacab 重複執行一次,以此類推。

範例 3 的表格視覺化。

Example 4:  

結果

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

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

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

Astrida

Betacab

Canutility

Divadip:

-

587

563

603

範例中使用的資料:

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 '|');

若要讓月份按正確的順序排序,則在建立視覺化時,前往屬性面板的 Sorting 區段,選取 Month,然後勾選核取方塊 Sort by expression。在運算式方塊中,寫入 Monthnumber