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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Total acumulado de los últimos meses en función de la selección de la segmentación de datos del mes

Hola a todos

La estructura de Mis Tablas es la siguiente:
Tabla de hechos:

Time_month_idVentas



Tabla de fechas de dimensión:

Time_month_idFIS_YRFIS_Month_noMonth_NameFecha
P. ej..21720241Enero1/1/2024
21820242Febrero1/2/2024



Tabla de fecha de dimensión 2:
<igual que la tabla de fechas de dimensión>

La columna de fecha se crea a través de la columna calculada de FIS_year y FIS_Month_no, tomando el primer día del mes.

Relación:

Tabla de fechas de dimensión[Time_Month_id] -> Tabla de hechos[Time_month_id]

Tabla de fechas de dimensión 2[Time_Month_id] -> Tabla de fechas de dimensión[Time_Month_id] (inactiva)


Emitir: Actualmente, mi página de informe tiene un montón de elementos visuales, de los cuales uno de ellos es un gráfico de barras. Actualmente estoy tratando de que mi gráfico de barras (el eje x es Month_name) muestre los últimos meses acumulados desde el comienzo del año hasta el mes seleccionado en una segmentación de datos de un año a un mes (que también es una segmentación de selección única).

Por ejemplo, selecciono '2023 -> junio', el gráfico de barras debe mostrar de enero a junio, siendo cada valor el acumulativo. Por ejemplo, la barra de febrero mostrará los números de enero + febrero, la barra de marzo mostrará los números de enero + febrero + marzo, etc.

Actualmente, refiriéndose al contenido de SQLBI aquí: https://www.youtube.com/watch?v=Ljc10BJSdQU&ab_channel=SQLBI , pude obtener la cantidad individual normal de los últimos meses, pero no puedo obtener la salida deseada para el total acumulado. Sigo el código en el enlace de la siguiente manera:

Full Year Sales YTD =
var referencedate = MAX(D_TIME_MONTH[Date])
var num_of_months = -MAX(D_TIME_MONTH[FIS_MON_NO])
var ReferencePrevDate = MAX('D_TIME_MONTH (3)'[Date])
 
var Previousdates =
    Filter(
        DATESINPERIOD(
            'D_TIME_MONTH (3)'[Date],
            EOMONTH(DATE(YEAR(referencedate),MONTH(referencedate),1),0),
            num_of_months,
            MONTH
        ),
        'D_TIME_MONTH (3)'[Date] <= ReferencePrevDate)
var result =
    IF(ReferencePrevDate <= referencedate,
        CALCULATE([Sales],
                    REMOVEFILTERS(D_TIME_MONTH),
                    Previousdates,
                    USERELATIONSHIP('D_TIME_MONTH (3)'[TIME_MONTH_ID],D_TIME_MONTH[TIME_MONTH_ID])))
 
 
RETURN
result


Cuando pongo en un gráfico de barras donde el eje x proviene de la tabla de fechas desconectada (tabla de dimensiones de fecha 2) nombre del mes y esta medida como valor, lo que obtengo son solo los montos de los meses individuales (desde el comienzo del mes del año hasta el mes seleccionado) en lugar de la cantidad acumulada deseada.

También tenga en cuenta: solo una opción que consideré:

1. Crear columnas adicionales para la cantidad acumulada en lugar de -> No es factible ya que mi tabla de datos tiene 100 millones de filas y estamos usando una variedad de columnas no solo la que se indica aquí, si vamos a crear una acumulativa para cada métrica, terminará convirtiéndose en una tabla demasiado grande

¡Muy apreciado si alguien puede dar alguna idea de lo que está mal con mi código o hay algún otro enfoque / solución posible!

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @xiaois ,

Aquí están mis datos de muestra:

vjunyantmsft_0-1726451531503.png

vjunyantmsft_1-1726451539456.png
Esta es la relación:

vjunyantmsft_8-1726451873645.png


En primer lugar, utilice este DAX para crear una medida para calcular los valores que son el acumulativo:

Sum of Sales = 
VAR _CurrentYear = MAX('Dimension date table'[FIS_YR])
VAR _CurrentMonth = MAX('Dimension date table'[Month_Name])
VAR _CurrentMonthId = 
CALCULATE(
    MAX('Dimension date table'[Time_month_id]),
    'Dimension date table'[FIS_YR] = _CurrentYear && 'Dimension date table'[Month_Name] = _CurrentMonth
)
VAR _CurrentFirstMonthId = 
CALCULATE(
    MAX('Dimension date table'[Time_month_id]),
    ALL('Dimension date table'),
    'Dimension date table'[FIS_YR] = _CurrentYear && 'Dimension date table'[FIS_Month_no] = 1
)
RETURN
CALCULATE(
    SUM('Fact Table'[Sales]),
    ALL('Fact Table'),
    'Fact Table'[Time_month_id] >= _CurrentFirstMonthId && 'Fact Table'[Time_month_id] <= _CurrentMonthId
)

Salida:

vjunyantmsft_2-1726451623120.png

Utilice este DAX para crear otra medida como filtro:

Flag = 
VAR _YEAR = SELECTEDVALUE('Dimension date table 2'[FIS_YR])
VAR _MonthName = SELECTEDVALUE('Dimension date table 2'[Month_Name])
VAR _SelectedMonthId = 
CALCULATE(
    MAX('Dimension date table'[Time_month_id]),
    ALL('Dimension date table'),
    'Dimension date table'[FIS_YR] = _YEAR && 'Dimension date table'[Month_Name] = _MonthName
)
VAR _FirstMonthId = 
CALCULATE(
    MAX('Dimension date table'[Time_month_id]),
    ALL('Dimension date table'),
    'Dimension date table'[FIS_YR] = _YEAR && 'Dimension date table'[FIS_Month_no] = 1
)
RETURN
IF(
    MAX('Fact Table'[Time_month_id]) >= _FirstMonthId && MAX('Fact Table'[Time_month_id]) <= _SelectedMonthId,
    1,
    0
)

Realice los ajustes como se muestra en la siguiente figura:

vjunyantmsft_3-1726451725868.png

vjunyantmsft_4-1726451745031.png


Y el resultado final es el siguiente:

vjunyantmsft_5-1726451772673.png

vjunyantmsft_6-1726451779813.png

vjunyantmsft_7-1726451792817.png


Saludos
Dino Tao
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Hola, gracias por la respuesta, pero encontré una forma más sencilla de hacerlo usando TOTALYTD. ¡Gracias por la respuesta!

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Solution Authors