Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote now!
So I'm trying to create a table that has a YTD and MTD column, based on a measure that filters from a report spec.
The table I'm trying to create looks like this (apologies for the Spanish):
Where Cifra de Negocio is defined as a measure:
Cifra de Negocio =
CALCULATE ( SUM ( 'Transacciones Control de Gestion'[Valor Contable] ), FILTER ( 'Informes', 'Informes'[Nivel 1] = "CIFRA DE NEGOCIO" ) )
And Cifra de Negocio Año Anterior is defined as the following measure:
Cifra De Negocio Año Anterior =
CALCULATE (
[Cifra De Negocio],
SAMEPERIODLASTYEAR ( Fechas[Fecha] )
)Transacciones Control de Gestión is a filtered table that contains all my transactions. Informes contains a report specification, which maps to a number of different account numbers that are related to Transacciones Control de Gestión.
In the table, Mes and Año are the spanish versions of MTD and YTD.
So I try to rewrite Cifra de Negocio as:
Cifra De Negocio =
CALCULATE (
SUM ( 'Transacciones Control de Gestion'[Valor Contable] ),
FILTER (
'Informes',
'Informes'[Nivel 1] = "CIFRA DE NEGOCIO"
),
IF (
ISFILTERED ( 'Periodos en Curso'[Periodo] ),
SWITCH (
VALUES ( 'Periodos en Curso'[Periodo] ),
"Mes", DATESMTD ( Fechas[Fecha] ),
"Año", DATESYTD ( Fechas[Fecha] ),
ALLSELECTED ( Fechas[Fecha] )
),
ALLSELECTED ( Fechas[Fecha] )
)
)But I get the error "A function 'DATESYTD' has been used in a True/False expression that is used as a table filter expression. This is not allowed."
I've eventually ended up replacing that measure with:
Cifra De Negocio =
IF (
ISFILTERED ( 'Periodos en Curso'[Periodo] ),
SWITCH (
VALUES ( 'Periodos en Curso'[Periodo] ),
"Mes", TOTALMTD (
SUM ( 'Transacciones Control de Gestion'[Valor Contable] ),
Fechas[Fecha],
FILTER (
'Informes',
'Informes'[Nivel 1] = "CIFRA DE NEGOCIO"
)
),
"Año", TOTALYTD (
SUM ( 'Transacciones Control de Gestion'[Valor Contable] ),
Fechas[Fecha],
FILTER (
'Informes',
'Informes'[Nivel 1] = "CIFRA DE NEGOCIO"
)
)
),
CALCULATE (
SUM ( 'Transacciones Control de Gestion'[Valor Contable] ),
ALLSELECTED ( Fechas[Fecha] ),
FILTER (
'Informes',
'Informes'[Nivel 1] = "CIFRA DE NEGOCIO"
)
)
)Which seems, at best, a very long-winded way of doing things.
My question is twofold:
Hi @Moof
In CALCULATE() function, the parameter can be a True/False expression. But you need to put a filted table context. For your requirement, you may try to use VAR Function to optimize your formula. Below is the article for your reference.
https://www.sqlbi.com/articles/variables-in-dax/
Regards,
Cherie
Vote for your favorite vizzies from the Power BI World Championship submissions!
If you love stickers, then you will definitely want to check out our Community Sticker Challenge!
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 65 | |
| 52 | |
| 42 | |
| 23 | |
| 21 |
| User | Count |
|---|---|
| 137 | |
| 113 | |
| 52 | |
| 37 | |
| 31 |