Below - 圖表函數
Below() 會在表格中某個資料行區段內的目前列下方,在某個列中評估運算式。用來計算的列取決於 offset 的值,如果呈現,預設情況下是正下方的列。對於表格以外的圖表,Below() 會評估圖表連續表同等表格中目前資料行下方的列。
語法:
Below([TOTAL] expr
[ , offset [,count
]])
傳回的資料類型: 雙值
引數
expr
|
包含待測量之資料的運算式或欄位。 |
offset
|
將一個 offset n 指定為大於 1,則可將運算式的評估從目前列往下移動 n 列。
若將位移指定為 0,則會根據目前列來評估運算式。
若指定負值的位移,會讓 Below 函數的作用相當於包含對應正值位移的 Above 函數。
|
count
|
將第三個參數 count 指定為大於 1,函數會傳回 count 的範圍值,從原始儲存格往下算 count 個表格列的每列一個值。 在這種形式下,該函數可作為任何特殊範圍函數的引數。 範圍函數
|
TOTAL
|
如果表格為單一維度或 TOTAL 限定詞作為引數,則目前資料行區段一律等於整個資料行。
定義彙總範圍
|
會對資料行區段的最後一列傳回 NULL 值,因為在該列之下沒有任何列。
資訊備註資料行區段定義為連續的儲存格子集,針對目前排序順序中的維度具有相同的值。內部記錄圖表函數在資料行區段中進行計算,並排除同等連續表圖表中的最右側維度。如果圖表中只有一個維度,或者如果指定 TOTAL 限定詞,則該運算式會對完整表格進行評估。
資訊備註如果表格或同等表格有多個垂直維度,則目前資料行區段僅會包含在所有維度資料行中與目前列有相同值的列,除了顯示在欄位間排序順序中為最後一個維度的資料行之外。
限制:
範例:圖表運算式
Below( Sum(Sales) )
|
傳回目前列下一列的 Sales 值。 |
範例 - Below 基礎事項
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
-
載入到稱為 Example 之資料表格的資料集。
-
資料表格中的欄位如下:
載入指令碼
Example:
LOAD * INLINE [
Year, Sales
2019, 1000
2020, 1500
2021, 1200
2022, 1800
2023, 1700
];
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
-
=Sum(Sales),用來尋找年度銷售額。
-
=Below(Sum(Sales)),用來尋找下一年度的銷售值。
-
=Sum(Sales) - Below(Sum(Sales)),用來計算目前年度的 Sales 值與下一年度的值之間的差異。
-
=RangeSum(Below(Sales, 1, 2)),用來展示後兩年銷售額的兩年滾動彙總。
-
=(Sales - Below(Sales)) / Below(Sales),用來以比率 / 百分比形式傳回 Sales 中的變化。 若要將此值顯示為百分比,請在數字格式之下,選取數字 > 簡單格式 > 12.34%。
結果表格
Year |
Sum(Sales) |
Below(Sum(Sales)) |
Sum(Sales) - Below(Sum(Sales)) |
RangeSum(Below(Sales, 1, 2) |
(Sales - Below(Sales)) / Below(Sales) |
Totals | 7200 | - | - | 0 | - |
2019 |
1000 |
1500 |
-500 |
2700 |
-33.33% |
2020 | 1500 | 1200 | 300 | 3000 | 25.00% |
2021 | 1200 | 1800 | -600 | 3500 | -33.00% |
2022 | 1800 | 1700 | 100 | 1700 | 5.88% |
2023 | 1700 | - | - | 0 | - |
查看結果,您可以比較目前期間與下一期間的 Sales 值。
-
Sum(Sales) - Below(Sum(Sales)) 量值傳回 Sales 值的變更,比較目前期間與下一個期間。
-
RangeSum(Below(Sales, 1, 2)) 量值傳回後兩個 Sales 值的總和。
-
(Sales - Below(Sales)) / Below(Sales) 量值傳回 Sales 的變更,以百分比與下一個期間比較。
提示備註此函數還可以用於表格之外的圖表中,例如長條圖。
請執行下列動作:
建立長條圖,然後將此欄位新增為維度:
建立下列量值:
顯示 Below 函數結果的長條圖
在長條圖中使用 Below 函數可以在視覺上比較目前期間與下一期間的銷售額之間的差異。
範例 - Below 使用情境
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
-
載入到稱為 Example 之資料表格的資料集。
-
資料表格中的欄位如下:
載入指令碼
Example:
LOAD * INLINE [
SalesYear, SalesAmount
2019, 500
2020, 800
2021, 400
2022, 700
2023, 600
];
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
-
=Sum(SalesAmount),用來彙總銷售額。
-
=RangeSum(Below(SalesAmount, 0, NoOfRows() - RowNo())),用來計算 SalesAmount 值的捨去總計。
結果表格
SalesYear |
Sum(SalesAmount) |
RangeSum(Below(SalesAmount, 0, NoOfRows() - RowNo())) |
Totals | 3000 | 0 |
2019 |
500 |
2400 |
2020 | 800 | 1900 |
2021 | 400 | 1100 |
2022 | 700 | 700 |
2023 | 600 | 0 |
結果顯示如何合併使用 RangeSum 函數和 Below 函數來建立捨去總計。
提示備註此函數還可以用於表格之外的圖表中,例如長條圖。
請執行下列動作:
建立長條圖,然後將此欄位新增為維度:
建立下列量值:
依年份顯示累計捨去銷售值的長條圖
合併使用 Below 函數與長條圖中的 RangeSum,可以在視覺上提供累計捨去銷售值。
範例 - 使用 Below 的圖表運算式
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。
載入指令碼包含:
載入指令碼
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),用來計算銷售總和。
-
=Below(Sum(Sales)),用來顯示上一列的銷售總和。
-
=Sum(Sales)+Below(Sum(Sales)),用來加總銷售值總和與目前列下方的客戶列銷售總和。
-
=Sum(Sales)+Below(Sum(Sales), 3),用來將目前 Customer 的 Sum(Sales) 值加到下方三列的 Customer 值。
-
=If(Sum(Sales)>Below(Sum(Sales)), 'Higher'),用來為 Sum(Sales) 結果大於下一列客戶 Sum(Sales) 的客戶新增標籤「Higher」。
結果表格
Customer |
Sum(Sales) |
Below(Sum(Sales)) |
Sum(Sales)+Below(Sum(Sales)) |
Sum(Sales)+Below(Sum(Sales), 3) |
If(Sum(Sales)>Below(Sum(Sales)), 'Higher') |
Totals | 2566 | - | - | - | - |
Astrida |
587 |
539 |
1126 |
1334 |
Higher |
Betacab | 539 | 683 | 1222 | - | - |
Canutility | 683 | 757 | 1440 | - | - |
Divadip | 757 | - | - | - | - |
對於有多個維度的圖表,包含 Above、Below、Top 和 Bottom 函數的運算式結果取決於按 Qlik Sense 排序的資料行維度的順序。Qlik Sense 會根據上一次排序維度所產生的資料行區段來評估功能。資料行排序順序在屬性面板的排序下進行控制,而不需要按照資料行在表格中呈現的順序。 有關使用排列順序的範例,請參閱 範例 - 根據排列順序的 Above 使用情境。
量值 Below(Sum(Sales)) 會針對客戶 Divadip 傳回 NULL,因為其下方沒有任何列。列 Canutility 的結果顯示 Divadip 的 Sum(Sales) 值。Betacab 的結果顯示 Canutility 的 Sum(Sales) 值,以此類推。
對於量值 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) 具有引數 offset,設為 3,且具有使用目前列下方第三列值的效果。將目前 Customer 的 Sum(Sales) 值加到下方三列的 Customer 值。最下面三個 Customer 列傳回的值為 NULL。
量值 IF(Sum(Sales)>Below(Sum(Sales)), 'Higher') 為客戶 Astrida 傳回值 Higher,因為他們的銷售結果高於上一列 Betacab 客戶的銷售總和。
提示備註此函數還可以用於表格之外的圖表中,例如長條圖。
提示備註對於其他圖表類型,將圖表轉換為連續表同等表格,以便您可以輕鬆解譯函數相關的列。
範例 - 搭配使用 Below 函數與 RangeAvg
概述
Below 函數可做為範圍函數的輸入使用。此範例使用 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 '|');
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
建立下列量值:
結果表格Customer | RangeAvg (Below(Sum(Sales),1,3)) |
Totals | - |
---|
Astrida | 660 |
Betacab | 720 |
Canutility | 757 |
Divadip | - |
在 Below 函數的引數中,offset 設為 1 且 count 設為 3。函數得到資料行區段 (其中有一列) 中目前列正下方三列的 Sum(Sales) 運算式結果。這三個值可用做 RangeAvg 函數的輸入,該函數進而得出所提供數值範圍中的平均值。