Udostępnij za pośrednictwem


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())
  1. 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.

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

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

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

  5. Podsumowując, funkcja HASONEVALUE() umożliwia sprawdzenie, czy wyrażenie jest obliczane w kontekście jednej wartości w kolumnie columnName.