Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Una medida para obtener datos actuales y del último mes que cambia con la segmentación de datos

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?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

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

vstephenmsft_0-1640743047141.png

1.Cree una tabla de calendario.

Calendar = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date]))

vstephenmsft_1-1640743073756.png

No hay relación entre las tablas.

vstephenmsft_2-1640743086972.png

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.

vstephenmsft_4-1640743227890.png

vstephenmsft_3-1640743221905.png

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.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

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

vstephenmsft_0-1640743047141.png

1.Cree una tabla de calendario.

Calendar = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date]))

vstephenmsft_1-1640743073756.png

No hay relación entre las tablas.

vstephenmsft_2-1640743086972.png

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.

vstephenmsft_4-1640743227890.png

vstephenmsft_3-1640743221905.png

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.

Syndicate_Admin
Administrator
Administrator
Syndicate_Admin
Administrator
Administrator

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 !!!

https://allure-analytics.com/

Syndicate_Admin
Administrator
Administrator

@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]) 

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.