migueljackpbi
Hola,
Tengo una tabla de hechos y un producto dim con una jerarquía de 3 niveles: Categoría de producto –> Línea de producto –> Producto
Nuestro equipo de planificación publicará un objetivo mensual para cada producto, es decir
Código de producto | Producto | Objetivo | mes | año |
1 | A | 234 | 1 | 2016 |
1 | A | 238 | 2 | 2016 |
1 | A | 242 | 3 | 2016 |
1 | A | 254 | 4 | 2016 |
1 | A | 289 | 5 | 2016 |
2 | B | 1022 | 1 | 2016 |
2 | B | 1048 | 2 | 2016 |
2 | B | 1122 | 3 | 2016 |
2 | B | 1248 | 4 | 2016 |
2 | B | 1342 | 5 | 2016 |
Entonces, ahora necesito crear algunos informes que muestren una comparación entre el objetivo real y el objetivo diario. Traté de importar el objetivo mensual de cada producto para todos los días: por ejemplo, el producto A: inserté una nueva columna de fecha:
Código de producto | Producto | Objetivo | mes | año | fecha |
1 | A | 234 | 1 | 2016 | 1/1/2016 |
1 | A | 234 | 1 | 2016 | 2/1/2016 |
1 | A | 234 | 1 | 2016 | 3/1/2016 |
1 | A | 234 | 1 | 2016 | 4/1/2016 |
1 | A | 234 | 1 | 2016 | 05/01/2016 |
1 | A | 234 | 1 | 2016 | 06/01/2016 |
1 | A | 234 | 1 | 2016 | 7/1/2016 |
1 | A | 234 | 1 | 2016 | 1/8/2016 |
1 | A | 234 | 1 | 2016 | 1/9/2016 |
1 | A | 234 | 1 | 2016 | 10/01/2016 |
1 | A | 234 | 1 | 2016 | 11/01/2016 |
1 | A | 234 | 1 | 2016 | 12/01/2016 |
1 | A | 234 | 1 | 2016 | 13/01/2016 |
1 | A | 234 | 1 | 2016 | 14/01/2016 |
1 | A | 234 | 1 | 2016 | 15/01/2016 |
1 | A | 234 | 1 | 2016 | 16/01/2016 |
1 | A | 234 | 1 | 2016 | 17/01/2016 |
1 | A | 234 | 1 | 2016 | 18/01/2016 |
1 | A | 234 | 1 | 2016 | 19/01/2016 |
1 | A | 234 | 1 | 2016 | 20/01/2016 |
1 | A | 234 | 1 | 2016 | 21/01/2016 |
1 | A | 234 | 1 | 2016 | 22/01/2016 |
1 | A | 234 | 1 | 2016 | 23/01/2016 |
1 | A | 234 | 1 | 2016 | 24/01/2016 |
1 | A | 234 | 1 | 2016 | 25/01/2016 |
1 | A | 234 | 1 | 2016 | 26/01/2016 |
1 | A | 234 | 1 | 2016 | 27/01/2016 |
1 | A | 234 | 1 | 2016 | 28/01/2016 |
1 | A | 234 | 1 | 2016 | 29/01/2016 |
1 | A | 234 | 1 | 2016 | 30/01/2016 |
1 | A | 234 | 1 | 2016 | 31/01/2016 |
y utilice la función MAX en DAX: Acctualvs.Target = SUM(Quantity)/Avg(Target). Sin embargo, cuando muestro solo el Producto en el informe, el resultado fue correcto, pero cuando muestro la jerarquía del Producto con ProductCategory||ProductLine|| Producto en el informe, el resultado fue incorrecto porque la función promedio no era la suma total del objetivo del producto para cada línea de productos y la suma total del objetivo de la línea de productos para la categoría del producto.
Por favor, dame algún consejo para resolver este problema, ¡es muy importante en todo mi informe! real diario versus objetivo mensual.
Gracias y Saludos cordiales,
j
tringuyenminh92
En respuesta a migueljackpbi
Hola @MichaelJackpbi,
Permítanme refinar el hecho/tenue que estamos teniendo:
- Trans de ventas (fecha, código de producto, monto de ventas)
- Productos (Producto, ProductCode, ProductLine, …)
- Fechas (Fecha) (Será creado por Nueva tabla: Fechas = CALENDARAUTO() )
- Planificación mensual (mes, año, código de producto, objetivo)
- Para la planificación diaria, sugiero que usemos la función Power Query para crear esta tabla a partir de la tabla de planificación mensual en lugar de ingresarla manualmente como lo está haciendo.
Mis datos simulados en excel:
Primero, calcularé el objetivo para cada transacción (objetivo diario)
En el Editor de consultas -> Nueva consulta -> Consulta en blanco
Defina el método GetTarget para buscar en la tabla de planificación mensual por código de producto y mes y devuelva el valor objetivo como resultado:
(productCode,transactionDate) => let Source = #"Monthly Planning", #"Filtered Rows" = Table.First(Table.SelectRows(Source, each ([ProductCode] = productCode and [Month] = Date.Month(transactionDate) and [Year] = Date.Year(transactionDate) )) ), #"Target" = Record.Field(#"Filtered Rows","Target") in #"Target"
En el Editor de consultas, elija Trans. de ventas, pestaña Agregar columna, elija Invocar función personalizada para agregar una nueva columna mediante la función anterior.
Ahora tenemos la columna Sales Trans with Target. Pero hay un problema con el método Sum de Target para Product Line o Product Category que tiene múltiples transacciones en la misma fecha. Esta razón hará que el valor de Target sea incorrecto cuando elija un nivel de producto más alto en los filtros.
Así que resumo la tabla de transacciones de ventas por fecha y código de producto para garantizar que solo haya una transacción de línea para cada fecha.
Sales = SUMMARIZE('Sales Trans','Sales Trans'[Date],'Sales Trans'[ProductCode],"Amount",sum('Sales Trans'[Sales Amount]),"Target",AVERAGE('Sales Trans'[GetTarget]) )
Haciendo relaciones para la tabla Ventas:
Creo que deberíamos agregar el valor acumulativo al informe actual, así que creo la Medida calculada:
Cummulative = CALCULATE(sum('Sales'[Amount]),filter(ALL('Dates'),'Dates'[Date]<= MAX('Dates'[Date]) ))
Eso es todo, ahora puede verificar seleccionando la línea de productos o seleccionando todos los productos, mostrará el objetivo que era el objetivo total de productos.
Ejemplo de archivo pbix y datos:
- Archivo Pbix: https://www.dropbox.com/s/wk3zgxfg1fuv10f/Sample_SalesPlanning.pbix?dl=0
- datos: https://www.dropbox.com/s/rhq766r6pz8w4xz/SampleData_SalesTrans.xlsx?dl=0
- Para mostrar la jerarquía, uso una imagen personalizada: https://app.powerbi.com/visuals/show/HierarchySlicer1458836712039
Si esto funciona para usted, acéptelo como solución y también dé KUDOS.
tringuyenminh92
¿Tienes un archivo de muestra allí? para poder entender correctamente su situación.
migueljackpbi
En respuesta a tringuyenminh92
¡Es solo mi idea crear nuevos informes que sirvieron para alguien que solo está planeando depr! tenemos un sistema ERP que contiene registros de ventas diarios y necesitamos comparar el mensual objetivo con las ventas reales para conocer el porcentaje entre ellos o mostrar el crecimiento. ¡Nuestro problema fue el objetivo publicado mensualmente y el sistema de transacciones exporta datos diariamente!
Si usó otras herramientas de BI, puedo completar el valor promedio para cada día del mes dependiendo del valor mensual.
¿Podría tener algún consejo/solución para aplicar en power bi correctamente?
Saludos,
j
tringuyenminh92
En respuesta a migueljackpbi
Hola @MichaelJackpbi,
Permítanme refinar el hecho/tenue que estamos teniendo:
- Trans de ventas (fecha, código de producto, monto de ventas)
- Productos (Producto, ProductCode, ProductLine, …)
- Fechas (Fecha) (Será creado por Nueva tabla: Fechas = CALENDARAUTO() )
- Planificación mensual (mes, año, código de producto, objetivo)
- Para la planificación diaria, sugiero que usemos la función Power Query para crear esta tabla a partir de la tabla de planificación mensual en lugar de ingresarla manualmente como lo está haciendo.
Mis datos simulados en excel:
Primero, calcularé el objetivo para cada transacción (objetivo diario)
En el Editor de consultas -> Nueva consulta -> Consulta en blanco
Defina el método GetTarget para buscar en la tabla de planificación mensual por código de producto y mes y devuelva el valor objetivo como resultado:
(productCode,transactionDate) => let Source = #"Monthly Planning", #"Filtered Rows" = Table.First(Table.SelectRows(Source, each ([ProductCode] = productCode and [Month] = Date.Month(transactionDate) and [Year] = Date.Year(transactionDate) )) ), #"Target" = Record.Field(#"Filtered Rows","Target") in #"Target"
En el Editor de consultas, elija Trans. de ventas, pestaña Agregar columna, elija Invocar función personalizada para agregar una nueva columna mediante la función anterior.
Ahora tenemos la columna Sales Trans with Target. Pero hay un problema con el método Sum de Target para Product Line o Product Category que tiene múltiples transacciones en la misma fecha. Esta razón hará que el valor de Target sea incorrecto cuando elija un nivel de producto más alto en los filtros.
Así que resumo la tabla de transacciones de ventas por fecha y código de producto para garantizar que solo haya una transacción de línea para cada fecha.
Sales = SUMMARIZE('Sales Trans','Sales Trans'[Date],'Sales Trans'[ProductCode],"Amount",sum('Sales Trans'[Sales Amount]),"Target",AVERAGE('Sales Trans'[GetTarget]) )
Haciendo relaciones para la tabla Ventas:
Creo que deberíamos agregar el valor acumulativo al informe actual, así que creo la Medida calculada:
Cummulative = CALCULATE(sum('Sales'[Amount]),filter(ALL('Dates'),'Dates'[Date]<= MAX('Dates'[Date]) ))
Eso es todo, ahora puede verificar seleccionando la línea de productos o seleccionando todos los productos, mostrará el objetivo que era el objetivo total de productos.
Ejemplo de archivo pbix y datos:
- Archivo Pbix: https://www.dropbox.com/s/wk3zgxfg1fuv10f/Sample_SalesPlanning.pbix?dl=0
- datos: https://www.dropbox.com/s/rhq766r6pz8w4xz/SampleData_SalesTrans.xlsx?dl=0
- Para mostrar la jerarquía, uso una imagen personalizada: https://app.powerbi.com/visuals/show/HierarchySlicer1458836712039
Si esto funciona para usted, acéptelo como solución y también dé KUDOS.
paulfink
En respuesta a tringuyenminh92
Hola @tringuyenminh92
Acabo de encontrar esta publicación y vi tu respuesta y creo que podrías ayudarme con mi problema, es lo mismo que esta publicación pero necesito objetivos semanales.
Aquí está el enlace a mi pregunta:
https://community.powerbi.com/t5/Desktop/Power-Bi-DAX-Setting-a-Target-for-each-Week-of-Month/td-p/9…
migueljackpbi
En respuesta a tringuyenminh92
@ tringuyenminh92 gracias por tu ayuda! pero todavía no entiendo tu consejo totalmente. ¿Por qué tuviste que crear una consulta en blanco? y veo el cálculo como un formulario MTD.
Lo siento por malentendido
Saludos,
j
tringuyenminh92
En respuesta a migueljackpbi
Hola @MichaelJackpbi,
Porque solo configuramos el objetivo mensual, así que tengo que crear un método (consulta en blanco) para hacer referencia a la configuración del objetivo mensual y obtener ese valor objetivo para cada día del mes. si hacemos eso, no necesitamos configurar manualmente el objetivo diario como su segunda tabla.
ovetteabejuela
En respuesta a tringuyenminh92
Esto es interesante, ¿todavía tienes los archivos compartidos @tringuyenminh92?
tringuyenminh92
En respuesta a ovetteabejuela
Hola @ovetteabejuela,
Como comprobé, los archivos aún están disponibles: archivo y datos pbix de muestra:
- Archivo Pbix: https://www.dropbox.com/s/wk3zgxfg1fuv10f/Sample_SalesPlanning.pbix?dl=0
- datos: https://www.dropbox.com/s/rhq766r6pz8w4xz/SampleData_SalesTrans.xlsx?dl=0
- Para mostrar la jerarquía, uso una imagen personalizada: https://app.powerbi.com/visuals/show/HierarchySlicer1458836712039
ovetteabejuela
En respuesta a tringuyenminh92
@tringuyenminh92 gracias, acabo de darme cuenta de que DropBox está bloqueado en la oficina, pero ahora los tengo… Gracias.