Above - 圖表函數
Above() 會在表格中某個資料行區段內的目前列上方,在某個列中評估運算式。用來計算的列取決於 offset 的值,如果呈現,預設情況下是正上方的列。對於表格以外的圖表,Above() 會評估圖表連續表同等表格中目前列上方的列。
語法:
Above([TOTAL] expr [ , offset [,count]])
傳回的資料類型: 雙值
引數:
引數 | 描述 |
---|---|
expr | 包含待測量之資料的運算式或欄位。 |
offset |
將一個 offsetn 指定為大於 0,則可將運算式的評估從目前列往上移動 n 列。 若將位移指定為 0,則會根據目前列來評估運算式。 若指定負值的位移,會讓 Above 函數的作用相當於包含對應正值位移的 Below 函數。 |
count |
將第三個引數 count 指定為大於 1,函數會傳回 count 的範圍值,從原始儲存格往上算 count 個表格列的每列一個值。 在這種形式下,該函數可作為任何特殊範圍函數的引數。 範圍函數 |
TOTAL |
如果表格為單一維度或 TOTAL 限定詞作為引數,則目前資料行區段一律等於整個資料行。 |
系統會對資料行區段的第一列傳回 NULL 值,因為該列之上沒有任何列。
限制:
-
遞迴呼叫會傳回 NULL。
-
當任何圖表運算式使用了此圖表函數時,就不允許在圖表中依據 Y 值排序,或在表格中依據運算式資料行排序。因此,這些排序替代選項會自動停用。若您在視覺化或表格中使用此圖表函數,視覺化的排序將還原為對此函數的排序輸入。
範例與結果:
範例 1:
本範例展示的表格螢幕擷取畫面中,表格視覺化是從維度 Customer 和量值 Sum(Sales) 與 Above(Sum(Sales)) 建立而成。
資料行 Above(Sum(Sales)) 會針對包含 Astrida 的 Customer 列傳回 NULL,因為該列之上沒有任何列。Betacab 列的結果顯示 Astrida 的 Sum(Sales) 值;Canutility 的結果顯示 Betacab 的 Sum(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,且具有使用目前列上方第三列值的效果。將目前 Customer 的 Sum(Sales) 值加到上方三列的 Customer 值。前三個 Customer 列傳回的值為 NULL。
該表格也顯示更複雜的量值:一個是從 Sum(Sales)+Above(Sum(Sales)) 建立,另一個標記為 Higher?,是從 IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') 建立而成。
範例 2:
本範例展示的表格螢幕擷取畫面中,視覺化中新增了更多維度:Month 和 Product。 對於有多個維度的圖表,包含 Above、Below、Top 及 Bottom 函數的運算式結果取決於按 Qlik Sense 排序的資料行維度的順序。Qlik Sense 會根據上一次排序維度所產生的資料行區段來評估功能。資料行排序順序在屬性面板的排序下進行控制,而不需要按照資料行在表格中呈現的順序。
以下範例 2 的表格視覺化螢幕擷取畫面中,最後一個排序的維度是 Month,因此 Above 函數會根據月份進行評估。每個月 (Jan 到 Aug) 的每個 Product 值都有一組結果 - 一個資料行區段。其後接著下一個資料行區段的序列:針對下個月 Month 的下個 Product。每個 Product 的每個 Customer 值都有一個資料行區段。
範例 3:
範例 3 的表格視覺化螢幕擷取畫面中,最後一個排序的維度是 Product。此程序是透過將維度 Product 移動到屬性面板上「排序」標籤中的位置 3 而完成。系統會針對每個 Product 評估 Above 函數,而因為只有兩個產品 AA 和 BB,每個序列中只會有一個非 NULL 結果。在 Jan 月份的 BB 列中,Above(Sum(Sales)) 的值是 46。而 AA 列的值為 NULL。每月的每個 AA 列的值一律為 NULL,因為 AA 上方沒有任何 Product 值。第二個序列是對 Feb 月份的 AA 和 BB 進行評估,針對 Customer 值、Astrida。針對 Astrida 完成所有月份的評估後,該順序會針對第二個 CustomerBetacab 重複執行一次,以此類推。
範例 4: |
結果 | ||||
---|---|---|---|---|---|
Above 函數可做為範圍函數的輸入使用。例如:RangeAvg (Above(Sum(Sales),1,3))。 |
|
範例中使用的資料: