Перейти к основному содержимому

FirstSortedValue — функция скрипта

Функция FirstSortedValue() возвращает значение из выражения, указанного в элементе value, связанном с результатом сортировки аргумента sort_weight, учитывая элемент rank, если он указан. Если в результате больше одного значения имеют один и тот же элемент sort_weight для указанного элемента rank, функция возвращает значение NULL.

Сортированные значения повторяются в количестве записей, как указано в предложении group by или агрегируются во всем наборе данных, если предложение group by не указано.

Синтаксис:  

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

Возвращаемые типы данных: двойное значение

Аргументы:  

аргументы FirstSortedValue
Аргумент Описание
value Expression С помощью функции можно найти значение выражения value, которое соответствует результату сортировки поля sort_weight.
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
Поле результата (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.

Пример 2:  

При условии, что таблица Temp загружается, как в предыдущем примере:

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

 

Результаты примера 2
Поле результата (Customer) Значение результата (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip -

Аргументу sort_weight предшествует знак минуса, поэтому с помощью функции элементы будут отсортированы от наибольших к наименьшим.

Поскольку элемент AA соответствует наибольшему заказу (значение UnitSales:18) для клиента Astrida, элемент DD соответствует наибольшему заказу (12) для клиента Betacab, и элемент CC соответствует наибольшему заказу (13) для клиента Canutility. Существуют два одинаковых значения для наибольшего заказа (16) клиента Divadip, поэтому будет сформирован нулевой результат.

Пример 3:  

При условии, что таблица Temp загружается, как в предыдущем примере:

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

 

Результаты примера 3
Поле результата (Customer) Значение результата (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip AA

Все действия будут выполняться так же, как и в предыдущем примере, но будет использоваться префикс distinct. При этом результат дубликата для Divadip будет проигнорирован, что позволит вернуть ненулевое значение.

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!

Присоединяйтесь к программе модернизации аналитики

Remove banner from view

Модернизируйте ваши важные приложения QlikView без ущерба с помощью программы модернизации аналитики. Щелкните здесь для получения дополнительной информации или свяжитесь с нами: ampquestions@qlik.com