Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
2 years ago
Solved

DAX with VAR

Hello,

I don't understand why these two DAX codes don't return the same amount in Power BI. In my example, imagine a table with 4 columns:

- Date of receipt
- Amount of the receipt
- Receipt number
- Type

The type is "purchase order" when it equals 1 and "invoice" when it equals 2. I simply want to calculate the amount when the type is 1. I'm using this very simple example for the variables, but I could do it differently.

In my first case, my code is as follows:
```DAX
VAR status_bdc = 1
VAR BDC = [Amount]
VAR result = CALCULATE(BDC, CBonLivraison[TypeBon] = status_bdc)
RETURN result
```
Here, [Amount] = SUM(Amount of the receipt). In this case, "result" is not correct because it doesn't apply the filter Type = 1.

In the following code, it works:
```DAX
VAR status_bdc = 1
VAR BDC = [Amount]
VAR result = CALCULATE([Amount], CBonLivraison[TypeBon] = status_bdc)
RETURN result
```
The only difference is that in the first code, I call the variable BDC which contains the measure, whereas in the second case, I directly include the measure amount in my result variable.

If someone can explain to me because I don't understand the point of it if it doesn't work, I also tried putting Var BDC = SUM(Amount of the receipt) and it doesn't work.

Thanks in advance.

  • I see this regularly on the forum.  When you assign a measure to a variable, it gets evaluated (and won't change after that). There isn't a notion of some kind of dynamic evaluation where the variable holds the name of the measure and evaluates it at some later point.

2 Replies

  • HotChilli's avatar
    HotChilli
    Community Champion

    I see this regularly on the forum.  When you assign a measure to a variable, it gets evaluated (and won't change after that). There isn't a notion of some kind of dynamic evaluation where the variable holds the name of the measure and evaluates it at some later point.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thx for this answer, it's clear now !!!!