Odpowiednie używanie funkcji błędów

Jako modeler danych podczas pisania wyrażenia języka DAX, które może zgłosić błąd czasu oceny, możesz rozważyć użycie dwóch przydatnych funkcji języka DAX.

  • Funkcja ISERROR , która przyjmuje pojedyncze wyrażenie i zwraca wartość 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ń aparatu magazynu.

Większość błędów czasu oceny wynika z nieoczekiwanych wartości BLAN Lub 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ć:

  • Zapewnianie, ż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łcanie dodatku Power Query może również służyć do filtrowania wierszy, gdy występują błędy, takie jak nieprawidłowa konwersja danych.

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

  • Przy użyciu 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 aparatu magazynu, ale prawdopodobnie będzie działać lepiej niż te funkcje, ponieważ nie trzeba zgłaszać żadnych błędów.

  • Korzystanie z funkcji odpornych na błędy: niektóre funkcje języka DAX będą testować i kompensować 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 wartość BLANK w tym wystąpieniu (jest to przypadek, gdy 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])