全部展開/全部摺疊
Above - 圖表函數在此頁面
Above() 會在表格中某個資料行區段內的目前列上方,在某個列中評估運算式。用來計算的列取決於 offset 的值,如果呈現,預設情況下是正上方的列。對於表格以外的圖表,Above() 會評估圖表連續表同等表格中目前列上方的列。
語法:
Above( [TOTAL ] expr
[ , offset [,count]] )
傳回的資料類型: 雙值
引數
expr
包含待測量之資料的運算式或欄位。
offset
將 offset n 指定為大於 0,則可將運算式的評估從目前列往上移動 n 列。 若將位移指定為 0,則會根據目前列來評估運算式。
若指定負值的位移,會讓 Above 函數的作用相當於包含對應正值位移的 Below 函數。
count
將第三個引數 count 指定為大於 1,函數會傳回 count 的範圍值,從原始儲存格往上算 count 個表格列的每列一個值。 在這種形式下,該函數可作為任何特殊範圍函數的引數。 範圍函數
TOTAL
如果表格為單一維度或 TOTAL 限定詞作為引數,則目前資料行區段一律等於整個資料行。 定義彙總範圍
系統會對資料行區段的第一列傳回 NULL 值,因為該列之上沒有任何列。
資訊備註 資料行區段定義為連續的儲存格子集,針對目前排序順序中的維度具有相同的值。內部記錄圖表函數在資料行區段中進行計算,並排除同等連續表圖表中的最右側維度。如果圖表中只有一個維度,或者如果指定 TOTAL 限定詞,則該運算式會對完整表格進行評估。
資訊備註 如果表格或同等表格有多個垂直維度,則目前資料行區段僅會包含在所有維度資料行中與目前列有相同值的列,除了顯示在欄位間排序順序中為最後一個維度的資料行之外。
限制:
範例:圖表運算式
Above( Sum(Sales) )
傳回目前列上一列的 Sales 值。
範例 - Above 基礎事項
圖表運算式
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入到稱為 Example 之資料表格的資料集。
資料表格中的欄位如下:
載入指令碼
Example:
LOAD * INLINE [
Year, Sales
2019, 1000
2020, 1500
2021, 1200
2022, 1800
2023, 1700
];
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
=Sum(Sales) ,用來尋找年度銷售額。
=Above(Sum(Sales)) ,用來尋找上一年度的銷售值。
=Sum(Sales) - Above(Sum(Sales)) ,用來計算目前年度的 Sales 值與上一年度的值之間的差異。
=RangeSum(Above(Sales, 1, 2)) ,用來展示前兩年銷售額的兩年滾動彙總。
=(Sales - Above(Sales)) / Above(Sales) ,用來以比率 / 百分比形式傳回 Sales 中的變化。 若要將此值顯示為百分比,請在數字格式 之下,選取數字 > 簡單格式 > 12.34% 。
結果表格
Year
Sum(Sales)
Above(Sum(Sales))
Sum(Sales) - Above(Sum(Sales))
RangeSum(Above(Sales, 1, 2)
(Sales - Above(Sales)) / Above(Sales)
Totals 7200 - - 0 -
2019
1000
-
-
0
-
2020 1500 1000 500 1000 50.00% 2021 1200 1500 -300 2500 -20.00% 2022 1800 1200 600 2700 50.00% 2023 1700 1800 -100 3000 -5.56%
查看結果,您可以比較目前期間與前一期間的 Sales 值。
Sum(Sales)- Above(Sum(Sales)) 量值傳回 Sales 值的變更,比較目前期間與上一個期間。
RangeSum(Above(Sales, 1, 2)) 量值傳回前兩個 Sales 值的總和。
(Sales - Above(Sales)) / Above(Sales) 量值傳回 Sales 的變更,以百分比與上一個期間比較。
提示備註 此函數還可以用於表格之外的圖表中,例如長條圖。
請執行下列動作:
建立長條圖,然後將此欄位新增為維度:
建立下列量值:
顯示 Above 函數結果的長條圖
在長條圖中使用 Above 函數可以在視覺上比較目前期間與上一期間的銷售額之間的差異。
範例 - Above 使用情境
圖表運算式
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入到稱為 Example 之資料表格的資料集。
資料表格中的欄位如下:
載入指令碼
Example:
LOAD * INLINE [
SalesYear, SalesAmount
2019, 500
2020, 800
2021, 400
2022, 700
2023, 600
];
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
=Sum(SalesAmount) ,用來彙總銷售額。
=RangeSum(Above(SalesAmount, 0, RowNo())) ,用來計算 SalesAmount 值的累計總計。
結果表格
SalesYear
Sum(SalesAmount)
RangeSum(Above(SalesAmount, 0, RowNo()))
Totals 3000 0
2019
500
500
2020 800 1300 2021 400 1700 2022 700 2400 2023 600 3000
結果顯示如何合併使用 RangeSum 函數和 Above 函數來建立累計總計。
提示備註 此函數還可以用於表格之外的圖表中,例如長條圖。
請執行下列動作:
建立長條圖,然後將此欄位新增為維度:
建立下列量值:
依年份顯示累計銷售值的長條圖
範例 - 使用 Above 的圖表運算式
圖表運算式
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入指令碼
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
=Sum(Sales) ,用來計算銷售總和。
=Above(Sum(Sales)) ,用來顯示上一列的銷售總和。
=Sum(Sales)+Above(Sum(Sales)) ,用來加總銷售值總和與目前列上方的客戶列銷售總和。
=Sum(Sales)+Above(Sum(Sales), 3) ,用來將目前 Customer 的 Sum(Sales) 值加到上方三列的 Customer 值。
=IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') ,用來為 Sum(Sales) 結果大於上一列客戶 Sum(Sales) 的客戶新增標籤「Higher 」。
結果表格
Customer
Sum(Sales)
Above(Sum(Sales))
Sum(Sales)+Above(Sum(Sales))
Sum(Sales)+Above(Sum(Sales), 3)
IF(Sum(Sales)>Above(Sum(Sales)), 'Higher')
Totals 2566 - - - -
Astrida
587
-
-
-
-
Betacab 539 587 1126 - - Canutility 683 539 1222 - Higher Divadip 757 683 1440 1344 Higher
量值 Above(Sum(Sales)) 會針對客戶 Astrida 傳回 NULL ,因為其上方沒有任何列。客戶 Betacab 的結果顯示 Astrida 的 Sum(Sales) 值。Canutility 的結果顯示 Betacab 的 Sum(Sales) 值,以此類推。
對於量值 Sum(Sales)+Above(Sum(Sales)) ,Betacab 的列傳回將列 Betacab + Astrida 的 Sum(Sales) 值相加的結果 (539+587 )。Canutility 列的結果顯示將 Canutility + Betacab 的 Sum(Sales) 值相加的結果 (683+539 )。
量值 Sum(Sales)+Above(Sum(Sales), 3) 具有引數 offset ,設定為 3 。這將取得目前列上方 3 列的列中的值。將目前 Customer 的 Sum(Sales) 值加到上方三列 Customer 的值。例如,將 Divadip 的 Sum(Sales) 加到 Astrida 的 Sum(Sales) ,即 Divadip 上方三列的客戶。前 3 個 Customer 列傳回的值為 NULL,因為沒有資料。
量值 IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') 為客戶 Canutility 和 Divadip 回傳值 Higher ,因為他們的銷售結果分別高於上一列客戶的銷售總和 Betacab 和 Canutility 。
提示備註 此函數還可以用於表格之外的圖表中,例如長條圖。
提示備註 對於其他圖表類型,將圖表轉換為連續表同等表格,以便您可以輕鬆解譯函數相關的列。
範例 - 根據排列順序的 Above 使用情境圖表運算式 概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入指令碼
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
Product:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|UnitPrice
Astrida|AA|1|4|16
Astrida|AA|7|10|15
Astrida|BB|4|9|9
Betacab|CC|6|5|10
Betacab|AA|5|2|20
Betacab|BB||| 25
Canutility|AA|||15
Canutility|CC| ||19
Divadip|CC|2|4|16
Divadip|DD|3|1|25
] (delimiter is '|');
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
建立下列量值:
結果表格 Customer Product Month Sum(Sales) Above(Sum(Sales)) Totals - - 2566 - Astrida AA Jan 46 - Astrida AA Feb 60 46 Astrida AA Mar 70 60 Astrida AA Apr 13 70 Astrida AA May 78 13 Astrida AA Jun 20 78 Astrida AA Jul 45 20 Astrida AA Aug 65 45 Astrida AA Sep 78 65 Astrida AA Oct 12 78 Astrida AA Nov 78 12 Astrida AA Dec 22 78 Astrida BB Jan 46 - Astrida BB Feb 60 46
對於有多個維度的圖表,包含 Above 、Below 、Top 和 Bottom 函數的運算式結果取決於按 Qlik Sense 排序的資料行維度的順序。Qlik Sense 會根據上一次排序維度所產生的資料行區段來評估功能。資料行排序順序在屬性面板的排序 下進行控制,而不需要按照資料行在表格中呈現的順序。
在結果表格中,最後一個排序的維度是 Month ,因此 Above 函數會根據月份進行評估。每個月 (Jan 到 Dec ) 的每個 Product 值都有一組結果 - 一個資料行區段。其後接著下一個資料行區段的序列:針對下個月 Month 的下個 Product 。每個 Product 的每個 Customer 值都有一個資料行區段。
範例 - 使用不同排列順序的 Above 使用情境 圖表運算式 概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入指令碼
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
Product:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|UnitPrice
Astrida|AA|1|4|16
Astrida|AA|7|10|15
Astrida|BB|4|9|9
Betacab|CC|6|5|10
Betacab|AA|5|2|20
Betacab|BB||| 25
Canutility|AA|||15
Canutility|CC| ||19
Divadip|CC|2|4|16
Divadip|DD|3|1|25
] (delimiter is '|');
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
建立下列量值:
在屬性面板中變更表格的排列順序。選取排序 ,然後將產品 維度拖曳到排列順序中的第三個位置。
結果表格 Customer Product Month Sum(Sales) Above(Sum(Sales)) Totals - - 2566 - Astrida AA Jan 46 - Astrida BB Jan 46 46 Astrida AA Feb 60 - Astrida BB Feb 60 60 Astrida AA Mar 70 - Astrida BB Mar 70 70 Astrida AA Apr 13 - Astrida BB Apr 13 13 Astrida AA May 78 - Astrida BB May 78 78 Astrida AA Jun 20 - Astrida BB Jun 20 20 Astrida AA Jul 45 - Astrida BB Jul 45 45
在結果表格中,最後一個後排序的維度是 Product 。系統會針對每個 Product 評估 Above 函數,而因為只有兩個產品 AA 和 BB ,每個序列中只會有一個非 NULL 結果。在 Jan 的 BB 列中,Above(Sum(Sales)) 的值是 46 。而 AA 列的值為 NULL。每月的每個 AA 列的值一律為 NULL,因為 AA 上方沒有任何 Product 值。第二個序列是對 Feb 月份的 AA 和 BB 進行評估,針對 Customer 值、Astrida 。針對 Astrida 完成所有月份的評估後,該順序會針對第二個客戶 Betacab 重複執行一次,以此類推。
資訊備註 表格中的結果僅顯示了資料的部分清單。若要查看完整的結果,請在應用程式中嘗試範例。
範例 - 搭配使用 Above 函數與 RangeAvg 圖表運算式 概述
Above 函數可做為範圍函數的輸入使用。此範例使用 RangeAvg 中的函數。
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入指令碼
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
Product:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|UnitPrice
Astrida|AA|1|4|16
Astrida|AA|7|10|15
Astrida|BB|4|9|9
Betacab|CC|6|5|10
Betacab|AA|5|2|20
Betacab|BB||| 25
Canutility|AA|||15
Canutility|CC| ||19
Divadip|CC|2|4|16
Divadip|DD|3|1|25
] (delimiter is '|');
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
結果表格* Customer RangeAvg (Above(Sum(Sales),1,3)) Totals - Astrida - Betacab 587 Canutility 563 Divadip 603
在 Above 函數的引數中,offset 設為 1 且 count 設為 3 。函數得到資料行區段 (其中有一列) 中目前列正上方三列的 Sum(Sales) 運算式結果。這三個值可用做 RangeAvg 函數的輸入,該函數進而得出所提供數值範圍中的平均值。