The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Resumen:
Al trabajar con tres tablas relacionadas lógicamente en Power BI, pero donde no se pueden establecer relaciones físicas, y debemos confiar en la función TREATAS para calcular medidas, nos encontramos con un comportamiento específico:
Digamos que tenemos 3 tablas:
Descripciones de las tablas:
Relaciones lógicas (cadena de uno a varios):
Nota: No hay relaciones físicas; El modelo solo es lógicamente correcto.
Intentando calcular los ingresos de la tabla de detalles:
Total sales = CALCULATE( SUM(Detail[Revenue]), TREATAS(VALUES(QuoteInvoice[QuoteInvoiceId]), Detail[QuoteInvoiceId]), TREATAS(VALUES(Quote[QuoteId]), QuoteInvoice[QuoteId]) )
Problema: Este enfoque no funciona correctamente cuando se trazan campos de la tabla Cotización. A pesar de que se utilizan ambas funciones TREATAS, el contexto del filtro no se propaga como se esperaba.
Para garantizar el contexto adecuado, cree una medida de cobertura para la relación entre Quote y QuoteInvoice y utilícela para impulsar el cálculo final:
-- Base measure (Detail to QuoteInvoice) Total sales = CALCULATE( SUM(Detail[Revenue]), TREATAS(VALUES(QuoteInvoice[QuoteInvoiceId]), Detail[QuoteInvoiceId]) ) -- Final measure (Quote to QuoteInvoice, then to Detail) Total sales (final) = CALCULATE( [Total sales], TREATAS(VALUES(Quote[QuoteId]), QuoteInvoice[QuoteId]) )
¿Alguien puede explicar este comportamiento?
Hola @KRISHP1234 ,
Queríamos hacer un seguimiento amable para verificar si la solución proporcionada para el problema funcionó. o Háganos saber si necesita más ayuda.
Si nuestra respuesta fue atendida, márquela como Aceptar como solución y haga clic en Sí si le resultó útil.
Saludos
Chaithra.
Hola @KRISHP1234 ,
Queríamos hacer un seguimiento amable para verificar si la solución proporcionada para el problema funcionó. o Háganos saber si necesita más ayuda.
Si nuestra respuesta fue atendida, márquela como Aceptar como solución y haga clic en Sí si le resultó útil.
Saludos
Chaithra.
Hola @KRISHP1234 ,
Nos gustaría hacer un seguimiento para ver si la solución proporcionada por el superusuario resolvió su problema. Por favor, háganos saber si necesita más ayuda.
Si nuestra respuesta de superusuario resolvió su problema, márquela como "Aceptar como solución" y haga clic en "Sí" si le resultó útil.
Saludos
Chaithra E.
Las 2 funciones de TREATAS no se aplican secuencialmente, sino que se aplican al mismo tiempo. Lo que desea que suceda es obtener los valores del ID de factura de cotización utilizando el ID de cotización como filtro. No es necesario hacer esto en una medida separada, puede usar variables, p. ej.
Total sales =
VAR QuoteInvoices = CALCULATETABLE(
VALUES(QuoteInvoice[QuoteInvoiceId]),
TREATAS(VALUES(Quote[QuoteId]), QuoteInvoice[QuoteId])
)
VAR Result =
CALCULATE(
SUM(Detail[Revenue]),
TREATAS(QuoteInvoices, Detail[QuoteInvoiceId])
)
RETURN Result