FirstSortedValue - スクリプト関数
FirstSortedValue() は、value で指定した数式から値を返します。これは、単価が最も低い製品の名前など、sort_weight 引数のソート結果に対応します。rank では、ソート順の n 番目の値を指定できます。指定された sort_weight で複数の値が同じ rank を共有している場合、この関数は NULL を返します。 保存された値は、group by 条件で定義されたレコードの数だけ反復処理されます。group by 条件が定義されていない場合は、すべてのデータ セットから集計されます。
構文:
戻り値データ型: dual
引数:
引数 | 説明 |
---|---|
value Expression | この関数は数式 value の値を特定します。これは sort_weight のソート結果に対応します。 |
sort-weight Expression | ソート対象となるデータが含まれている数式です。sort_weight の最初の値 (最小値) が返され、そこから value 数式の対応する値が特定されます。sort_weight の前にマイナス記号を付けると、最後にソートされた値 (最大値) が返されます。 |
rank Expression |
rank "n" に 1 よりも大きな値を入力するとで、n 番目のソート値を取得できます。 |
distinct |
関数の引数の前に DISTINCT という用語が付いている場合、関数の引数の評価から生じる重複は無視されます。 |
例と結果:
アプリにスクリプト例を追加して実行します。その後、結果列に含まれている項目をアプリのシートに追加して結果を表示します。
下図の結果列と同じ外観にするには、プロパティ パネルで [ソート] セクションの設定を [自動] から [カスタム] に変更し、数値とアルファベットのソート順の選択を解除します。
例 | 結果 |
---|---|
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; |
Customer MyProductWithSmallestOrderByCustomer Astrida CC Betacab AA Canutility AA Divadip DD この関数は UnitSales を最小値から最大値の順にソートし、Customer の値のうち UnitSales の最小値を持つものを最小値から順に検索します。 これは、CC が customer Astrida の最小の注文 (値は UnitSales: 2) に対応するためです。AA は customer Betacab の最小注文 (4)、AA は customer Canutility の最小注文 (8)、DD は customer Divadip. の最小注文 (10) に対応します。 |
Temp テーブルが前の例のようにロードされた場合: LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer; |
Customer MyProductWithLargestOrderByCustomer Astrida AA Betacab DD Canutility CC Divadip - sort_weight 引数の前にマイナス記号を付けると、最大値から順にソートされます。 AA は customer Astrida の最大の注文 (値は UnitSales:18)、DD は customer Betacab の最大の注文 (12)、CC は customer Canutility の最大の注文 (13) に対応します。customer Divadip の最大の注文は 2 つの同じ値 (16) を持つため、結果は NULL となります。 |
Temp テーブルが前の例のようにロードされた場合: LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer; |
Customer MyProductWithLargestOrderByCustomer Astrida AA Betacab DD Canutility CC Divadip AA distinct 修飾子が使用されている点を除くと、前の例と同じ結果になります。この場合は Divadip の結果が重複して無視され、NULL 以外の値を返すことができるようになります。 |