Only
Only() Funkcja zwraca wartość tylko wtedy, gdy z agregowanych danych możliwy jest dokładnie jeden wynik. Na przykład wyrażenie szukające jedynego produktu o cenie jednostkowej równej 9 zwróci NULL, jeśli istnieje więcej niż jeden produkt o cenie jednostkowej równej 9.
Składnia:
Only([{SetExpression}] [TOTAL [<fld {,fld}>]] expr)
Typ zwracanych danych: podwójny
Argumenty:
- expr: Wyrażenie lub pole zawierające mierzone dane.
- SetExpression: Funkcja agregacji będzie domyślnie dokonywać agregacji na zbiorze możliwych rekordów zdefiniowanym przez daną selekcję. Alternatywny zestaw wierszy można zdefiniować za pomocą wyrażenia analizy zestawów.
- TOTAL: Jeśli słowo TOTAL występuje przed argumentami funkcji, wówczas obliczenie jest wykonywane względem wszystkich możliwych wartości z uwzględnieniem bieżących selekcji, nie tylko tych należących do bieżącej wartości wymiaru, to znaczy z pominięciem wymiarów wykresu. Po kwalifikatorze TOTAL może następować lista zawierająca co najmniej jedną nazwę pola w nawiasach trójkątnych <fld>. Te nazwy pól powinny być podzbiorem zmiennych wymiaru wykresu.
Przykłady:
Przykład | Wynik |
---|---|
Only({<UnitPrice={9}>} Product) |
BB, ponieważ jest to jedyna wartość w kolumnie Product, dla której wartość w kolumnie UnitPrice wynosi 9. |
Only({<Product={DD}>} Customer) |
Betacab, ponieważ jest to jedyna wartość w kolumnie Customer, dla której wartość w kolumnie Product to DD. |
Only({<UnitPrice={20}>} UnitSales) |
Wartość w kolumnie UnitSales, dla której wartość w kolumnie UnitPrice wynosi 20, to 2, ponieważ jest tylko jedna wartość w kolumnie UnitSales, dla której wartość w kolumnie UnitPrice wynosi 20. |
Only({<UnitPrice={15}>} UnitSales) |
NULL, ponieważ istnieją dwie wartości w kolumnie UnitSales, dla których wartość w kolumnie UnitPrice wynosi 15. |
Dane zastosowane w przykładach:
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 '|');
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 |