FirstSortedValue Функция скрипта
Параметр FirstSortedValue() возвращает значение из выражения, указанного в элементе value. Значение элемента соответствует результату сортировки по аргументу sort_weight, например, названию продукта с самой низкой стоимостью единицы. N-ное значение в порядке сортировки можно указать в rank. Если в результате больше одного значения имеют один и тот же элемент sort_weight для указанного элемента rank, функция возвращает значение NULL. Сортированные значения повторяются в количестве записей, как указано в предложении group by, или агрегируются во всем наборе данных, если предложение group by не указано.
Синтаксис:
Возвращаемые типы данных: двойное значение
Аргументы:
| Аргумент | Описание |
|---|---|
| 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 соответствует самому маленькому заказу (UnitSales=2) для клиента Astrida. AA соответствует наименьшему заказу (4) для клиента Betacab, AA соответствует наименьшему заказу (8) для клиента Canutility, DD соответствует наименьшему заказу (10) для клиента Divadip.. |
|
При условии, что таблица 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 соответствует наибольшему заказу (значение UnitSales:18) для клиента Astrida, DD соответствует наибольшему заказу (12) для клиента Betacab, CC соответствует наибольшему заказу (13) для клиента Canutility. Есть два одинаковых значения для наибольшего заказа (16) для клиента Divadip, поэтому функция возвращает значение 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. |