Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola
Soy bastante nuevo en DAX y he estado luchando durante bastante tiempo con este desafío. Tengo un caso en el que necesitamos calcular nuestro bono anual de nuestros proveedores en función de nuestras compras totales de cada proveedor durante el año en curso. Este es el escenario:
Tengo tres tablas: DimVendor, SupplierAgreements y FactPurchases y se ven así.
DimVendor
D_VEN_ID | VendorName | ProveedorNo | ResponsableComprador |
1 | EjemploProveedor1 | 12349887 | ALYO |
2 | EjemploProveedor2 | 90817974 | EN |
... |
FactPurchase
D_VEN_ID | DocumentoNo | Fecha de publicación | Importe |
1 | IF1032948 | 2023-04-20 | 54612 |
1 | IF9871288 | 2023-05-30 | 641 |
2 | IF1923987 | 2023-06-20 | 15220 |
.... |
Acuerdos con proveedores
Nombre del proveedor | Blanco | TargetPeriodStartDate | TargetPeriodEndDate | Sobresueldo |
EjemploProveedor1 | 20000 | 2023-01-01 | 2023-12-31 | 2% |
EjemploProveedor1 | 50000 | 2023-01-01 | 2023-12-31 | 5% |
EjemploProveedor2 | 20000 | 2023-01-01 | 2023-12-31 | 5% |
EjemploProveedor2 | 50000 | 2023-01-01 | 2023-12-31 | 10% |
... |
Por supuesto, hay más de lo que se muestra aquí, pero tal vez esto ilustra el ejemplo. Quiero que la medida resultante calcule el Bono que debemos esperar de nuestro proveedor. Entonces, en este ejemplo, la medida debe comparar la SUMA de la cantidad en FactPurchase para 2023 con la columna Objetivo en SupplierAgreements. La suma aquí es 55 253, que es mayor que el objetivo 50000 y, por lo tanto, la bonificación resultante debería ser 55 253 * 5 % para ExampleSupplier1. Por ejemploSuppler2 no se alcanza el nivel objetivo más bajo y deberíamos esperar 0 en Bonus.
La pregunta de bonificación es obtener otra medida que calcule la cantidad necesaria para alcanzar el siguiente nivel de bonificación. Entonces, en este ejemplo, esa medida se evaluaría como "BLANK" para ExampleSupplier1 y 4780 para ExampleSupplier2.
Estoy muy agradecido por cualquier idea al respecto y espero haber explicado el problema con cierta claridad 🙂.
Le sugiero que inactive las relaciones entre DimDate y SupplierAgreements.
Medir:
Measure =
VAR _ADD =
SUMMARIZE (
FactPurchase,
FactPurchase[D_VEN_ID],
"Sum", SUM ( FactPurchase[Amount] ),
"Bonus",
VAR _TARGET =
CALCULATE (
MAX ( SupplierAgreements[Target] ),
FILTER (
SupplierAgreements,
SupplierAgreements[Target] <= SUM ( FactPurchase[Amount] )
)
)
VAR _BONUS =
CALCULATE (
SUM ( SupplierAgreements[Bonus] ),
FILTER ( SupplierAgreements, SupplierAgreements[Target] = _TARGET )
)
RETURN
_BONUS
)
RETURN
SUMX ( _ADD, [Sum] * [Bonus] + 0 )
El resultado es el siguiente.
Saludos
Rico Zhou
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.