跳到主要內容 跳至補充內容

Top

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

語法:  

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

傳回的資料類型: 雙值

引數:  

  • expr: 包含待測量資料的運算式或欄位。
  • offset:將 offset n 指定為大於 0,則可將運算式的評估從目前列往上移動 n 列。若將位移指定為 0,則會根據目前列來評估運算式。 若指定負值的位移,會讓 Above 函數的作用相當於包含對應正值位移的 Below 函數。
  • count:將第三個引數 count 指定為大於 1,函數會傳回 count 的範圍值,從原始儲存格往上算 count 個表格列的每列一個值。 在這種形式下,此函數可作為任何特殊範圍函數的引數。 範圍函數
  • TOTAL: 如果表格為單一維度或限定詞 TOTAL 作為引數,則目前資料行區段一律等於整個資料行。

    定義彙總範圍

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

限制:  

  • 當任何圖表運算式使用了此圖表函數時,就不允許在圖表中依據 Y 值排序,或在表格中依據運算式資料行排序。因此,這些排序替代選項會自動停用。若您在視覺化或表格中使用此圖表函數,視覺化的排序將還原為對此函數的排序輸入。

  • 遞迴呼叫會傳回 NULL

範例與結果:  

範例 1:  

表格輸出範例
Customer Sum(Sales) Top(Sum(Sales)) Sum(Sales) + Top(Sum(Sales)) Top offset 3
  2566 587 3153 3249
Astrida58758711741270
Betacab53958711261222
Canutility68358712701366
Divadip75758713441440

本範例顯示的表格圖表的表示法中,表格是從維度 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 -
AstridaAAJan4646
AstridaAAFeb6046
AstridaAAMar7046
...............
AstridaAASep7846
AstridaAAOct1246
AstridaAANov7846
AstridaAADec2246
AstridaBBJan4646
第二個表格輸出範例
Customer Product Month Sum(Sales) First value
      2566 -
AstridaAAJan4646
AstridaBBJan4646
AstridaAAFeb6060
AstridaBBFeb6060
AstridaAAMar7070
AstridaBBMar7070
AstridaAAApr1313
AstridaBBApr1313

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

範例 3:  

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

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

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

表格輸出範例
Customer RangeAvg (Top(Sum(Sales),1,3))
Astrida 603
Betacab603
Canutility603
Divadip603

範例中使用的資料:

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

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們!

加入分析現代化計畫

Remove banner from view

透過分析現代化程式進行現代化而不犧牲寶貴的 QlikView 應用程式。 按一下這裡 取得更多資訊或聯繫: ampquestions@qlik.com