Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola
Actualmente estoy usando tarjetas en mi informe para mostrar que no hay máquinas vendidas
Estoy usando una segmentación de datos de fecha para filtrar los resultados
El requisito es mostrar siempre los últimos meses de datos, es decir, el mes actual + último mes
Y si se selecciona alguna fecha en esa segmentación de datos de fecha, el mes seleccionado se convierte en el mes actual, por lo que debe mostrar los datos del mes seleccionado + (mes seleccionado-1)
Estoy tratando de hacer esto creando una medida.
¿Es posible?
Solved! Go to Solution.
Hay @sainig546 ,
Creo que desea mostrar los valores del mes actual y del mes anterior cuando el mes no está seleccionado en la segmentación de datos. Cuando se selecciona el mes en la segmentación de datos, se mostrará el valor del mes seleccionado y el valor del mes anterior del mes seleccionado.
Aquí está mi solución.
Datos de muestra
1.Cree una tabla de calendario.
Calendar = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date]))
No hay relación entre las tablas.
2.Crear dos medidas.
Current Month =
VAR _date =
EOMONTH ( TODAY (), -1 ) + 1
VAR _noslicer =
CALCULATE (
SUM ( 'Table'[Value] ),
DATESINPERIOD ( 'Table'[Date], _date, -1, MONTH )
)
VAR _year =
SELECTEDVALUE ( 'Calendar'[Date].[Year] )
VAR _month =
SELECTEDVALUE ( 'Calendar'[Date].[MonthNo] )
VAR _slicer =
CALCULATE (
SUM ( 'Table'[Value] ),
FILTER ( 'Table', MONTH ( [Date] ) = _month && YEAR ( [Date] ) = _year )
)
RETURN
IF ( ISFILTERED ( 'Calendar'[Date].[Month] ), _slicer, _noslicer )
Last Month =
VAR _min =
EOMONTH ( TODAY (), -2 ) + 1
VAR _max =
EOMONTH ( TODAY (), -1 )
VAR _noslicer =
CALCULATE (
SUM ( 'Table'[Value] ),
FILTER ( 'Table', [Date] >= _min && [Date] <= _max )
)
VAR _year =
SELECTEDVALUE ( 'Calendar'[Date].[Year] )
VAR _month =
SELECTEDVALUE ( 'Calendar'[Date].[MonthNo] )
VAR _slicer =
CALCULATE (
SUM ( 'Table'[Value] ),
FILTER (
'Table',
[Date]
>= EOMONTH ( DATE ( _year, _month, 1 ), -2 ) + 1
&& [Date] <= EOMONTH ( DATE ( _year, _month, 1 ), -1 )
)
)
RETURN
IF ( ISFILTERED ( 'Calendar'[Date].[Month] ), _slicer, _noslicer )
3.La estructura jerárquica año y mes de la tabla de calendario se colocan en la segmentación de datos, y el resultado es el siguiente.
Puede consultar más detalles en el archivo adjunto.
Saludos
Esteban Tao
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hay @sainig546 ,
Creo que desea mostrar los valores del mes actual y del mes anterior cuando el mes no está seleccionado en la segmentación de datos. Cuando se selecciona el mes en la segmentación de datos, se mostrará el valor del mes seleccionado y el valor del mes anterior del mes seleccionado.
Aquí está mi solución.
Datos de muestra
1.Cree una tabla de calendario.
Calendar = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date]))
No hay relación entre las tablas.
2.Crear dos medidas.
Current Month =
VAR _date =
EOMONTH ( TODAY (), -1 ) + 1
VAR _noslicer =
CALCULATE (
SUM ( 'Table'[Value] ),
DATESINPERIOD ( 'Table'[Date], _date, -1, MONTH )
)
VAR _year =
SELECTEDVALUE ( 'Calendar'[Date].[Year] )
VAR _month =
SELECTEDVALUE ( 'Calendar'[Date].[MonthNo] )
VAR _slicer =
CALCULATE (
SUM ( 'Table'[Value] ),
FILTER ( 'Table', MONTH ( [Date] ) = _month && YEAR ( [Date] ) = _year )
)
RETURN
IF ( ISFILTERED ( 'Calendar'[Date].[Month] ), _slicer, _noslicer )
Last Month =
VAR _min =
EOMONTH ( TODAY (), -2 ) + 1
VAR _max =
EOMONTH ( TODAY (), -1 )
VAR _noslicer =
CALCULATE (
SUM ( 'Table'[Value] ),
FILTER ( 'Table', [Date] >= _min && [Date] <= _max )
)
VAR _year =
SELECTEDVALUE ( 'Calendar'[Date].[Year] )
VAR _month =
SELECTEDVALUE ( 'Calendar'[Date].[MonthNo] )
VAR _slicer =
CALCULATE (
SUM ( 'Table'[Value] ),
FILTER (
'Table',
[Date]
>= EOMONTH ( DATE ( _year, _month, 1 ), -2 ) + 1
&& [Date] <= EOMONTH ( DATE ( _year, _month, 1 ), -1 )
)
)
RETURN
IF ( ISFILTERED ( 'Calendar'[Date].[Month] ), _slicer, _noslicer )
3.La estructura jerárquica año y mes de la tabla de calendario se colocan en la segmentación de datos, y el resultado es el siguiente.
Puede consultar más detalles en el archivo adjunto.
Saludos
Esteban Tao
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hola
Vea si mi solución aquí ayuda - Flexionar una tabla dinámica para mostrar los datos de x meses finalizados un determinado mes defini...
En ella, @sainig546
Digamos que su cortadora de fecha proviene de DateTable[Date].
También puedes probar esta medida:
2MesesVentas =
VAR SelectedDate = SELECTEDVALUE(DateTable[Date]) --esta es tu segmentación de datos
VAR CurrentDate = SELECTEDVALUE(FactTable[Date]) --esta es la columna de fecha en la tabla de hechos
DEVOLUCIÓN
SI(
CurrentDate <= SelectedDate && CurrentDate > EOMONTH(SelectedDate,-2),
SUM(Ventas[Ventas]),
BLANK()) --puede reemplazar BLANK() por 0 si lo prefiere
¿Respondí a su pregunta? Por favor, haga clic en Me gusta y marque mi publicación como una solución si resuelve su problema. Gracias.
Aprecia tus felicitaciones !!!
@sainig546 Quizás:
VAR __Today = TODAY()
VAR __Date = IF(HASONEVALUE('Table'[Date]),MAX('Table'[Date]),__Today)
VAR __CurrentYear = YEAR(__Date)
VAR __CurrentMonth = MONTH(__Date)
VAR __LastMonthYear = YEAR(EOMONTH(__Date,-1))
VAR __LastMonth = MONTH(EOMONTH(__Date,-1))
RETURN
SUMX(FILTER(ALL('Table'),YEAR('Table'[Date])=__CurrentYear && MONTH('Table'[Date])=__CurrentMonth),[Value])
// for last month use:
// SUMX(FILTER(ALL('Table'),YEAR('Table'[Date])=__LastMonthYear && MONTH('Table'[Date])=__LastMonth),[Value])