Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Hola a todos,
Estoy buscando sugerencias sobre cómo rellenar valores en blanco con el valor de la última fecha disponible mediante una medida en Power BI. A continuación se muestra una muestra de mis datos:
Fecha Mes Store_ID Product_Code Ventas
01-01-2024 | 1 | A | 101 | 100 |
01-02-2024 | 2 | A | 101 | |
01-03-2024 | 3 | A | 101 | 400 |
01-01-2024 | 1 | B | 102 | 300 |
01-02-2024 | 2 | B | 102 | |
01-03-2024 | 3 | B | 102 | 500 |
Comportamiento esperado:
Para febrero de 2024, Tienda A, Producto 101, si el valor de ventas está en blanco, debe tomar el valor de ventas de enero de 2024 (100).
Para marzo de 2024, Tienda B, Producto 102, si el valor de ventas está en blanco, debe tomar el valor de ventas de febrero de 2024 (500).
Nota:
La tabla anterior es solo una referencia. En realidad, no tenemos filas durante meses con ventas en blanco en la tabla de hechos. En su lugar, nos basamos en una tabla de Dim_Calendar separada para todas las fechas.
La tabla de hechos tiene el siguiente aspecto:
01-01-2024 | 1 | Un | 101 | 100 |
01-03-2024 | 3 | Un | 101 | 400 |
01-01-2024 | 1 | B | 102 | 300 |
01-03-2024 | 3 | B | 102 | 500 |
Esta medida funciona bien para rellenar los valores en blanco, pero me enfrento a un problema con los totales de las columnas : no suman correctamente los valores rellenados hacia adelante.
¿Alguien podría ayudarme a modificar esta medida para que los totales de las columnas reflejen correctamente los datos rellenados?
¡Gracias de antemano!
Saludos
Vannur Vali
Hola @v-kpoloju-msft, @antfr99 , @Ashish_Excel, @pankajnamekar25,
¡Espero que estés bien!
Gracias por su pronta respuesta y continuo apoyo.
Saludos
D. Vannur Vali
Hola @DVannurVali,
Discúlpate por la demora en la respuesta. Después de revisar minuciosamente los detalles que proporcionó, volví a reproducir el escenario y funcionó de mi parte. Lo utilicé como datos de muestra y lo implementé con éxito.
resultado:
También incluyo el archivo .pbix para su mejor comprensión, por favor échele un vistazo:
Si esta publicación ayuda, entonces por favor danos 'Felicitaciones' y considera Acéptalo como una solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por usar el Foro de la comunidad de Microsoft.
Hola @DVannurVali,
¿Puedo preguntarle si ha resuelto este problema? Si es así, marque la respuesta útil y acéptela como la solución. Esto será útil para que otros miembros de la comunidad que tengan problemas similares lo resuelvan más rápido.
Gracias.
Hola
Esto funciona bien
S = SUM(Data[Sales])
Last sale = CALCULATE([S],CALCULATETABLE(LASTNONBLANK('Calendar'[Date],CALCULATE([S])),DATESBETWEEN('Calendar'[Date],MINX(ALL('Calendar'),'Calendar'[Date]),MAX('Calendar'[Date]))))
Hola @VannurVali,
Gracias por ponerse en contacto con el foro de la comunidad de Microsoft Fabric. Gracias @Ant_Fri, @pankajnamekar25, por sus aportes sobre este tema.
Después de revisar minuciosamente los detalles que proporcionó, pude reproducir el escenario y funcionó de mi parte. Lo he utilizado como datos de muestra por mi parte y lo he implementado con éxito.
resultado:
También incluyo el archivo .pbix para su mejor comprensión, por favor échele un vistazo:
Si esta publicación ayuda, entonces por favor danos 'Felicitaciones' y considera Acéptalo como una solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por usar el Foro de la comunidad de Microsoft.
Hola @VannurVali,
¿Puedo preguntarle si ha resuelto este problema? Si es así, marque la respuesta útil y acéptela como la solución. Esto será útil para que otros miembros de la comunidad que tengan problemas similares lo resuelvan más rápido.
Gracias.
Hola @VannurVali,
Quería comprobar si ha tenido la oportunidad de revisar la información proporcionada. No dude en ponerse en contacto con nosotros si tiene más preguntas. Si mi respuesta ha abordado su consulta, acéptela como una solución y dé un 'Felicitaciones' para que otros miembros puedan encontrarla fácilmente.
Gracias.
Hola @VannurVali,
Después de revisar minuciosamente los detalles que proporcionó, volví a reproducir el escenario y funcionó de mi parte. Lo utilicé como datos de muestra y lo implementé con éxito.
resultado:
También incluyo el archivo .pbix para su mejor comprensión, por favor échele un vistazo:
Si esta publicación ayuda, entonces por favor danos 'Felicitaciones' y considera Acéptalo como una solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por usar el Foro de la comunidad de Microsoft.
Hola @VannurVali,
¿Puedo preguntarle si ha resuelto este problema? Si es así, marque la respuesta útil y acéptela como la solución. Esto será útil para que otros miembros de la comunidad que tengan problemas similares lo resuelvan más rápido.
Gracias.
Hola @VannurVali,
Quería comprobar si ha tenido la oportunidad de revisar la información proporcionada. No dude en ponerse en contacto con nosotros si tiene más preguntas. Si mi respuesta ha abordado su consulta, acéptela como una solución y dé un 'Felicitaciones' para que otros miembros puedan encontrarla fácilmente.
Gracias.
Hola @VannurVali,
Espero que esta información sea útil. Por favor, hágamelo saber si tiene más preguntas o si desea discutir esto más a fondo. Si esto responde a su pregunta, acéptelo como una solución y dele un 'Felicitaciones' para que otros puedan encontrarlo fácilmente.
Gracias.
Hola @VannurVali,
Gracias por ponerse en contacto con el foro de la comunidad de Microsoft Fabric.
Después de revisar minuciosamente los detalles que proporcionó, volví a reproducir el escenario y funcionó de mi parte. Lo utilicé como datos de muestra y lo implementé con éxito.
resultado:
También incluyo el archivo .pbix para su mejor comprensión, por favor échele un vistazo:
Si esta publicación ayuda, entonces por favor danos 'Felicitaciones' y considera Acéptalo como una solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por usar el Foro de la comunidad de Microsoft.
Hola @VannurVali
Sugiero la siguiente medida que funciona con una tabla de hechos y una tabla Dim_Calendar (relación activa en la fecha):
Sales fill Total =
VAR fillTable =
ADDCOLUMNS(
SUMMARIZE(
FactTable,
FactTable[Store_ID],
FactTable[Product_Code],
'Dim_Calendar'[Date]
),
"fillValue",
VAR CurrentDate = [Date]
VAR CurrentStore = [Store_ID]
VAR CurrentProduct = [Product_Code]
RETURN
CALCULATE(
MAX(FactTable[Sales]),
FILTER(
ALL('Dim_Calendar'),
'Dim_Calendar'[Date] <= CurrentDate
),
FactTable[Store_ID] = CurrentStore,
FactTable[Product_Code] = CurrentProduct
)
)
RETURN
SUMX(fillTable, [fillValue])
Los resultados con la columna total que se muestra son los siguientes:
En la vista de matriz, tendría esto, que creo que es similar a su resumen de escenario:
Arriba creado con la ayuda de la IA.
Espero que esto ayude
Antonio
Hola @VannurVali
Ok, bien notado. Solo para explicar el propósito del código:
VAR fillTable =
Above crea una tabla temporal que almacena todas las combinaciones de tienda, producto y fecha, junto con el valor de ventas "completado" para cada uno.
SUMMARIZE(
FactTable,
FactTable[Store_ID],
FactTable[Product_Code],
'Dim_Calendar'[Date]
)
Arriba se crea una tabla de todas las combinaciones únicas de Tienda, Producto y Fecha. Esto define la granularidad con la que queremos calcular las ventas completadas. Cada fila representa una tienda, un producto y una fecha específicos.
Mi suposición es que querría series temporales por tienda/producto, no en todas las tiendas/productos.
Si solo resumiera por fecha (por ejemplo) y no según el grupo anterior, posiblemente devolvería resultados incorrectos (posiblemente extrayendo las últimas ventas conocidas de una tienda o producto completamente no relacionado).
"fillValue",
VAR CurrentDate = [Date]
VAR CurrentStore = [Store_ID]
VAR CurrentProduct = [Product_Code]
RETURN
Arriba dice: "En esta fecha, para esta tienda/producto, ¿cuál es el valor de venta más reciente?" y trabaja en estrecha colaboración con abajo.
CALCULATE(
MAX(FactTable[Sales]),
FILTER(
ALL('Dim_Calendar'),
'Dim_Calendar'[Date] <= CurrentDate
),
FactTable[Store_ID] = CurrentStore,
FactTable[Product_Code] = CurrentProduct
)
Encima:
-Cambia el contexto para encontrar el valor de ventas más reciente hasta la fecha actual.
-Ignora cualquier filtro en la tabla del calendario (ALL('Dim_Calendar')) para obtener todas las fechas anteriores.
-Filtros FactTable para la tienda y el producto actual.
-Devuelve el valor máximo de ventas hasta ese punto, es decir, el último valor conocido
RETURN
SUMX(fillTable, [fillValue])
Encima:
-Recorre en iteración todas las filas de fillTable.
-Suma todos los valores de ventas completados.
Esperemos que la explicación anterior aclare la lógica. ¿Puede decirnos por qué el código no funciona? ¿La lógica es incorrecta o hay un mensaje de error en el código?
A continuación se muestra un enlace de la carpeta con los archivos, no dude en revisar.
Carpeta con archivos de muestra
Antonio
Hola @VannurVali
pruebe este código DAX
Recuento de acciones de visualización de prueba (con corrección total) =
VAR SelectedDate = MAX('Dim_Calendar'[Date])
DONDE LastNonBlankSales =
CALCULAR(
[_test Recuento de acciones de visualización base],
CALCULATETABLE(
LASTNONBLANK('Dim_Calendar'[Fecha], CALCULATE([_test Recuento de acciones de visualización base])),
DATESBETWEEN(
'Dim_Calendar'[Fecha],
MINX(ALL('Dim_Calendar'), 'Dim_Calendar'[Fecha]),
SelectedDate
)
)
)
DEVOLUCIÓN
SI(
ISINSCOPE('Dim_Calendar'[Fecha]),
SI(
ISBLANK([_test Recuento de acciones de visualización base]),
LastNonBlankSales,
[_test Recuento de acciones de visualización base]
),
CALCULAR(
[_test mostrar el recuento de acciones],
REMOVEFILTERS('Dim_Calendar')
)
)
Gracias
Pankaj Namekar | LinkedIn (en inglés)
Si esta solución ayuda, por favor acéptala y da un aplauso (Me gusta), sería muy apreciado.