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: podwójny

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 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.

Zob.: Określenie zakresu agregacji

Porada: Z funkcji Only() należy skorzystać, jeśli w przypadku występowania w danych z próby wielu tych samych wartości ma zostać zwrócona wartość NULL.

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 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 używane 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 '|');