跳到主要內容

FirstSortedValue - 指令碼函數

FirstSortedValue() 會傳回在 value (對應於 sort_weight 引數的排序結果) 中指定的運算式的值,並考慮到 rank (若已指定)。如果多個結果值對指定的 rank 共用同一個 sort_weight,函數會傳回 NULL

排序值會在由 group by 子句所定義的若干記錄上反覆運算;若未定義 group by 子句,則會彙總完整的資料設定。

語法:  

FirstSortedValue ([ distinct ] value, sort-weight [, rank ])

傳回的資料類型: 雙值

引數:  

FirstSortedValue 引數
引數 描述
value Expression 該函數會找出對應於 sort_weight 排序結果的 value 運算式的值。
sort-weight Expression 包含待排序資料的運算式。會找出 sort_weight 的第一個 (最低) 值,可從中決定 value 運算式的對應值。如果在 sort_weight 前面加上減號,則函數會傳回最後一個 (最高) 排序值。
rank Expression

表示 rank "n" 大於 1 之後,將取得第 n 個排序的值。

distinct

如果 DISTINCT 這個字出現在函數引數之前,會忽略評估函數引數所產生的重複項目。

範例與結果:  

新增範例指令碼到您的文件中並加以執行。然後至少將結果資料行中所列的欄位新增至我們文件中的工作表,以查看結果。

範例 1:  

Temp:

LOAD * inline [

Customer|Product|OrderNumber|UnitSales|CustomerID

Astrida|AA|1|10|1

Astrida|AA|7|18|1

Astrida|BB|4|9|1

Astrida|CC|6|2|1

Betacab|AA|5|4|2

Betacab|BB|2|5|2

Betacab|DD|12|25|2

Canutility|AA|3|8|3

Canutility|CC|13|19|3

Divadip|AA|9|16|4

Divadip|AA|10|16|4

Divadip|DD|11|10|4

] (delimiter is '|');

 

FirstSortedValue:

LOAD Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

 

範例 1 結果
結果欄位 (客戶) 結果值 (MyProductWithSmallestOrderByCustomer)
Astrida CC
Betacab AA
Canutility AA
Divadip DD

該函數將 UnitSales 從最小到最大排序,尋找具有最小 UnitSales 值、最小順序的 Customer 值。

因為 CC 對應於客戶 Astrida 的最小順序 (UnitSales 的值=2)。AA 對應於客戶 Betacab 的最小順序 (4),AA 對應於客戶 Canutility 的最小順序 (8),並且 DD 對應於客戶 Divadip 的最小順序 (10)。

範例 2:  

假設 Temp 表格已如前一個範例中所示載入:

LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;

 

範例 2 結果
結果欄位 (客戶) 結果值 (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip -

減號位於 sort_weight 前面,因此函數將最大的排在最前面。

因為 AA 對應於客戶 Astrida 的最大順序 (UnitSales 的值:18),DD 對應於客戶 Betacab 的最大順序 (12),並且 CC 對應於客戶 Canutility 的最大順序 (13)。客戶 Divadip 的最大順序 (16) 具有兩個相同的值,因此這會產生 Null 值結果。

範例 3:  

假設 Temp 表格已如前一個範例中所示載入:

LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

 

範例 3 結果
結果欄位 (客戶) 結果值 (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip AA

這與先前的範例相同,已使用 distinct 限定詞的除外。這會導致忽略 Divadip 的重複結果,允許傳回非 Null 值。

此頁面是否對您有幫助?

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

加入分析現代化計畫

Remove banner from view

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