Only — funkcja wykresu
Funkcja Only() 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: dual
Argumenty:
Argument | Opis |
---|---|
expr | Wyrażenie lub pole zawierające mierzone dane. |
SetExpression | Funkcja agregacji będzie domyślnie dokonywać agregacji na zbiorze możliwych wierszy zdefiniowanym przez 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. Korzystając z polecenia TOTAL [<fld {.fld}>], gdzie po kwalifikatorze TOTAL podana jest lista nazw pól stanowiących podzbiór zmiennych wymiarów wykresu, można utworzyć podzbiór wszystkich możliwych wartości. |
Przykłady i wyniki:
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 |
Przykłady | Wyniki |
---|---|
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 jedyny Customer, który sprzedaje Product o nazwie „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 '|');