Agregación dinámica y cálculo basado en selecciones de segmentación de fecha

Un usuario Pregunto ✅

cerveza

Hola a todos,

Estoy luchando con una agregación dinámica de la que estoy bastante seguro deberían ser posible con DAX, pero hasta ahora ha resultado demasiado difícil para mis habilidades actuales…

Lo que básicamente estoy tratando de lograr es esto:

De una tabla de transacciones de ventas estructuradas de la siguiente manera:

Número de parte Fecha de venta Ventas $ Cantidad de ventas
Parte A 01-01-2020 $1.23 1
Parte B 01-02-2020 $2.34 2
Parte C 01-03-2020 $3.45 3
Parte A 01-04-2020 $4.56 4

Me gustaría realizar varios cálculos posteriores basados ​​en el total ventas ($ y cantidad) para cada número de pieza en el «Período A» y el «Período B», donde el Período A y el Período B son dinámicos y se definen en función de dos segmentaciones de fecha «Entre» en la página del informe.

Segmentos de selección de períodos en la página del informeSegmentos de selección de períodos en la página del informe

Lo que he intentado hasta ahora es generar una tabla «agregada» calculada usando SUMMARIZECOLUMNS, y luego crear columnas calculadas adicionales basadas en esa tabla. Sin embargo, dado que la agregación es un cálculo tabla (a diferencia de estar contenido dentro de una medida) no responderá a las selecciones de la segmentación de fechas, por lo que por ahora estoy codificando las fechas en la fórmula de la tabla agregada como se muestra a continuación.

Aggregated Table = 

VAR PeriodA = DATESBETWEEN(vw_DIM_Dates[Date_Key], DATE(2020,02,01),DATE(2020,02,29))
VAR PeriodB = DATESBETWEEN(vw_DIM_Dates[Date_Key], DATE(2020,03,01),DATE(2020,03,31))
RETURN

SUMMARIZECOLUMNS(...

El siguiente enfoque que probé fue calcular la tabla «virtualmente» dentro de una medida usando varias combinaciones de SUMMARIZECOLUMNS(), SUMMARIZE()/ADDCOLUMNS(), GROUPBY(), etc. efecto deseado de calcular una tabla como la siguiente con las ventas totales en el Período A y las ventas totales en el Período B, «virtualmente», para que pueda hacer cálculos de comparación entre los dos períodos. Como ejemplo, la primera y más básica medida que me gustaría calcular es «Ventas totales en el Período A para Partes que también tienen ventas en el Período B».

Parte Ventas en el Período A Ventas en el Período B Ventas en Ambos Períodos
Parte A $10.00 $0.00 FALSO
Parte B $0.00 $30.00 FALSO
Parte C $20.00 $40.00 CIERTO

Siento que la solución probablemente se encuentra en alguna combinación de SUMMARIZECOLUMNS() y CALCULATE(), pero hasta ahora no he podido resolverlo. Los intentos iniciales arrojaron los resultados correctos al calcular cualquiera Ventas en el Período A o Ventas en el Período B, pero cuando ambos se incorporaron a la misma medida, los totales del Período A se mostraron para ambos, lo que me hizo pensar que había algún problema con la forma en que funcionaba el contexto del filtro CALCULATE…

Cualquier idea o recomendación sobre enfoques alternativos sería muy apreciada.

¡Gracias!

amichandak

@ebeery, consulte si mi blog puede ayudar

https://community.powerbi.com/t5/Community-Blog/Comparing-Data-Across-Date-Ranges/ba-p/823601

cerveza

En respuesta a amichandak

Hola @amitchandak, gracias por la ayuda.

Entiendo el método al que hace referencia de cosechar las selecciones de la cortadora para calcular las ventas de los 2 períodos de forma independiente.

Sin embargo, donde todavía estoy luchando es cómo combinar los resultados (en su ejemplo, «Ventas actuales» y «Ventas anteriores») en una sola tabla virtual para realizar cálculos de comparación en los totales, agregados a un nivel de número de pieza.

Por ejemplo, los cálculos simples de «Precio» en las dos últimas columnas de la tabla a continuación.

Parte Ventas $ Período A Período de ventas B Cantidad de ventas A Cantidad de ventas B Precio A Precio B
A $10.00 $20.00 10 15 = $A / Cantidad A = $B / Cantidad B

amichandak

En respuesta a cerveza

@ebeery, aparte del tiempo, se combinará en una dimensión común y puede tomar la diferencia como de costumbre entre dos medidas

diferencia = [period 1] – [period 2]

diferencia % = dividir([period 1] – [period 2], [period 2])

cerveza

En respuesta a amichandak

@amitchandak, la granularidad de los cálculos debe estar en el nivel del número de pieza, por lo que estoy tratando de agregar a ese nivel. No veo cómo se puede lograr eso simplemente usando las medidas de alto nivel que estás describiendo. Tal vez me estoy perdiendo algo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *