Bottom
Bottom() 會評估表格中資料行區段的最後 (底端) 列中的運算式。要計算的列取決於 offset 的值,如果存在,預設為底端列。針對圖表而非表格,會在圖表的連續表同等表格內目前資料行的最後列上進行評估。
語法:
Bottom([TOTAL] expr [ , offset [,count ]])
傳回的資料類型: 雙值
引數:
- expr: 包含待測量資料的運算式或欄位。
- offset:將一個 offset n 指定為大於 0,則可將運算式的評估從目前列往上移動 n 列。若將位移指定為 0,則會根據目前列來評估運算式。 若指定負值的位移,會讓 Above 函數的作用相當於包含對應正值位移的 Below 函數。
- count:透過指定大於 1 的第三個引數 count,函數將會傳回一系列的 count 值,每個值代表各個 count 表格中從原始儲存格向上計算的列數。 在這種形式下,此函數可作為任何特殊範圍函數的引數。 範圍函數
- TOTAL: 如果表格為單一維度或限定詞 TOTAL 作為引數,則目前資料行區段一律等於整個資料行。
限制:
-
遞迴呼叫會傳回 NULL。
-
當任何圖表運算式使用了此圖表函數時,就不允許在圖表中依據 Y 值排序,或在表格中依據運算式資料行排序。因此,這些排序替代選項會自動停用。若您在視覺化或表格中使用此圖表函數,視覺化的排序將還原為對此函數的排序輸入。
範例與結果:
範例 1:
Customer | Sum(Sales) | Bottom(Sum(Sales)) | Sum(Sales) + Bottom(Sum(Sales)) | Bottom offset 3 |
---|---|---|---|---|
- | 2566 | 757 | 3323 | 3105 |
Astrida | 587 | 757 | 1344 | 1126 |
Betacab | 539 | 757 | 1296 | 1078 |
Canutility | 683 | 757 | 1440 | 1222 |
Divadip | 757 | 757 | 1514 | 1296 |
本範例顯示的表格圖表的表示法中,表格是從維度 Customer 和下列量值建立而成:Sum(Sales) 和 Bottom(Sum(Sales))。
資料行 Bottom(Sum(Sales)) 針對所有列傳回 757,因為這是底端列:Divadip。
該表格也顯示更複雜的量值:一個是從 Sum(Sales)+Bottom(Sum(Sales)) 建立,另一個標記為 Bottom offset 3,是使用運算式 Sum(Sales)+Bottom(Sum(Sales), 3) 建立且具有設為 3 的 offset 引數。將目前列的 Sum(Sales) 值加上從底端列算起第三列的值,也就是目前列加上 Betacab 的值。
範例 2:
本範例顯示的表格圖表的表示法中,以下圖表中新增了更多維度:Month 和 Product。 對於包含一個以上維度的圖表,包含 Above、Below、Top 和 Bottom 功能的運算式結果取決於 QlikView 將資料行維度排序的順序。QlikView 根據最後排序的維度所產生的資料行區段評估函數。資料行排序順序控制在排序下,並且不一定是資料行在表格中出現的順序。
在第一個表格中,系統是根據 Month 評估運算式,而第二個表格中則是根據 Product 加以評估。量值 End value 包含運算式 Bottom(Sum(Sales))。Month 的底端列是 Dec,而表格中顯示的 Dec 的值和 Product 值是 22。(為節省空間,一些行並未顯示。)
Customer | Product | Month | Sum(Sales) | End value |
---|---|---|---|---|
- | - | - | 2566 | - |
Astrida | AA | Jan | 46 | 22 |
Astrida | AA | Feb | 60 | 22 |
Astrida | AA | Mar | 70 | 22 |
... | ... | ... | ... | ... |
Astrida | AA | Sep | 78 | 22 |
Astrida | AA | Oct | 12 | 22 |
Astrida | AA | Nov | 78 | 22 |
Astrida | AA | Dec | 22 | 22 |
Astrida | BB | Jan | 46 | 22 |
Customer | Product | Month | Sum(Sales) | End value |
---|---|---|---|---|
2566 | - | |||
Astrida | AA | Jan | 46 | 46 |
Astrida | BB | Jan | 46 | 46 |
Astrida | AA | Feb | 60 | 60 |
Astrida | BB | Feb | 60 | 60 |
Astrida | AA | Mar | 70 | 70 |
Astrida | BB | Mar | 70 | 70 |
Astrida | AA | Apr | 13 | 13 |
Astrida | BB | Apr | 13 | 13 |
請參閱 Above 函數中的範例 2,以取得進一步詳細資料。
範例 3:
Bottom 函數可做為範圍函數的輸入使用。例如:RangeAvg (Bottom(Sum(Sales),1,3))。
在 Bottom() 函數的引數中,offset 設定為 1,而 count 設定為 3。函數得到資料行區段中底端列上面一列算起的三列 (因為 offset=1) 和其上方兩列 (其中有一列) 的 Sum(Sales) 運算式結果。這三個值可用做 RangeAvg() 函數的輸入,該函數進而得出所提供數值範圍中的平均值。
含有 Customer 作為維度的表格可提供 RangeAvg() 運算式的以下結果。
Customer | RangeAvg (Bottom(Sum(Sales),1,3)) |
---|---|
Astrida | 659.67 |
Betacab | 659.67 |
Canutility | 659.67 |
Divadip | 659.67 |
範例中使用的資料:
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。