Forum Discussion
Show sum in table column based on condition
- 3 years ago
Here is one way.
First the model:
Include slicers from the dimension tables and use the dimension table fields in the visual. Next create this measure:
Filter Slicers = COUNTROWS(RELATEDTABLE(fTable))Add this measure to the filter pane for each slicer and set the value to greater or equal to 1. This will filter each slicer to show the complementary values for each field only.
Now create the measure to show the total only when one currencies is displayed (if there are two or more currencias, the rows are displayed but not the total).
Filter Sum = VAR _Rows = IF ( ISBLANK ( [Sum Total] ), BLANK (), CALCULATE ( DISTINCTCOUNT ( 'fTable'[Currency] ), ALLEXCEPT ( fTable, 'Region Table'[dRegion] ) ) ) //Calculates the distincount of currencies by region RETURN IF ( ISFILTERED ( 'Currency Tbale'[dCurrency] ), [Sum Total], //if a currency is selected, the sum is returned IF ( _Rows > 1, IF ( ISINSCOPE ( 'Region Table'[dRegion] ), [Sum Total] ) // will not return a total if a currency is not selected and there are more than 1 currencies by region , [Sum Total] ) ) //will return the sum if a region is selected with only 1 currency.and you will get:
Sample PBIX file attached
- 3 years ago
For that you need this measure:
Sum converted to euros if = VAR _Rows = IF ( ISBLANK ( [Sum Total] ), BLANK (), CALCULATE ( DISTINCTCOUNT ( 'fTable'[Currency] ), ALLEXCEPT ( fTable, 'Region Table'[dRegion] ) ) ) VAR _NumCurr = CALCULATE ( DISTINCTCOUNT ( 'Currency Tbale'[dCurrency] ), ALLSELECTED ( 'Currency Tbale'[dCurrency] ) ) RETURN IF ( _NumCurr = 1, [Sum Total], IF ( _Rows > 1, [Sum Euro], [Sum Total] ) )(I've added an extra row with the region "Narnia" in USD to check the measure if more than one region is selected)
I have also altered the [Filter Sum] measure for the original table to account for the posibility of the selection of more than one currency:
Filter Sum = VAR _Rows = IF ( ISBLANK ( [Sum Total] ), BLANK (), CALCULATE ( DISTINCTCOUNT ( 'fTable'[Currency] ), ALLEXCEPT ( fTable, 'Region Table'[dRegion] ) ) ) VAR _NumCurr = CALCULATE ( DISTINCTCOUNT ( fTable[Currency] ), ALLSELECTED ( 'Currency Tbale'[dCurrency] ) ) RETURN IF ( AND ( NOT ( ISINSCOPE ( 'Region Table'[dRegion] ) ), _NumCurr <> 1 ), BLANK (), IF ( ISFILTERED ( 'Currency Tbale'[dCurrency] ), [Sum Total], IF ( _Rows > 1, IF ( ISINSCOPE ( 'Region Table'[dRegion] ), [Sum Total] ), [Sum Total] ) ) )New file attached
(PS, if this works for you, please mark this post as the solution instead of the previous one, since this one covers the possibility of multiple currency selections for both the clustered column and table visuals!)
- 3 years ago
Ok. So thanks to the new requirements, I've come up with a much simpler solution to the measures needed:
Filter Sum = VAR _Rows = CALCULATE ( DISTINCTCOUNT ( fTable[Currency] ), ALLSELECTED ( 'Calendar'[Date] ) ) RETURN IF ( _rows > 1, BLANK (), [Sum Total] )Sum converted to euros if = VAR _Rows = CALCULATE ( DISTINCTCOUNT ( fTable[Currency] ), ALLSELECTED ( 'Calendar'[Date] ), ALLSELECTED ( fTable ) ) RETURN IF ( _Rows = 1, [Sum Total], [Sum Euro] )and consequently simplified all the other Conditional Formatting and title measures.
New file attached
Hi PaulDBrown Thanks for your reply! I have a related question about presenting the same data in a chart, so that:
1. if the currencies do not match, then show the Y-axis as "Converted to EUR", else
2. if the currencies are the same, then show the Y-axis as the common currency.
Is this possible? Any help is much appreciated!
| Document ID | Region | Total | Currency | Converted to EUR |
| 3998 | TOD | 6485.52 | NOK | 621.58 |
| 4050 | TOD | 87889 | USD | 90233.88 |
| 4050 | WAP | 89367.5 | DKK | 12014.28 |
| 4060 | HEP | 27050.73 | EUR | 27050.73 |
| 4139 | YUN | 4785.25 | USD | 4912.92 |
| 4145 | WAP | 720 | DKK | 96.79 |
| 4149 | HEP | 583 | EUR | 583 |
| 4157 | WAP | 15204 | CAD | 11356.44 |
| 4160 | YUN | 4197 | USD | 4308.98 |
| 4160 | HEP | 44924 | EUR | 44924 |
| 4164 | WAP | 1297.59 | NOK | 124.36 |
For that you need this measure:
Sum converted to euros if =
VAR _Rows =
IF (
ISBLANK ( [Sum Total] ),
BLANK (),
CALCULATE (
DISTINCTCOUNT ( 'fTable'[Currency] ),
ALLEXCEPT ( fTable, 'Region Table'[dRegion] )
)
)
VAR _NumCurr =
CALCULATE (
DISTINCTCOUNT ( 'Currency Tbale'[dCurrency] ),
ALLSELECTED ( 'Currency Tbale'[dCurrency] )
)
RETURN
IF ( _NumCurr = 1, [Sum Total], IF ( _Rows > 1, [Sum Euro], [Sum Total] ) )
(I've added an extra row with the region "Narnia" in USD to check the measure if more than one region is selected)
I have also altered the [Filter Sum] measure for the original table to account for the posibility of the selection of more than one currency:
Filter Sum =
VAR _Rows =
IF (
ISBLANK ( [Sum Total] ),
BLANK (),
CALCULATE (
DISTINCTCOUNT ( 'fTable'[Currency] ),
ALLEXCEPT ( fTable, 'Region Table'[dRegion] )
)
)
VAR _NumCurr =
CALCULATE (
DISTINCTCOUNT ( fTable[Currency] ),
ALLSELECTED ( 'Currency Tbale'[dCurrency] )
)
RETURN
IF (
AND ( NOT ( ISINSCOPE ( 'Region Table'[dRegion] ) ), _NumCurr <> 1 ),
BLANK (),
IF (
ISFILTERED ( 'Currency Tbale'[dCurrency] ),
[Sum Total],
IF (
_Rows > 1,
IF ( ISINSCOPE ( 'Region Table'[dRegion] ), [Sum Total] ),
[Sum Total]
)
)
)
New file attached
(PS, if this works for you, please mark this post as the solution instead of the previous one, since this one covers the possibility of multiple currency selections for both the clustered column and table visuals!)
- Anonymous3 years agoNot applicable
PaulDBrown Thank you for another brilliant solution!
By the way, how did you create the animated gif? It is an excellent way to show a quick demo!
- PaulDBrown3 years agoCommunity Champion
I use an app called "screen to gif" which is free to download.
BTW, I edited the file and the [Filter Sum] measure while you were posting, so please check the current measure and download the file as it's posted now!
And please change the solution status to the last post -it corrects errors if there is more than one selection in the slicers!)
- Anonymous3 years agoNot applicable
PaulDBrown Thanks for updating the solution! I am going through the code to try to understand it better. Could you please identify which of those measures are relevant? I would like to clean up a little so that it is a bit easier to figure out.
From my understanding, the only measures which should be kept are:
- Filter Sum
- Sum Total
- Sum converted to euros if
- Title if euros
Is this correct?