Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Tengo tres tablas:
1. Maestro de artículos. Tengo los códigos de los artículos y el stock de seguridad, p. ej.
Artículo | Stock de seguridad |
A | 100 |
B | 200 |
C | 125 |
2. Inventario a nivel de almacén
Almacén | Producto | Inventario |
W1 | A | 75 |
W1 | B | 50 |
W1 | C | 100 |
W2 | A | 20 |
W2 | B | 100 |
W2 | C | 50 |
W3 | A | 10 |
W3 | B | 10 |
3. Última tabla que podría anular el stock de seguridad en la tabla Maestro de artículos.
Artículo | Almacén | Stock de seguridad |
A | W3 | 50 |
C | W3 | 300 |
B | W1 | 100 |
Si no filtro el almacén el resultado sería
Un producto es bueno cuando el inventario es superior a 100 (105)
B El producto es bajo porque el inventario es de 150 en comparación con 200
C El producto es bueno 150 vs 125
Si filtro por W3
A es baja porque 10 < 50
B no se muestra porque no hay stock de seguridad para W3
C es bajo porque hay 0 y necesitamos 300
Espero que todos los datos y la explicación hayan sido buenos y puedan ayudarme.
¡¡Gracias!!
Hola, @मार्टाइप1
Gracias por la respuesta de @Wilson_ , permítanme proporcionar otra idea:
En primer lugar, tengo un par de preguntas, tengo una discrepancia en mi comprensión de estos valores a continuación, por favor dame algunos consejos sobre estos valores. (Ahora me baso en los datos que me proporcionaste la primera vez).
En primer lugar, en el primer gráfico entiendo que los valores del grupo B se suman, por lo que en ese caso debería tener un valor de 160, pero lo que has proporcionado es 150.
El valor seguro de C en el segundo gráfico debe ser 300 para satisfacer la primera solicitud, pero proporcionó un valor de 100:
¿Puedo preguntar si hay algo malo en mi comprensión? Si es así, espero que puedas darme algún consejo.
Con respecto a la cuestión que planteaste, mi solución es la siguiente:
1.En función de los requisitos de la tabla que proporcionó, he creado las siguientes tres tablas, el nombre de la tabla "Item Master" y el nombre de la tabla "WAREHOUSE" como tablas estándar y el nombre de la tabla "Iventory at Warehouse Level" para los valores reales que proporcionó, las vistas de la tabla son las siguientes:
2.En base a su solicitud, creé cuatro medidas y mi función DAX es la siguiente:
True1 =
var _sum1=
SUMX(
FILTER(ALL('Iventory at Warehouse Level'),
'Iventory at Warehouse Level'[Product]=MAX('Iventory at Warehouse Level'[Product])),[Inventory])
var _sum2=
SUMX(
FILTER(ALL('Item Master'),
'Item Master'[items]=MAX('Iventory at Warehouse Level'[Product])),[safety stock])
var _select=SELECTEDVALUE('WAREHOUSE'[Warehouse])
var _column=SELECTCOLUMNS(FILTER(ALL('WAREHOUSE'),'WAREHOUSE'[Warehouse]=_select),"test",[items])
var _if=
IF(
MAX('Iventory at Warehouse Level'[Product]) in _column,
SUMX(
FILTER(ALL('Iventory at Warehouse Level'),'Iventory at Warehouse Level'[Product]=MAX('Iventory at Warehouse Level'[Product])&&
'Iventory at Warehouse Level'[Warehouse]=_select),[Inventory]),BLANK())
var _if2=
IF(
_if=BLANK()&&MAX('Iventory at Warehouse Level'[Product]) in _column,0,_if)
return
IF(
NOT(ISFILTERED('WAREHOUSE'[Warehouse])),
_sum1-_sum2,
_if2
)
True2 =
var _sum1=
SUMX(
FILTER(ALL('Iventory at Warehouse Level'),
'Iventory at Warehouse Level'[Product]=MAX('Iventory at Warehouse Level'[Product])),[Inventory])
var _sum2=
SUMX(
FILTER(ALL('Item Master'),
'Item Master'[items]=MAX('Iventory at Warehouse Level'[Product])),[safety stock])
var _select=SELECTEDVALUE('WAREHOUSE'[Warehouse])
var _column=SELECTCOLUMNS(FILTER(ALL('WAREHOUSE'),'WAREHOUSE'[Warehouse]=_select),"test",[items])
var _value=
SUMX(FILTER(ALL('WAREHOUSE'),
'WAREHOUSE'[items]=MAX('Iventory at Warehouse Level'[Product])&&'WAREHOUSE'[Warehouse]=_select),[Safety Stock])
return
IF(
NOT(ISFILTERED('WAREHOUSE'[Warehouse])),
_sum1-_sum2,
_value
)
Missing Inventory123 =
[True1]-[True2]
El objetivo principal de la marca de medida es mostrar una diferencia negativa incluso si no hay ninguna selección.
Flag =
IF(
NOT(ISFILTERED('WAREHOUSE'[Warehouse]))&&[True1]<0,1,
IF(
ISFILTERED('WAREHOUSE'[Warehouse])&&[Missing Inventory123]<0,1,0))
Aquí puede agregar su falg como medida al cuadro de opción Filtro.
3. Aquí está mi resultado final, que espero cumpla con sus requisitos.
Saludos
Leroy Lu
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por tu detallada respuesta, Leroy.
Probablemente debería haber comenzado con la relación de la tabla y la lógica de mis filtros.
T1 = Maestro de elementos
T2 = Inventario a nivel de almacén
T3 = Excepción por almacén-producto
La relación T1-T2 es de uno a varios por código de artículo
La relación T3-T2 es de uno a muchos por itemcode-warehouse
Mi lógica es primero mirar si hay una restricción en T3 y usar ese valor para el stock de seguridad, si no hay restricción (valor nulo) usar el stock de seguridad de T1.
Si mi comprensión es correcta, cuando uso AMBOS para la dirección del filtro cruzado es como tener una tabla que combina los dos, por lo tanto, si obtengo una clave de almacén de artículos en T2, debería obtener una especie de valor nulo para el stock de seguridad en T3 y luego debería buscar el valor del stock de seguridad en T1.
Espero que mi lógica tenga sentido para ti.
Ahora volvamos a sus preguntas.
Tienes razón, mi mala
"El valor seguro de C en el segundo gráfico debe ser 300 para satisfacer la primera solicitud, pero proporcionó un valor de 100:"
Hay una excepción a nivel de almacén.
Tengo que usar la excepción para esa clave de almacén de código de artículo, y tienes razón de nuevo, debería mostrar 300 en lugar de 100.
Con respecto a sus medidas, para True2, tengo problemas para reemplazar Safety Stock (supongo que pertenece a mi T1) ya que no consigo que mis tablas elijan el campo
'Item Master'[items]=MAX('Iventory at Warehouse Level'[Product])),[safety stock])
Lo mismo para, supongo que Safety Stock proviene de mi T3
'WAREHOUSE'[items]=MAX('Iventory at Warehouse Level'[Product])&&'WAREHOUSE'[Warehouse]=_select),[Safety Stock])
Gracias de antemano por su respuesta
El resultado
Sin filtro
Artículo | Inventario | Stock de seguridad | Inventario faltante |
B | 150 | 200 | -50 |
Filtrar por W3
Artículo | Almacén | Inventario | Stock de seguridad | Inventario faltante |
A | W3 | 10 | 50 | -40 |
C | W3 | 0 | 100 | -100 |
¡¡Gracias!!
Hola martipe1,
Gracias por proporcionar los datos en un formato fácil de copiar y pegar y una explicación de su lógica. Sin embargo, ¿qué resultados espera ver realmente?
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Ask questions in Eventhouse and KQL, Eventstream, and Reflex.
User | Count |
---|---|
3 | |
1 | |
1 | |
1 | |
1 |