Top - 圖表函數

Top()會評估表格中資料行區段的第一 (頂端) 列中的運算式。要計算的列取決於offset的值,如果存在,預設為頂端列。針對圖表而非表格,Top()會在圖表的連續表同等表格內目前資料行的第一列上進行評估。

語法:  

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

傳回資料類型: 雙值

引數:  

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

offsetn 指定為大於 1,則可將運算式的評估從頂端列往下移動 n 列。

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

count 將第三個參數 count指定為大於 1,函數會傳回 count 的範圍值,目前資料行區段的最後 count 列的每列一個值。 在這種形式下,此函數可作為任何特殊範圍函數的引數。 範圍函數
TOTAL

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

請參閱: 定義彙總範圍

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

限制:  

遞迴呼叫會傳回 NULL

範例與結果:  

範例: 1

Customer Sum(Sales) Top(Sum(Sales)) Sum(Sales) + Top(Sum(Sales)) Top offset 3
  2566 587 3153 3249
Astrida 587 587 1174 1270
Betacab 539 587 1126 1222
Canutility 683 587 1270 1366
Divadip 757 587 1344 1440

本範例顯示的表格圖表的表示法中,表格是從維度Customer和下列量值建立而成:Sum(Sales)Top(Sum(Sales))

資料行Top(Sum(Sales))針對所有列傳回 587,因為這是下列頂端列的值:Astrida.

該表格也顯示更複雜的量值:一個是從 Sum(Sales)+Top(Sum(Sales))建立,另一個標記為 Top offset 3,是使用運算式 Sum(Sales)+Top(Sum(Sales), 3) 建立且具有設為 3offset 引數。將目前列的 Sum(Sales)值加上從頂端列算起第三列的值,也就是目前列加上 Canutility 的值。

範例: 2

本範例顯示的表格圖表的表示法中,以下圖表中新增了更多維度:MonthProduct。 對於包含一個以上維度的圖表,包含 AboveBelowTopBottom 功能的運算式結果取決於QlikView 將資料行維度排序的順序。QlikView根據最後排序的維度所產生的資料行區段評估函數。資料行排序順序控制在排序下,並且不一定是資料行在表格中出現的順序。 (為節省空間,一些行並未顯示。)

Customer Product Month Sum(Sales) First value
      2566 -
Astrida AA Jan 46 46
Astrida AA Feb 60 46
Astrida AA Mar 70 46
... ... ... ... ...
Astrida AA Sep 78 46
Astrida AA Oct 12 46
Astrida AA Nov 78 46
Astrida AA Dec 22 46
Astrida BB Jan 46 46
範例 2 第一個表格。First value量值根據 Month (Jan) 的 Top 值。
Customer Product Month Sum(Sales) First 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
範例 2 第二個表格。First value量值根據 Product (AstridaAA) 的 Top 值。

請參閱Above函數中的範例:2,以取得進一步詳細資料。

範例: 3

結果

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

Top()函數的引數中,offset 設為 1 且count 設為 3。函數得到資料行區段中頂端列下面一列算起的三列 (因為 offset=1) 和其下方兩列 (其中有一列) 的Sum(Sales) 運算式結果。這三個值可用做 RangeAvg()函數的輸入,該函數進而得出所提供數值範圍中的平均值。

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

 
Astrida
Betacab
Canutility
Divadip:
603
603
603
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 '|');

若要取得按正確順序排序的月份,請在建立圖表時前往圖表屬性的 Sort標籤,並勾選 Sort by 下的Expression 核取方塊。在運算式方塊中寫入 Monthnumber