Udostępnij za pośrednictwem


Odpowiednie użycie funkcji błędów

Jako modelujący dane, gdy piszesz wyrażenie DAX, które może spowodować błąd w czasie oceny, warto rozważyć użycie dwóch przydatnych funkcji DAX.

  • Funkcja ISERROR, która przyjmuje pojedyncze wyrażenie i zwraca TRUE, jeśli to wyrażenie powoduje błąd.
  • Funkcja IFERROR, która przyjmuje dwa wyrażenia. Jeśli pierwsze wyrażenie spowoduje błąd, zwracana jest wartość drugiego wyrażenia. Jest to w rzeczywistości bardziej zoptymalizowana implementacja zagnieżdżania funkcji ISERROR wewnątrz funkcji IF.

Jednak chociaż te funkcje mogą być przydatne i mogą przyczynić się do pisania łatwych w zrozumieniu wyrażeń, mogą również znacznie obniżyć wydajność obliczeń. Może się to zdarzyć, ponieważ te funkcje zwiększają wymaganą liczbę skanowań silnika magazynującego.

Większość błędów występujących podczas oceny wynika z nieoczekiwanych wartości BLANK, wartości zerowych lub nieprawidłowej konwersji typu danych.

Zalecenia

Lepiej jest unikać używania funkcji ISERROR i IFERROR. Zamiast tego należy zastosować strategie obronne podczas opracowywania modelu i pisania wyrażeń. Strategie mogą obejmować:

  • Zapewnienie, że dane dotyczące jakości są ładowane do modelu: Użyj przekształceń dodatku Power Query, aby usunąć lub zastąpić nieprawidłowe lub brakujące wartości oraz ustawić poprawne typy danych. Przekształcenie Power Query może również służyć do filtrowania wierszy, gdy wystąpią błędy, takie jak nieprawidłowa konwersja danych.

    Jakość danych można również kontrolować, ustawiając właściwość kolumny modelu „Is Nullable” na Wyłączona, co spowoduje niepowodzenie odświeżania danych w przypadku napotkania wartości puste. W przypadku wystąpienia tego błędu dane załadowane w wyniku pomyślnego odświeżenia pozostaną w tabelach.

  • Użycie funkcji IF: Wyrażenie testu logicznego funkcji IF może określić, czy wystąpi błąd. Uwaga, podobnie jak funkcje ISERROR i IFERROR, ta funkcja może spowodować dodatkowe skanowanie silnika magazynującego, ale może działać lepiej niż one, ponieważ nie ma potrzeby zgłaszania błędu.

  • Korzystanie z funkcji odpornych na błędy: Niektóre funkcje DAX będą testować i rekompensować warunki błędów. Te funkcje umożliwiają wprowadzenie alternatywnego wyniku, który zostanie zwrócony zamiast tego. Funkcja DIVIDE jest jednym z takich przykładów. Aby uzyskać dodatkowe wskazówki dotyczące tej funkcji, zapoznaj się z artykułem DAX: DIVIDE function vs divide operator (/).

Przykład

Poniższe wyrażenie miary sprawdza, czy zostanie zgłoszony błąd. Zwraca BLANK w tym wystąpieniu (w takim przypadku jeśli nie podasz funkcji IF z wyrażeniem value-if-false).

Profit Margin
= IF(ISERROR([Profit] / [Sales]))

Ta następna wersja wyrażenia miary została ulepszona przy użyciu funkcji IFERROR zamiast funkcji IF i ISERROR.

Profit Margin
= IFERROR([Profit] / [Sales], BLANK())

Jednak ta ostateczna wersja wyrażenia miary osiąga ten sam wynik, jeszcze wydajniej i elegancko.

Profit Margin
= DIVIDE([Profit], [Sales])