Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Anonymous
Not applicable

Necesita ayuda de DAX con Inventario a mano

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

12 REPLIES 12
Bizualisation
Resolver I
Resolver I

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.

Anonymous
Not applicable

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?

Anonymous
Not applicable

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

Inventario a mano ?
CALCULAR (
COUNT ( 'FactInventory'[EquipmentID] ),
FactInventory[CreateDate] < FECHA ( 2019, 6, 1 ),
'Estado'[Estado] <> "Eliminado"
)
Como puede ver, la medida no está contando filas correctamente
Capture.PNG

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"
)

Anonymous
Not applicable

Todavía no hay suerte con él. Parece dar resultados similares a la primera calca

Capture.PNG

@ScottC

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"))

Datemtd.JPG

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.

Anonymous
Not applicable

¿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.

Anonymous
Not applicable

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.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.