Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Realmente necesito un poco de ayuda con un cálculo DAX donde puedo ver cuántas piezas de inventario tengo en un nivel diario o mensual. En mi modelo de datos tengo una tabla FactInventory que tiene EquipmentID, CreateDate, StatusDate y Status (que tiene "Active", "Removed" y un par de otros estados sin importancia), así como algunos otros atributos. También tengo una tabla Date personalizada que tiene una relación con CreateDate en la tabla Fact.
Lo que me gustaría hacer es crear una medida llamada Inventario a mano que me mostraría, digamos, el 1 de junio de 2019 como ejemplo, cuántas piezas de inventario tengo en esa fecha (donde la fecha de creación es anterior al 1 de junio de 2019 y el estado no ha cambiado a "Eliminado" antes de esa fecha. El inventario de cada día a mano debe acumularse hasta el nivel de mes también (que es el nivel en el que realmente quiero informar) para mostrar para el mes de junio (y los otros meses) cuántas piezas de inventario tengo a mano.
InventoryCount á COUNT('FactInventory'[EquipmentID]) me da un recuento de inventario para cada día, pero eso no está teniendo en cuenta todo el inventario todavía activo de días anteriores que no se ha eliminado.
Cualquier ayuda sería apreciada
Scott
Algunos datos de ejemplo serían útiles, pero la función CALCULATE le permitiría hacerlo.
Pruebe algo en la línea de;
CALCULATE(COUNT('FactInventory'[EquipmentID]), [CreateDate] < whatever date you want, [Status] <> "Removed"))
Si publica algunos datos de ejemplo puedo adaptar esto un poco mejor a su caso de uso.
Aquí está un ejemplo de enlace de archivo PBIX Otra vez necesito una medida que para CUALQUIER fecha dada muestre cuánto inventario está disponible para esa fecha determinando si CreateDate es menor que esa fecha y si no fue "Eliminado" antes de esa fecha
OK cool, por lo que parece que sólo desea ser capaz de cambiar la fecha a la que se compara CreateDate. Podríamos usar parámetros para crear un campo de fecha flexible, que no interactuará con / estropeará su modelo de datos actual.
Crear tres parámetros (Modelado > Nuevo parámetro) uno llamado día con los valores 1-31 con un incremento de 1, uno llamado mes, valores 1-12 y un año llamado, tal vez 2000-3000.
A continuación, cree una medida que genere su fecha;
Dynamic Date = Date = DATE(Parameter[Day],'Parameter 2'[Month],'Parameter 3'[Year])
A continuación, ajuste la primera pieza de código que le di para usar eso;
Inventory on Hand = CALCULATE(COUNT('FactInventory'[EquipmentID]), [CreateDate] < [Dynamic Date], [Status] <> "Removed"))
Ahora puedes usar esa medida donde quieras. Si configura tres controles de parámetros, puede introducir dinámicamente la fecha con la que desea comparar. ¿Espero que eso ayude?
Gracias. Intenté usar algo como esto con una muestra de fecha del 1 de junio de 2019. En mi tabla de hechos reales hay alrededor de 10-20k de equipos de identificación con crear fechas antes de esa fecha. Una vez más Jun 1 es sólo un ejemplo - debe ser similar con cualquier fecha
OK, ¡tengo menos claro lo que estás pidiendo!
La última medida que te di calcularía el inventario disponible para cualquier fecha que elijas. Pero de su mesa estoy pensando que lo que realmente está pidiendo es una medida que calcularía el inventario que tenía a mano, para cada fecha en sus datos? ¿Es eso cierto?
Editar: He publicado esto cuando publicó su respuesta - Creo que esto debe ser lo que necesita;
Si eso es lo que busca, podría usar un total en ejecución que excluya todos los elementos "eliminados". Algo así como:
Inventory on hand by day =
CALCULATE(
COUNTA('FactSampleInventory'[EquipmentID]),
FILTER(
ALLSELECTED(FactSampleInventory[CreateDate]),
ISONORAFTER(FactSampleInventory[CreateDate],
MAX(FactSampleInventory[CreateDate]), DESC)
),
FactSampleInventory[Status] <> "Removed"
)
Todavía no hay suerte con él. Parece dar resultados similares a la primera calca
Pruebe esto, si no es correcto, podría indicar el resultado esperado en la muestra pbix.
Inventory on Hand =
CALCULATE (
COUNTROWS( 'Table' ),ALL('Table'),DATESMTD('Table'[CreateDate]),FILTER(ALL('Table'),
'Table'[Status] <> "Removed"))
Equipo de Apoyo Comunitario Paul Zheng _
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
¿Algún consejo al respecto?
@ScottC - ¿qué resultados espera? Tal vez podrías maquetear una mesa con tu resultado esperado, ya que estoy un poco inseguro de lo que buscas.
Sí, eso es correcto. Supongamos una tabla de hechos con miles de filas con un EquipmentID, una fecha en la que se creó (es decir, CreateDate), un StatusDate para cuando cambia el estado y una descripción de estado (es decir, Active, Removed). Así que si elegimos una fecha del 1 de junio de 2019 y buscamos en la tabla de hechos deberíamos ver varias filas para diferentes ideos de equipo con un CreateDate de 1 de junio de 2019, lo que significa que se colocaron en el inventario en esa fecha. Pero ¿qué pasa con los miles de identificaciones de equipo que se colocaron en el inventario en días anteriores. Todavía están en inventario. Por ejemplo, un equipo con un CreateDate de Mar 14, 2018 sin cambio de estado todavía está en inventario el 1 de junio de 2019. Me gustaría contar TODAS las piezas de equipo en inventario para cada día. Esperemos que esto tenga sentido.
Puede comprobar el siguiente archivo:
SampleInventory.zip
Tengo la sensación de que tienes un total de carreras sin fin. Siempre agregas, pero nunca eliminas registros en tu histórico.
Creo que necesita una columna con +1 y -1 y luego puede calcular correcto con el tiempo cuál es el valor.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |