Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
- DAX функция ERROR
- DAX функция IFERROR (если ошибка)
- DAX функция ISERROR
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы рассмотрим несколько функций в Power BI и Power Pivot, которые так или иначе обрабатывают возникающие во время вычислений в DAX, ошибки. И это функции ERROR, IFERROR и ISERROR.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
Да, и еще один момент, до 29 сентября 2023 г. у Вас имеется возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 60% (вместо 10000, всего за 4000 руб.)
В этом видеокурсе язык DAX преподнесен как простой конструктор, состоящий из нескольких блоков, которые имеют свое определенное, конкретное предназначение. Сочетая различными способами эти блоки, Вы, при помощи конструктора формул DAX, с легкостью сможете решать любые (простые или сложные) аналитические задачи.
Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 60% (до 29 сентября 2023 г.): узнать подробнее
до конца распродажи осталось:
DAX функция ERROR в Power BI и Power Pivot
ERROR () — останавливает выполнение DAX кода и выводит заранее определенную пользователем ошибку (предупреждение).
Синтаксис: ERROR («Текст ошибки»)
Пример: в Power BI имеется исходная таблица с перечислением товаров и их количеством
Суть задачи: создать такую меру, чтобы она всегда вычисляла общее количество товара и пользователь не мог наложить никаких фильтров на это вычисление. Если пользователь накладывает фильтры, нужно остановить вычисление меры и в Power BI Desktop выдать пользователю ошибку (предупреждение).
Общее количество можно рассчитать при помощи DAX функции SUM:
Общее Количество Товара = SUM ('Товары'[Количество])
Данная формула действительно сможет посчитать общее количество товара, но она также легко подвержена пользовательским фильтрам, что по условию задачи нам не нужно:
Тогда мы можем изменить формулу выше и сумму рассчитать под следующим условием: если наложен какой-либо фильтр, то выдать пользователю предупреждение, если фильтра нет, то рассчитать количество.
Все это легко решается при помощи функций IF (условия «если») и ISFILTERED (проверяет на наличие фильтров):
Общее Количество Товара = IF( ISFILTERED('Товары'[Товар]); "ФИЛЬТРОВАТЬ ТОВАРЫ НЕЛЬЗЯ!"; SUM('Товары'[Количество]) )
Получившаяся формула вполне рабочая, если мы выберем какой-либо товар, то нам действительно выйдет предупреждение:
В принципе, мы задачу практически решили. Но, можно пойти еще дальше и при пользовательском фильтре не то чтобы просто вывести предупреждение, а вообще остановить работу DAX формулы и тем самым действительно обратить внимание пользователя к ошибке.
И это как раз таки можно реализовать при помощи функции ERROR, прописав внутри нее наш текст предупреждения, и вставив ERROR заместо текста предупреждения в формуле выше:
Общее Количество Товара = IF( ISFILTERED('Товары'[Товар]); ERROR("ФИЛЬТРОВАТЬ ТОВАРЫ НЕЛЬЗЯ!"); SUM('Товары'[Количество]) )
Тогда, если пользователь наложит фильтр, то DAX формула остановит свою работу:
И при нажатии на визуализации в Power BI на ссылку «См. подробности», выйдет текст самого предупреждения, который мы прописывали в ERROR:
Если убрать все фильтры, то, соответственно, формула рассчитает общее количество товаров и ни каких предупреждений от ERROR не будет.
DAX функция IFERROR (если ошибка) в Power BI и Power Pivot
IFERROR () — если ошибка. Производит вычисление выражения и если во время вычисления возникла ошибка, то функция выводит значение из второго параметра, если ошибок нет, то возвращается результат вычисления самого выражения.
Синтаксис: IFERROR (Выражение; Значение Если Ошибка)
Пример формулы 1: IFERROR (6 / 2; BLANK() ) Результат: 3
В итоге возвратился результат вычисления самого выражения, так как само выражение «6 / 2» вычисляется без ошибок и равно 3.
Пример формулы 2: IFERROR (6 / 0; BLANK() ) Результат: пусто
Так как на 0 делить нельзя, то результатом вычисления выражения будет ошибка и в этом случае IFERROR выведет значение из второго параметра, где в нашем случае стоит функция BLANK, которая, в свою очередь, выводит пустое значение.
То есть, функцией IFERROR можно обрабатывать ошибки в формулах, где возможно деление на 0. Но, кроме этого, можно при помощи нее застраховываться и от любых других ошибок, возникающих при выполнении формул в DAX.
DAX функция ISERROR в Power BI и Power Pivot
ISERROR () — относится к информационным функциям DAX. Она выводит значение TRUE (Истина), если значение, входящее в ее параметр вычисляется с ошибкой, а также, значение FALSE (Ложь), если ошибок нет.
Синтаксис: ISERROR (Значение)
Пример формулы 1: ISERROR (6 / 2) Результат 1: FALSE (Ложь) Пример формулы 2: ISERROR (6 / 0) Результат 2: TRUE (Истина)
В первой формуле ISERROR выдала значение FALSE (Ложь), потому что выражение «6 / 2» вычисляется без ошибки. Тогда как, во втором случае выражение «6 / 0» вычисляется с ошибкой и поэтому ISERROR выдала значение TRUE (Истина).
Если ISERROR дополнить функцией условия «если» IF, то получится полный аналог DAX функции, которую мы рассматривали выше — IFERROR:
IFERROR = IF ( ISERROR (Выражение); "Значение Если Ошибка" Выражение )
На этом, с разбором функций обработок ошибок в Power BI и Power Pivot, все.
Также, напоминаю Вам, что до 29 сентября 2023 г. у Вас имеется шикарная возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 60% (вместо 10000, всего за 4000 руб.)
В этом видеокурсе язык DAX преподнесен как простой конструктор, состоящий из нескольких блоков, которые имеют свое определенное, конкретное предназначение. Сочетая различными способами эти блоки, Вы, при помощи конструктора формул DAX, с легкостью сможете решать любые (простые или сложные) аналитические задачи.
Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 60% (до 29 сентября 2023 г.): узнать подробнее
До конца распродажи осталось:
Пожалуйста, оцените статью:
- 5
- 4
- 3
- 2
- 1
(5 голосов, в среднем: 5 из 5 баллов)
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
до конца распродажи осталось:
A-ZGroupsSearch
IFERROR DAX Function (Logical) Not recommended
Returns value_if_error if the first expression is an error and the value of the expression itself otherwise.
Syntax
IFERROR ( <Value>, <ValueIfError> )
Parameter | Attributes | Description |
---|---|---|
Value |
Any value or expression. |
|
ValueIfError |
Any value or expression. |
Return values
Scalar A single value of any type.
A scalar of the same type as Value
» 3 related functions
Examples
-- IFERROR detects if the first argument produces an error. -- In that case, it returns the second argument, without -- erroring out. DEFINE MEASURE Sales[Year Value unprotected] = VAR CurrentYear = SELECTEDVALUE ( 'Date'[Calendar Year] ) RETURN VALUE ( CurrentYear ) MEASURE Sales[Year Value] = VAR CurrentYear = SELECTEDVALUE ( 'Date'[Calendar Year] ) RETURN IFERROR ( INT ( VALUE ( CurrentYear ) ), INT ( VALUE ( RIGHT ( CurrentYear, 4 ) ) ) ) EVALUATE SUMMARIZECOLUMNS ( 'Date'[Calendar Year], // If you uncomment the following line, the query generates an error // "Year Value unprotected", [Year Value unprotected], "Year Value", [Year Value] ) ORDER BY [Calendar Year]
Calendar Year | Year Value |
---|---|
2005-01-01 | 2,005 |
2006-01-01 | 2,006 |
2007-01-01 | 2,007 |
2008-01-01 | 2,008 |
2009-01-01 | 2,009 |
2010-01-01 | 2,010 |
2011-01-01 | 2,011 |
Related functions
Other related functions are:
- IF
- ISERROR
- DIVIDE
Last update: Sep 14, 2023 » Contribute » Show contributors
Contributors: Alberto Ferrari, Marco Russo, Kenneth Barber
Microsoft documentation: https://docs.microsoft.com/en-us/dax/iferror-function-dax
2018-2023 © SQLBI. All rights are reserved. Information coming from Microsoft documentation is property of Microsoft Corp. » Contact us » Privacy Policy & Cookies
To generate formulas and expressions in Excel data models for Power BI, Analysis Services, and Power Pivot, Data Analysis Expressions (DAX), a group of functions and operators, can be combined. Data Analysis Expression is a feature of the Power BI toolset that enables business analysts to maximize the value of their datasets. These expressions make the process of creating reports faster and more enjoyable for the data analyst.
DAX IF Functions
Logical IF functions, which are used to combine many conditions and decide if a condition is true or not, enable the introduction of decision-making. Logical functions provide details about the values or sets in an expression when they are applied to it. Let’s validate these functions on a sample library supplies dataset. It can be seen as follows-
Dataset
Apply the following queries by adding a New column in the model.
DAX IF
Validates a condition and, if TRUE, returns one value; else, it returns another.
Syntax: IF(<logical_test>, <value_if_true>[, <>])
- logical_test: Anything that may be evaluated to either TRUE or FALSE.
- value_if_true: The result that is returned when the logical test returns TRUE.
- value_if_false: The value that is returned if the logical test returns FALSE (optional). BLANK is returned if it is left out.
In the following example, we are checking if the client is Delhiite or not, based on the name of the Client State.
Example: Column = IF(‘SLS Order Detials_Master'[Client State]= “New Delhi”, “Resident”, “Non-resident”)
The column gets added to the dataset as shown below,
DAX IF.EAGER
Validates a condition and, if TRUE, returns one value; else, it returns another. The execution plan is eager, and regardless of the condition expression, it always performs the branch expressions.
Syntax: IF.EAGER(<logical_test>, <value_if_true>[, <value_if_false>])
- logical_test: Anything that may be evaluated to either TRUE or FALSE.
- value_if_true: The result that is returned when the logical test returns TRUE.
- value_if_false: The value that is returned if the logical test returns FALSE (optional). BLANK is returned if it is left out.
In the following example, we are checking if the client is Delhiite or not, based on the Client’s Pin code.
Example: Column1 = IF.EAGER(‘SLS Order Detials_Master'[Client Pin Code]= “110003”, “Resident”, “Non-resident”)
The column gets added to the dataset as shown below,
DAX IFERROR
DAX IFERROR returns the outcome of the expression itself unless the expression returns an error, in which case it returns a specified value.
Syntax: IFERROR(value, value_if_error)
- value: Any term or value.
- value_if_error: Any term or value.
Example: Column2 = IFERROR(345/0,345)
The column gets added to the dataset as shown below,
Last Updated :
23 Jan, 2023
Like Article
Save Article
Evaluates an expression and returns a specified value if the expression encounters an error; otherwise, it returns the value of the expression itself.
Syntax:
IFERROR ( <Value>, <Value_If_Error> )
Description:
S no. | Parameter | Description |
1 | Value | Any value or expression. |
2 | Value_If_Error | Any value or expression, give error message here. |
Let’s get started-
Following these steps-
Step-1: Create a measure and write below expression in measure, here we creating an error situation to adding String and Number value.
Measure in Power BI
Step-2: Now, add a Card visual to your Power BI page and drag the measure onto it.
Conversion Error in Measure
As you saw, it returns an error ‘can not convert Text to Number’, now we handle the error with some messages.
Step-3: Create other measure and write below expression in measure.
IFERROR_Measure = IFERROR("A"+1,"Wrong Input")
IFERROR – DAX
Step-4: After this drag measure into Card visual, it returns the given error message instead of conversion error.
IFERROR DAX Example
If expression not return any error, it returns the value of expression, Let’s take a closer look.
IFERROR_Measure_2 = IFERROR(1+1,"Wrong Input")
IFERROR – DAX
Hope you enjoyed the post. Your valuable feedback, question, or comments about this post are always welcome or you can leave us message on our contact form , we will revert to you asap.
Recommended Power BI Post:
ALLEXCEPT
UNION
DATATABLE
ALLSELECTED
ALL
ADDCOLUMNS
IFERROR Function is a Power BI DAX Logical Function that evaluates an expression and returns a specified value, If the expression returns an error else returns the value of the expression itself.
It returns a scalar of the same type as value.
SYNTAX
IFERROR(value, value_if_error)
value is any value or expression.
value_if_error is any value or expression that is used to specify a value or expression that you want to see in output, if you get an error.
Lets look at an example of IFERROR function.
IFERROR Function to trap and handle an error
In following Dax Measure, IFERROR function trap an error and returns an alternate output value as a message .
Here we have provided an expression 1/0 to IFERROR function that produce a divide by zero error, and IFERROR Function trap this error and returns a second argument (value_if_error) value that is “Divided By Zero Error” .
Value = IFERROR(1/0, "Divided By Zero Error")
Lets drag the Value measure onto Card visual to see the output.
Here you can see, it returns a second argument value that is a message as expression evaluates an error, and IFERROR function trap this error.
IF IFERROR function when no error occurred
If no error occurred then IFERROR Function returns the value of expression itself.
Lets modify the above measure as given below.
Now we have taken an expression as 10/10, that is valid expression and will not give any error so IFERROR function just returns the value of expression as output.
Value = IFERROR(10/10, "Divided By Zero Error")
Lets see the output of measure, drag the measure onto card visual.
It returns the expression value that is 10/10 =1.
Lets look at one more example.
Here we have a dataset that includes an item and their Quantity and Price.
ID Item Price Quantity
1 | HP | 500 | 0 |
2 | SAMSUNG | 200 | null |
3 | ACER | 500 | null |
4 | ACER | 780 | 9 |
5 | DELL | 1200 | 5 |
6 | APPLE | 5680 | 70 |
Now we have to create a measure to calculate per quantity price that will be a (Total price) /(Total Quantity) for an individual items.
As you can see, some of quantity value is null or zero, that can produce infinity or divide by zero error.
Lets create a measure to calculate a Per Quantity Price.
PER_QUANTITY_PRICE = (SUM(PriceTbl[Price])/SUM(PriceTbl[Quantity])
To see the output of measure PER_QUANTIY_PRICE, just drag it in table visual.
As you can see, for last two records ,it returns infinity.
To trap and handle such error, IFERROR function can be used as shown below.
Lets create another measure that uses IFERROR Function
PER_QUANTITY_PRICE_With_IFERROR = IFERROR(SUM(PriceTbl[Price])/SUM(PriceTbl[Quantity]),0)
Lets see the ouput of PER_QUANTITY_PRICE_With_IFERROR measure by dragging it to next of previous measure in table visual.
You can see, For last two records IFERROR function gives 0 value.
Also Read..
SQL Basics Tutorial | SQL Advance Tutorial | SSRS | Interview Q & A |
SQL Create table | SQL Server Stored Procedure | Create a New SSRS Project | List Of SQL Server basics to Advance Level Interview Q & A |
SQL ALTER TABLE | SQL Server Merge | Create a Shared Data Source in SSRS | SQL Server Question & Answer Quiz |
SQL Drop | SQL Server Pivot | Create a SSRS Tabular Report / Detail Report | |
….. More | …. More | ….More | |
Power BI Tutorial | Azure Tutorial | Python Tutorial | SQL Server Tips & Tricks |
Download and Install Power BI Desktop | Create an Azure storage account | Learn Python & ML Step by step | Enable Dark theme in SQL Server Management studio |
Connect Power BI to SQL Server | Upload files to Azure storage container | SQL Server Template Explorer | |
Create Report ToolTip Pages in Power BI | Create Azure SQL Database Server | Displaying line numbers in Query Editor Window | |
….More | ….More | ….More |