Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
¡Allí maestros de Dax!
¿Podría alguien ayudarme a resolver un caso que tengo en mi informe:
para una fila determinada de la matriz ("Opening") en la celda del mes actual, necesito mostrar el valor del mes anterior. Todas las demás filas : el valor del mes actual, pero con algunos 'filtros'
Tengo un borrador de la medida, pero no funciona...
Result =
VAR start_date =
CALCULATE ( MIN ( Calendar_start[Date] ), ALLSELECTED ( Calendar_start[Date] ) )
VAR end_date =
CALCULATE ( MAX ( Calendar_end[Date] ), ALLSELECTED ( Calendar_end[Date] ) )
VAR currentdate =
SELECTEDVALUE ( 'TABLE'[DAYTIME] )
VAR previousdate =
EDATE ( currentdate, -1 )
var act_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "ACTUAL", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
var prod_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "PROD", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
RETURN
SWITCH(TRUE(),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Opening", CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[DAYTIME] = previousdate, 'TABLE'[ITEM] = "PROD"),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Lifted", act_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Production", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Closing", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Adjustment", prod_value,
BLANK())
Hay 3 tablas de calendario en mi informe:
Tablas "Calendar_start", "Calendar_end" para el intervalo de fechas personalizado
y Calendar_table que incluye fechas DISTINCT de la "tabla principal" (la tabla principal tiene que estar en modo de consulta directa, por lo que no puedo agregar nuevas columnas en ella y es por eso que necesito esta tabla adicional) y algunas columnas de formatos de fecha personalizados.
Mi matriz se ve así:
Supongo que la mecánica de la medida debería ser así: measure busca valor en la tabla CONFIG para una fila en particular, calcula la suma de este valor de la tabla principal (pero donde month es el "mes anterior") y muestra el valor calculado en la columna para el mes actual...
Por favor, compruebe mi archivo de ejemplo para obtener más detalles.
Realmente aprecio cualquier ayuda e ideas!
Gracias de antemano!
otro
Solved! Go to Solution.
No @inna_sysco,
Pruebe la siguiente fórmula:
Result =
VAR start_date =
CALCULATE ( MIN ( Calendar_start[Date] ), ALLSELECTED ( Calendar_start[Date] ) )
VAR end_date =
CALCULATE ( MAX ( Calendar_end[Date] ), ALLSELECTED ( Calendar_end[Date] ) )
VAR currentdate =
SELECTEDVALUE ( 'Calendar_table'[DAYTIME] )
var act_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "ACTUAL", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
var prod_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "PROD", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
var prev = CALCULATE ( SUM ( 'TABLE'[VALUE] ), ALLSELECTED(Calendar_table[DAYTIME]), FILTER( ALL('TABLE'), 'TABLE'[DAYTIME] <= EOMONTH ( currentdate, -1 ) && 'TABLE'[DAYTIME] > EOMONTH(currentdate,-2)), 'TABLE'[ITEM] = "PROD")
RETURN
SWITCH(TRUE(),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Opening", IF( MAX(Calendar_table[DAYTIME]) <= end_date && MAX(Calendar_table[DAYTIME]) >= start_date, prev ),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Lifted", act_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Production", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Closing", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Adjustment", prod_value,
BLANK())
Si el problema sigue sin resolverse, proporcione información detallada del error o el resultado esperado que espera. Hágamelo saber de inmediato, esperando su respuesta.
Saludos
Winniz
Si esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@inna_sysco ,No tengo claro el resultado esperado. ¿Por qué estás demandando a la segunda rebanadora de fechas?
Ya tiene mes año en la columna.
Si necesita MOM con una tabla de fechas
MTD Ventas = CALCULATE(SUM(Sales[Sales Amount]),DATESMTD('Date'[Date]))
last MTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESMTD(dateadd('Date'[Date],-1,MONTH)))
diff = [Ventas MTD]-[últimas Ventas MTD]
diff % = divide([MTD Sales]-[last MTD Sales],[last MTD Sales])
Si necesita comparar dos períodos de elección de las segmentaciones de datos, puede consultar
Cómo usar dos segmentaciones de datos de fecha /período:https://www.youtube.com/watch?v=WSeZr_-MiTg
Hola @amitchandak , gracias por la respuesta!
¿Qué quiere decir con "la segunda rebanadora de fecha"?
Para el informe, necesito que las fechas predeterminadas se estilen en segmentaciones de datos de "hace 6 meses" al "mes anterior". Es el requisito del usuario.
Y el valor predeterminado "entre " la segmentación de datos de Power BI no funciona en este caso
Como puede ver en la imagen que adjunto, faltan valores para la fila OPENING, pero esta fila debe incluir LA SUMA de valores del mes anterior.
No @inna_sysco,
Pruebe la siguiente fórmula:
Result =
VAR start_date =
CALCULATE ( MIN ( Calendar_start[Date] ), ALLSELECTED ( Calendar_start[Date] ) )
VAR end_date =
CALCULATE ( MAX ( Calendar_end[Date] ), ALLSELECTED ( Calendar_end[Date] ) )
VAR currentdate =
SELECTEDVALUE ( 'Calendar_table'[DAYTIME] )
var act_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "ACTUAL", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
var prod_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "PROD", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
RETURN
SWITCH(TRUE(),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Opening", CALCULATE ( SUM ( 'TABLE'[VALUE] ), ALLSELECTED(Calendar_table[DAYTIME]), FILTER( ALL('TABLE'), 'TABLE'[DAYTIME] <= EOMONTH ( currentdate, -1 ) && 'TABLE'[DAYTIME] > EOMONTH(currentdate,-2)), 'TABLE'[ITEM] = "PROD"),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Lifted", act_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Production", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Closing", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Adjustment", prod_value,
BLANK())
Si el problema sigue sin resolverse, proporcione información detallada del error o el resultado esperado que espera. Hágamelo saber de inmediato, esperando su respuesta.
Saludos
Winniz
Si esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @v-kkf-msft !
Muchas gracias por su respuesta!
Su medida funciona casi perfectamente, pero causa un problema adicional.
Ahora la fila "OPENING" muestra el valor de diciembre , en la columna de enero, el valor de enero , en la columna de febrero. ¡Es perfecto!
PERO al mismo tiempo, necesito controlar el rango de fechas por 2 segmentaciones de datos personalizadas: "desde la fecha" y "hasta la fecha".
Y como se puede ver en la captura de pantalla de abajo con la nueva medida no puedo hacerlo, porque muestra todos los valores e ignora los filtros de fechas ...
Por ejemplo, no hay datos para abril de 2021 y las segmentaciones de fechas están limitadas para abril de 2021 y es decir, esa tabla tiene que estar vacía, pero vemos esto...
Tal vez usted sabe cómo solucionar esto?
Realmente apreciar su ayuda!
Saludos cordiales, Inna
Ps. He cambiado el conjunto de datos de ejemplo, se puede encontrar aquí.
No @inna_sysco,
Pruebe la siguiente fórmula:
Result =
VAR start_date =
CALCULATE ( MIN ( Calendar_start[Date] ), ALLSELECTED ( Calendar_start[Date] ) )
VAR end_date =
CALCULATE ( MAX ( Calendar_end[Date] ), ALLSELECTED ( Calendar_end[Date] ) )
VAR currentdate =
SELECTEDVALUE ( 'Calendar_table'[DAYTIME] )
var act_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "ACTUAL", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
var prod_value = CALCULATE ( SUM ( 'TABLE'[VALUE] ), 'TABLE'[ITEM] = "PROD", 'TABLE'[DAYTIME] >= start_date && 'TABLE'[DAYTIME] <= end_date)
var prev = CALCULATE ( SUM ( 'TABLE'[VALUE] ), ALLSELECTED(Calendar_table[DAYTIME]), FILTER( ALL('TABLE'), 'TABLE'[DAYTIME] <= EOMONTH ( currentdate, -1 ) && 'TABLE'[DAYTIME] > EOMONTH(currentdate,-2)), 'TABLE'[ITEM] = "PROD")
RETURN
SWITCH(TRUE(),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Opening", IF( MAX(Calendar_table[DAYTIME]) <= end_date && MAX(Calendar_table[DAYTIME]) >= start_date, prev ),
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Lifted", act_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Production", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Closing", prod_value,
SELECTEDVALUE(CONFIG[CHART_SECTION]) = "Adjustment", prod_value,
BLANK())
Si el problema sigue sin resolverse, proporcione información detallada del error o el resultado esperado que espera. Hágamelo saber de inmediato, esperando su respuesta.
Saludos
Winniz
Si esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
¡Hay @v-kkf-msft!
Muchas gracias por su ayuda! Su solución es definitivamente lo que estaba buscando!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |