Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon'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.
Hola a todos
La estructura de Mis Tablas es la siguiente:
Tabla de hechos:
Time_month_id | Ventas |
Tabla de fechas de dimensión:
Time_month_id | FIS_YR | FIS_Month_no | Month_Name | Fecha | |
P. ej.. | 217 | 2024 | 1 | Enero | 1/1/2024 |
218 | 2024 | 2 | Febrero | 1/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!
Hola @xiaois ,
Aquí están mis datos de muestra:
Esta es la relación:
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:
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:
Y el resultado final es el siguiente:
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!
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.