Funkcja HASONEVALUE (język DAX)
Zwraca wartość TRUE, gdy kontekst kolumny columnName został przefiltrowany tak, że pozostała tylko jedna wartość. W przeciwnym razie zwraca wartość FALSE.
Składnia
HASONEVALUE(<columnName>)
Parametry
- columnName
Nazwa istniejącej kolumny utworzona z użyciem standardowej składni języka DAX. Nie może być wyrażeniem.
Wartość zwracana
Wartość TRUE, gdy kontekst kolumny columnName został przefiltrowany tak, że pozostała tylko jedna wartość. W przeciwnym razie wartość FALSE.
Uwagi
- Odpowiednikiem funkcji HASONEVALUE() jest wyrażenie COUNTROWS(VALUES(<columnName>)) = 1.
Przykład
W poniższym przykładzie jest tworzona formuła sprawdzająca, czy kontekst jest fragmentowany według jednej wartości w celu oszacowania wartości procentowej dla wstępnie zdefiniowanego scenariusza; w tym przypadku należy porównać sprzedaż odsprzedawców ze sprzedażą w 2007 roku, a następnie sprawdzić, czy kontekst jest przefiltrowany według poszczególnych lat. Ponadto jeśli porównanie będzie bezsensowne, należy zwrócić wartość pustą.
Aby skorzystać z tego scenariusza, można pobrać arkusz z modelem ze strony Przykładowe dane programu PowerPivot.
Utwórz miarę o nazwie [Sprzedaż odsprzedawców w porównaniu ze sprzedażą w 2007 roku], używając następującego wyrażenia:
=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
Po utworzeniu tej miary w kolumnie [Sprzedaż odsprzedawców w porównaniu ze sprzedażą w 2007 roku] powinien być widoczny pusty wynik, tak jak pokazano poniżej:
Sprzedaż odsprzedawców w porównaniu ze sprzedażą w 2007 roku
Wynik zawiera pustą komórkę, ponieważ w kontekście nie są używane filtry dla poszczególnych lat.
Przeciągnij kolumnę DateTime[CalendarYear] do pola Etykiety kolumn; tabela powinna wyglądać podobnie do następującej:
Etykiety kolumn
2005
2006
2007
2008
Sprzedaż odsprzedawców w porównaniu ze sprzedażą w 2007 roku
24.83 %
74.88 %
100.00 %
50.73 %
Przeciągnij kolumnę ProductCategory[ProductCategoryName] do pola Etykiety wierszy, aby uzyskać tabelę podobną do następującej:
Sprzedaż odsprzedawców w porównaniu ze sprzedażą w 2007 roku
Etykiety kolumn
Etykiety wierszy
2005
2006
2007
2008
Accessories
6.74 %
31.40 %
100.00 %
55.58 %
Bikes
28.69 %
77.92 %
100.00 %
53.46 %
Clothing
3.90 %
55.86 %
100.00 %
44.92 %
Components
11.05 %
65.99 %
100.00 %
38.65 %
Suma końcowa
24.83 %
74.88 %
100.00 %
50.73 %
Należy zwrócić uwagę na fakt, że pola Suma końcowa znajdują się u dołu kolumn, ale nie na końcach wierszy. Dzieje się tak, ponieważ kontekst sum końcowych dla wierszy obejmuje wiele lat, ale dla kolumn obejmuje tylko jeden rok.
Przeciągnij kolumnę DateTime[CalendarYear] do pola Fragmentatory poziome, a kolumnę SalesTerritory[SalesTerritoryGroup] do pola Etykiety poziome. Zestaw wyników powinien być pusty, ponieważ tabela zawiera dane dla różnych lat. Zaznacz pozycję 2006 we fragmentatorze, aby tabela znowu zawierała dane. Zaznaczaj inne lata, aby zobaczyć, jak zmieniają się wyniki.
Podsumowując, funkcja HASONEVALUE() umożliwia sprawdzenie, czy wyrażenie jest obliczane w kontekście jednej wartości w kolumnie columnName.