Anónimo
Necesito ayuda para resolver este cálculo en Power BI. Es fácil en Tableau con parámetros de fecha, pero no estoy seguro de cómo hacerlo en Power BI.
Las reglas de cálculo son las siguientes:
- Inicio y parada del cliente. Esta categoría tiene dos subcategorías: (a) nuevos inicios de clientes y (b) paradas de clientes.
- Cliente comienza. Esto está determinado por cuando un cliente se registra como una nueva cuenta, un campo de datos. Conceptualmente, si un cliente se registra/crea una cuenta en los últimos 12 meses (o 365 días), es un «cliente nuevo» y la variación del volumen cae en este grupo. Por definición, hubo algunas ventas en el período actual pero cero ventas en el período anterior (si no hubo ventas en el período actual ni ventas en el período anterior, entonces no existe variación). Si no es un cliente nuevo, la variación cae en otra categoría a continuación.
- Paradas de clientes. Esto es para un cliente que se registró (creó una cuenta) antes de el último período de 12 meses, no compró nada del artículo en el período actual pero sí compró el artículo durante el período de 12 meses anterior.
- Los inicios y paradas del cliente se compensan para producir la variación «Inicio y parada del cliente».
- Inicio y parada parciales. Esta categoría tiene dos subcategorías:
- Parte comienza. Cuando el cliente se registró/creó una cuenta antes de los últimos 12 meses, compró el artículo (volumen) en el período actual pero no tuvo volumen en el período anterior. Si hubo volumen para el período anterior, entonces la variación cae en la categoría 2(b) o (3) a continuación.
- Paradas parciales. Cuando el cliente se registró/creó una cuenta antes de los últimos 12 meses, el cliente no compró el artículo (sin volumen) en el período actual, pero compró algo de volumen en el período anterior. Si hubo volumen en el período actual y en el último período, entonces la variación cae en la categoría (3) a continuación.
- Los inicios y paradas parciales se compensan para producir la variación «Inicio y parada parcial».
- Variación de precio = (Precio actual = Precio Anterior) x Volumen actual
- Variación de volumen = (Volumen actual – Volumen anterior) x Precio anterior
Intenté hacer dos tablas diferentes, unidas en la clave del artículo, porque los cálculos de variación solo buscan las transacciones relevantes del artículo del cliente, pero eso falla al calcular el inicio y la parada del cliente y el inicio y la parada del producto porque no hay datos en el anterior tabla.
El objetivo sería usar tablas de datos para filtrar los datos en las tablas actuales y anteriores, pero parece que no puedo hacer que funcionen en el medio. Cualquier ayuda sería muy apreciada.
Esta es una necesidad urgente ya que el cliente la necesita lo antes posible, y pasé horas tratando de encontrar una solución en Power BI que reproduzca Tableau.
https://drive.google.com/file/d/1EEpP1HkAQc5P0MkazTu7-J6raLocjEbl/view?usp=sharing
mfelix
En respuesta a Anónimo
Hola @Anónimo,
La pregunta aquí es sobre el período seleccionado en el Período actual y la granularidad.
Lo que hice para hacer cambios en sus dos medidas:
Previous Avg Price =
CALCULATE (
SUMX (
SUMMARIZE (
'Invoice Variance',
'Invoice Variance'[item],
"CurAvgPrice",
DIVIDE (
SUM ( 'Invoice Variance'[ext_price] ),
SUM ( 'Invoice Variance'[volume] ),
0
)
),
[CurAvgPrice]
),
FILTER (
ALL ( 'Invoice Variance'[inv_date] ),
'Invoice Variance'[inv_date]
<= MAX ( 'Current'[Date] ) - 365
&& 'Invoice Variance'[inv_date]
>= MIN ( 'Current'[Date] ) - 365
)
)
Current Avg Price =
CALCULATE (
SUMX (
SUMMARIZE (
'Invoice Variance',
'Invoice Variance'[item],
"CurAvgPrice",
DIVIDE (
SUM ( 'Invoice Variance'[ext_price] ),
SUM ( 'Invoice Variance'[volume] ),
0
)
),
[CurAvgPrice]
),
FILTER (
ALL ( 'Invoice Variance'[inv_date] ),
'Invoice Variance'[inv_date] <= MAX ( 'Current'[Date] )
&& 'Invoice Variance'[inv_date] >= MIN ( 'Current'[Date] )
)
)
Puede ver debajo de las líneas a las que hace referencia que están recogiendo los valores:
Todos los demás tienen un solo valor anterior o actual. Esto se ve afectado por una segmentación con las fechas actuales con fechas de 2021.
Lo que pasa es que como estabas usando la tabla de fechas completa cuando comparas la fecha actual 2020 con el año anterior 2019 no obtienes valores porque tus datos comienzan en 2020, por otro y para los valores actuales cuando buscas el actual valor en 2021 no está obteniendo valores porque sus datos son de 2020 … (no estoy seguro si lo dejé en claro)
Compruebe el archivo adjunto PBIX.
mfelix
Hola @Anónimo,
Por lo que puedo ver en su modelo, las dos tablas son exactamente iguales, la única diferencia son las últimas 3 columnas que calculó en dax.
Cree que puedes hacer los cálculos basados en una sola tabla que luego se filtra por las fechas de los parámetros que creaste.
Otra pregunta es sobre el período anterior, ¿también desea seleccionar ese período de la cortadora de datos, o son los 12 meses anteriores?
¿Además, no entiende la pregunta sobre las dos subcategorías en las que desea colocar a los clientes en categorías?
Anónimo
En respuesta a mfelix
Puedo replicar fácilmente el precio promedio total y la variación, pero el problema es que lo necesitan SOLO para los artículos en los que el cliente ordenó el mismo producto en los dos períodos de tiempo. Por ejemplo, este es un artículo hecho en enero.
Tengo los valores 4.04 y 3.84 pero el número real es solo para 1198 cuando aparece en la selección de fecha actual y la selección anterior que es actual -365
Usé los cálculos para obtener el número principal, pero no sé cómo obtener la coincidencia:
Anónimo
En respuesta a Anónimo
¿Cómo obtendría solo los valores donde coinciden la clave actual y la clave anterior? (por ejemplo, 1189-1)
mfelix
En respuesta a Anónimo
Hola @Anónimo,
Lo siento, pero todavía no entiendo cómo está filtrando la información, no puedo filtrar la información de la misma manera que la tiene y tengo muchas más líneas que usted en los cálculos.
Las fórmulas que presenta en la captura de pantalla son correctas según lo que puedo ver, por lo que lo que debe hacer es un cálculo por artículo y recoger los precios ACTUALES y PROMEDIO.
Debería ser algo similar a:
SUMX(VALUES(Table[Item], [Current] - [Average])
Esto le daría la diferencia entre los dos valores, esto es solo una suposición y puede necesitar algunos cambios ya que dije que no entiendo el contexto del filtro de su visualización.
Con respecto a la segunda parte, la sintaxis de COUNTROWS se realiza sobre una tabla, por lo que debe cambiar la forma en que tiene su fórmula:
MEASURE =
CALCULATE (
COUNTROWS ( FILTER ( 'Invoice Variance', [Current KEY] = [Previous KEY] ) )
)
Anónimo
En respuesta a mfelix
Hola miguel,
A continuación se muestra el enlace al nuevo archivo que utiliza la captura de pantalla anterior:
https://drive.google.com/file/d/1MCzeCEaGFjLriaQExEdD4TV_0RGH5J7d/view?usp=sharing
REALMENTE aprecio su ayuda con esto, ya que este informe ha estado en curso durante un año. Entonces tiene razón, creo que tengo los cálculos correctos para obtener el precio promedio actual, el volumen actual y el precio promedio anterior.
Mi problema es obtener el cálculo de la varianza que es
(Precio Promedio Actual – Precio Promedio Anterior) * Volumen Actual
— Pero solo para filas donde la clave de licencia es la misma. Entonces, en la tabla a continuación, solo necesito las filas donde coinciden las claves. azul contra rojo
Aquí hay un archivo de Excel con el resultado correcto en verde:
https://drive.google.com/file/d/1y4f0n2O4SLsKdMM-H5hi65gXT-0xKvAF/view?usp=sharing
No tienes idea de lo mucho que significa tu ayuda para mí en esta etapa. Estoy listo para no estar despierto toda la noche intentando cosas diferentes.
mfelix
En respuesta a Anónimo
Hola @Anónimo,
Esta es una pregunta sobre el contexto, si quita la fecha de su configuración y agrega la siguiente medida:
Variance = ([Current Avg Price] - [Previous Avg Price]) * [Current Volume]
Obtienes el resultado a continuación:
Si puede ver que el valor resaltado está de acuerdo con su archivo de Excel, la pregunta en este caso son los valores totales si desea que se calculen de la misma manera o tiene una SUMA de todos los valores anteriores.
Verifique el archivo PBIX adjunto y comuníquese conmigo para saber qué es correcto o incorrecto en el cálculo.
Anónimo
En respuesta a mfelix
El cálculo es correcto, pero necesito que se incluya la fecha porque están tratando de obtener un gráfico de barras con otras 4 variables (esa cosa de inicio y parada del cliente mencionada anteriormente). Entonces, en este ejemplo, mientras que 5.57 es correcto, las otras filas deberían ser 0 ya que no tenían un valor coincidente. Aquí es donde estaba tratando de usar Count Rows tal vez, pero no pude encontrar la manera de hacerlo correctamente:
mfelix
En respuesta a Anónimo
Hola @Anónimo,
La pregunta aquí es sobre el período seleccionado en el Período actual y la granularidad.
Lo que hice para hacer cambios en sus dos medidas:
Previous Avg Price =
CALCULATE (
SUMX (
SUMMARIZE (
'Invoice Variance',
'Invoice Variance'[item],
"CurAvgPrice",
DIVIDE (
SUM ( 'Invoice Variance'[ext_price] ),
SUM ( 'Invoice Variance'[volume] ),
0
)
),
[CurAvgPrice]
),
FILTER (
ALL ( 'Invoice Variance'[inv_date] ),
'Invoice Variance'[inv_date]
<= MAX ( 'Current'[Date] ) - 365
&& 'Invoice Variance'[inv_date]
>= MIN ( 'Current'[Date] ) - 365
)
)
Current Avg Price =
CALCULATE (
SUMX (
SUMMARIZE (
'Invoice Variance',
'Invoice Variance'[item],
"CurAvgPrice",
DIVIDE (
SUM ( 'Invoice Variance'[ext_price] ),
SUM ( 'Invoice Variance'[volume] ),
0
)
),
[CurAvgPrice]
),
FILTER (
ALL ( 'Invoice Variance'[inv_date] ),
'Invoice Variance'[inv_date] <= MAX ( 'Current'[Date] )
&& 'Invoice Variance'[inv_date] >= MIN ( 'Current'[Date] )
)
)
Puede ver debajo de las líneas a las que hace referencia que están recogiendo los valores:
Todos los demás tienen un solo valor anterior o actual. Esto se ve afectado por una segmentación con las fechas actuales con fechas de 2021.
Lo que pasa es que como estabas usando la tabla de fechas completa cuando comparas la fecha actual 2020 con el año anterior 2019 no obtienes valores porque tus datos comienzan en 2020, por otro y para los valores actuales cuando buscas el actual valor en 2021 no está obteniendo valores porque sus datos son de 2020 … (no estoy seguro si lo dejé en claro)
Compruebe el archivo adjunto PBIX.