Only — функция диаграммы
Only() возвращает значение, если есть только один возможный результат, который может быть получен из агрегированных данных. Например, при поиске одного продукта, где стоимость единицы = 9, будет возвращено значение NULL, если стоимость единицы 9 есть у нескольких продуктов.
Синтаксис:
Only([{SetExpression}] [TOTAL [<fld {,fld}>]] expr)
Возвращаемые типы данных: двойное значение
Аргументы:
Аргумент | Описание |
---|---|
expr | Выражение или поле, содержащее данные для измерения. |
SetExpression | По умолчанию функция агрегирования агрегирует множество возможных записей, определенных выборкой. Альтернативный набор записей может быть определен выражением анализа множества. |
TOTAL |
Если слово TOTAL стоит перед аргументами функции, вычисление выполняется по всем возможным значениям, указанным в текущих выборках, а не только в тех, которые относятся к значению текущего измерения, т. е. измерения диаграммы игнорируются. При использовании выражения TOTAL [<fld {.fld}>], где префикс TOTAL предшествует списку из одного или нескольких имен полей, выступающих в качестве подмножества переменных измерения диаграммы, создается подмножество всех возможных значений. |
Примеры и результаты:
Customer | Product | UnitSales | UnitPrice |
---|---|---|---|
Astrida | AA | 4 | 16 |
Astrida | AA | 10 | 15 |
Astrida | BB | 9 | 9 |
Betacab | BB | 5 | 10 |
Betacab | CC | 2 | 20 |
Betacab | DD | - | 25 |
Canutility | AA | 8 | 15 |
Canutility | CC | - | 19 |
Примеры | Результаты |
---|---|
Only({<UnitPrice={9}>} Product) |
Значение BB, поскольку это единственный элемент Product, у которого элемент UnitPrice равен 9. |
Only({<Product={DD}>} Customer) |
Значение Betacab, поскольку единственный элемент Customer, продающий Product, называется «DD». |
Only({<UnitPrice={20}>} UnitSales) |
Число элементов UnitSales, где элемент UnitPrice, равный 20, составляет 2, поскольку есть только одно значение элемента UnitSales, где UnitPrice = 20. |
Only({<UnitPrice={15}>} UnitSales) |
Значение NULL, поскольку существуют два значения элемента UnitSales, где UnitPrice = 15. |
Данные, используемые в примерах:
ProductData:
LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD||25
Canutility|AA|8|15
Canutility|CC||19
] (delimiter is '|');