Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Estimados usuarios avanzados,
Tengo un modelo como se muestra a continuación. También tengo una tabla desconectada que actúa como segmentación de datos para mi valor (MTD, QTD, YTD). Quiero calcular una medida basada en las rebanadoras. Actualmente estoy usando esta fórmula:
Medida =
El problema es que no importa que seleccione MTD, QTD O YTD, me muestra el mismo valor. Por favor, ayuda!!!
@sufiyanakhtar oye, implementaste la lógica no de la manera clásica tan difícil de decir lo que está pasando.
Debe leer y familiarizarse con las técnicas de mejores prácticas para estos patrones de inteligencia del tiempo:
https://www.daxpatterns.com/time-patterns/
Otra pregunta importante: Veo que usaste la columna 'CORPDW FISCALYEARROLLINGPERIOD'[Día]
en sus medidas. ¿Es un dato o un número de día entre 1 y 31?
Tiene que ser una fecha, tal vez ese sea todo el tema.
De todos modos, limpié un poco su código y también agregué REMOVEFILTERS solo para estar seguro, pero en caso de que sea un
'CORPDW FISCALYEARROLLINGPERIOD'[Día] columna de fecha que no es necesaria. Entonces, esta es la pregunta más importante, ¿qué es esa columna?
Measure1 =
VAR _slicr_value =
SELECTEDVALUE ( 'Period Slicers'[Period Slicer] )
RETURN
SWITCH (
_slicr_value,
"MTD",
VAR _mtd_start_date = MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[MTD_START_DATE] )
VAR _mtd_end_date = MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[MTD_END_DATE] )
RETURN
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
_mtd_start_date,
_mtd_end_date
),
REMOVEFILTERS('CORPDW FISCALYEARROLLINGPERIOD'),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
"QTD",
VAR _qtd_start_date = MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[QTD_START_DATE] )
VAR _qtd_end_date = MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[QTD_END_DATE] )
RETURN
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
_qtd_start_date,
_qtd_end_date
),
REMOVEFILTERS('CORPDW FISCALYEARROLLINGPERIOD'),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
"YTD",
VAR _ytd_start_date = MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[YTD_START_DATE] )
VAR _ytd_end_date = MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[YTD_END_DATE] )
RETURN
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
_ytd_start_date,
_ytd_end_date
),
REMOVEFILTERS('CORPDW FISCALYEARROLLINGPERIOD'),
'CORPDW ACCOUNT'[AccType] = "Expense"
)
)
Hola Esparta, La columna del día es una columna de tipo de fecha. En realidad, mi arquitecto de datos ha diseñado el backend porque los datos se agregan mensualmente. Así que el día al que se refiere tiene fechas como 01/01/2020, 02/01/2020, 03/01/2020 (MM/DD/AAAA) y así sucesivamente.... Por favor, ayuda ya que he estado rompiéndome la cabeza en esto 💔
@sufiyanakhtar
Espera, ¿tienes una tabla de datos adecuada? ¿Fechas continuas y únicas o la tabla de datos está en una granularidad mensual?
P.D. ¿Revisaron mi medida de todos modos?
Amigo, tu medida funcionó!!! Permítanme verificar los valores con los valores de SQL Server y luego marcar su respuesta como solución!!! Además, si pudieras explicarme lo que estaba haciendo mal, ¡sería realmente útil!
@sufiyanakhtar mi placer 🙂
Tengo algunos sospechosos 🙂 Es tarde aquí, así que continuaremos mañana.
PD: echa un vistazo a mi informe de exhibición:
https://community.powerbi.com/t5/Data-Stories-Gallery/SpartaBI-Feat-Contoso-100K/td-p/2449543
Dale un pulgar hacia arriba si te gustó 🙂
Claro Esparta, pero por favor hágamelo saber para que yo entienda esto mejor 🙂
@sufiyanakhtar así que como dije, tengo un sospechoso, pero primero necesito hacer algunas pruebas para verificar mi suposición.
Ejecute esta medida y dígame si aún obtiene el resultado correcto o el mismo que el resultado incorrecto original:
Measure1 =
VAR _slicr_value =
SELECTEDVALUE ( 'Period Slicers'[Period Slicer] )
RETURN
SWITCH (
_slicr_value,
"MTD",
VAR _mtd_start_date = MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[MTD_START_DATE] )
VAR _mtd_end_date = MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[MTD_END_DATE] )
RETURN
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
_mtd_start_date,
_mtd_end_date
),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
"QTD",
VAR _qtd_start_date = MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[QTD_START_DATE] )
VAR _qtd_end_date = MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[QTD_END_DATE] )
RETURN
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
_qtd_start_date,
_qtd_end_date
),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
"YTD",
VAR _ytd_start_date = MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[YTD_START_DATE] )
VAR _ytd_end_date = MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[YTD_END_DATE] )
RETURN
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
_ytd_start_date,
_ytd_end_date
),
'CORPDW ACCOUNT'[AccType] = "Expense"
)
)
Además, no olvide marcar el mensaje con la medida que funcionó como una solución para la visabilidad comunitaria.
Hola Esparta,
Ambos producen el mismo resultado, lo cual es impactante tbh porque probé la misma fórmula que la más reciente y no funcionó antes. de todos modos, ambos producen el mismo resultado
@sufiyanakhtar es extraño.
Así que estás diciendo que ambos funcionaron, pero esto (tu original) no lo hizo:
Measure1 =
SWITCH (
TRUE (),
SELECTEDVALUE ( 'Period Slicers'[Period Slicer] ) = "MTD",
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[MTD_START_DATE] ),
MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[MTD_END_DATE] )
),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
SELECTEDVALUE ( 'Period Slicers'[Period Slicer] ) = "QTD",
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[QTD_START_DATE] ),
MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[QTD_END_DATE] )
),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
SELECTEDVALUE ( 'Period Slicers'[Period Slicer] ) = "YTD",
CALCULATE (
SUM ( 'CORPDW TRIALBALANCE'[Amount_in_Transaction_Currency] ),
DATESBETWEEN (
'CORPDW FISCALYEARROLLINGPERIOD'[Day],
MIN ( 'CORPDW FISCALYEARROLLINGPERIOD'[YTD_START_DATE] ),
MAX ( 'CORPDW FISCALYEARROLLINGPERIOD'[YTD_END_DATE] )
),
'CORPDW ACCOUNT'[AccType] = "Expense"
),
BLANK ()
)
¿Puede verificar esto de nuevo?
LOL, sí!!! 😀
@sufiyanakhtar puede compartir una muestra de la tabla de dimensiones de fecha.
Además, ¿qué columna está conectada con el hecho? 'Día' o 'Fecha' y tienes ambos en caso de que 'Día' sea en realidad 'Fecha'
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |