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

Top

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

語法:  

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

傳回的資料類型: 雙值

引數:  

  • expr: 包含待測量資料的運算式或欄位。
  • offset:將一個 offset n 指定為大於 0,則可將運算式的評估從目前列往上移動 n 列。若將位移指定為 0,則會根據目前列來評估運算式。 若指定負值的位移,會讓 Above 函數的作用相當於包含對應正值位移的 Below 函數。
  • count:透過指定大於 1 的第三個引數 count,函數將會傳回一系列的 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
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
範例第二個表格輸出
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

請參閱 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
Betacab 603
Canutility 603
Divadip 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

此頁面是否對您有幫助?

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

加入分析現代化計畫

Remove banner from view

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