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.
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.
WskazówkaZ 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ład: wyrażenie wykresu
Przykład
Wynik
Only(Category)
Wyświetla adres Category, o ile jest on unikatowy w danym kontekście.
Przykład — podstawy Only
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych załadowany do tabeli o nazwie Example.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę z następującymi miarami:
=Only({<UnitPrice={9}>} Product) w celu obliczenia jedynego Product, który ma UnitPrice o wartości 9.
=Only({<Product={DD}>} Customer) w celu obliczenia jedynego Customer sprzedającego Product o nazwie DD.
=Only({<UnitPrice={20}>} UnitSales) w celu obliczenia liczby UnitSales, gdzie UnitPrice wynosi 20.
=Only({<UnitPrice={15}>} UnitSales) w celu obliczenia wartości UnitSales, gdzie UnitPrice = 15.
Results table
Only({<UnitPrice={9}>} Product)
Only({<Product={DD}>} Customer)
Only({<UnitPrice={20}>} UnitSales)
Only({<UnitPrice={15}>} UnitSales)
BB
Betacab
2
-
W tym przykładzie należy zwrócić uwagę na następujące elementy:
Pierwsza kolumna zwraca wartość BB, ponieważ jest to jedyny Product, który ma wartość UnitPrice równą 9.
Druga kolumna zwraca Betacab, ponieważ jest to jedyny Customer sprzedający Product o nazwie DD.
Trzecia kolumna zwraca wartość 2, ponieważ jest to jedyna wartość UnitSales, w której przypadku UnitPrice = 20.
Czwarta kolumna zwraca NULL, ponieważ nie istnieje pojedynczy wynik, w którym UnitPrice = 15. W tym zestawie danych istnieją dwie wartości UnitSales, w których przypadku UnitPrice =15.
Przykład — zastosowanie Only
Przegląd
Zestaw danych zawiera dane dotyczące sprzedaży produktów w poszczególnych okresach. Firma chce ustalić, czy produkt jest sprzedawany w jednym sklepie, czy w wielu sklepach.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych załadowany do tabeli o nazwie Example.
Tabela zawiera następujące pola:
Date
RecordID
StoreProduct
Sales
Skrypt ładowania
Example:
Load * inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
StoreProduct
Utwórz następujące miary:
=Only(Store) w celu obliczenia unikatowego sklepu, w którym jest sprzedawany produkt.
=If(IsNull(Only(Store)), 'Multiple Stores', 'Single Store') w celu obliczenia, czy produkt jest sprzedawany w jednym sklepie, czy w wielu sklepach.
=Sum(Sales) w celu obliczenia całkowitej sprzedaży produktu.
Wyniki wskazują, że Apples i Bananas są sprzedawane tylko w jednym sklepie, podczas gdy Carrots są sprzedawane w wielu sklepach.
Przykład — Zaawansowany scenariusz tworzenia jednomiesięcznej tabeli rekordów
Przegląd
W tym przykładzie użyto funkcji Only, aby wyświetlić tabelę rekordów wiersz po wierszu dla jednego miesiąca. Aby to osiągnąć, analiza zestawów jest wykorzystywana do określenia pożądanego zestawu rekordów. Analiza zestawu wymaga co najmniej jednej miary, chociaż ponieważ w rzeczywistości nie musimy agregować zestawu rekordów, możemy skutecznie wykorzystać funkcję agregacji Only do hostowania zakresu analizy zestawu.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych załadowany do tabeli o nazwie Example.
Poprzedzająca instrukcja load, która wyprowadza pole MonthYear z pola Date, obcinając dzień miesiąca za pomocą funkcji MonthStart i zwracając reprezentację daty pierwszego dnia każdego miesiąca. Wynik ten jest przekazywany do funkcji Date w celu ustawienia formatu wyświetlania na MMM YY, na przykład Jan 24.
Tabela zawiera następujące pola:
Date
RecordID
StoreProduct
Sales
Store
Skrypt ładowania
Example:
Load
*,
date(MonthStart (Date),'MMM YY') AS MonthYear
inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
MonthYear
RecordID
Date
StoreProduct
Store
Utwórz następujące miary:
=Only({$<MonthYear={'$(=MaxString(MonthYear))'}>} Sales), aby ocenić wartość Sales i zwrócić tylko te, w których MonthYear jest najnowszym dostępnym MonthYear na podstawie bieżących wyborów w tabeli. Rozszerzenie przez znak dolara ($) wykonuje wbudowane obliczenia przy użyciu funkcji MaxString, $(=MaxString(MonthYear)), która zwraca tekstową reprezentację ostatniej wartości MonthYear.
InformacjaPróba filtrowania MonthYear na podstawie reprezentacji liczbowej, na przykład przy użyciu funkcji Max , Max(MonthYear), nie przyniosłaby żadnych rezultatów. Analiza zestawu danych stosuje wybór filtrów oparty wyłącznie na tekstowej reprezentacji dowolnego podwójnego typu danych; typu danych z reprezentacją numeryczną i tekstową, takiego jak Date.
Dane wyjściowe funkcji Only tworzą tabelę rekordów, która domyślnie przedstawia wartość sprzedaży dla najnowszej lub ostatniego MonthYear, która jest dostępna w danych. W przypadku wybrania wcześniejszego miesiąca z kolumny MonthYear, np. Feb 24, wyświetlona zostanie najnowsza wartość sprzedaży dla tego miesiąca.