Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
¡Hola!
Espero que puedas ayudarme a resolver este problema.
Tengo dos tablas: Contratos y Detalles del contrato.
Desafortunadamente, no todos los contratos tienen una línea en los detalles del contrato, pero también pueden tener varias líneas, por lo que la relación es 1 - 0..n.
Se establece de forma bidireccional en PowerBI.
Como lo necesitaba para otra visual, ya hay un campo existente en Contratos que muestra Verdadero/Falso si hay Detalles para este contrato o no (resuelto en SQL de antemano, no en PowerBI).
La imagen que necesito es una lista de todos los contratos que tengo, además de los detalles más recientes (si están disponibles).
La parte difícil es la combinación de "últimos detalles" y "si están disponibles".
Puedo resolver cada uno de ellos por separado, pero una vez que combino ambos enfoques, la tabla permanece en blanco cuando no hay detalles del contrato, ya que el filtro en el campo "IsMaxPeriod" de ContractDetails no solo es nulo, sino que incluso no existe para, por ejemplo, ContractID 456.
En mi opinión, esta mesa debería ser súper fácil, ya que es solo un
SELECT * FROM Contracts LEFT JOIN (SELECT * FROM ContractDetails WHERE IsMaxPeriod =1) [...]
pero a nivel visual, ya que necesito los otros períodos para otras imágenes.
Desafortunadamente, soy mejor con SQL y otras herramientas de BI que con Power BI, así que espero que alguien aquí tenga algunos consejos de PowerBI sobre cómo resolverlo para esta imagen 🙂 específica
Hola a todos
En primer lugar, @Surya9 gracias por su solución!
Y @CoTheiss según tengo entendido, quiero compartir otro método.
Si quieres ver toda la información, podemos volver a renovar la tabla en Power BI para hacer lo que necesites.
Esta columna calculada sirve para encontrar la última fecha de finalización de cada contrato.
LatestPeriodTo =
VAR LatestPeriod =CALCULATE(
MAX('ContractDetails'[PeriodTo]),
FILTER('ContractDetails','ContractDetails'[ContractID]='Contracts'[ContractID])
)
RETURN
IF('Contracts'[HasContractDetails],
LatestPeriod,
BLANK()
)
Utilice CALCULATETABLE y FILTER para encontrar los detalles más recientes de cada contrato.
Utilice MAXX para extraer las últimas fechas PeriodFrom y PeriodTo.
Establezca IsMaxPeriod en TRUE si el contrato tiene detalles, de lo contrario, null (BLANK()).
LatestContractDetails =
SELECTCOLUMNS(
ADDCOLUMNS(
Contracts,
"PeriodFrom",
VAR LatestDetails =
CALCULATETABLE(
FILTER(
ContractDetails,
ContractDetails[IsMaxPeriod] = TRUE &&
ContractDetails[ContractID] = RELATED(Contracts[ContractID])
)
)
RETURN
MAXX(LatestDetails, ContractDetails[PeriodFrom]),
"PeriodTo",
VAR LatestDetailsTo =
CALCULATETABLE(
FILTER(
ContractDetails,
ContractDetails[IsMaxPeriod] = TRUE &&
ContractDetails[ContractID] = RELATED(Contracts[ContractID])
)
)
RETURN
MAXX(LatestDetailsTo, ContractDetails[PeriodTo]),
"IsMaxPeriod",
IF(
Contracts[HasContractDetails],
TRUE,
BLANK()
)
),
"ContractID", Contracts[ContractID],
"ContractName", Contracts[ContractName],
"Responsible", Contracts[Responsible],
"PeriodFrom", [PeriodFrom],
"PeriodTo", [PeriodTo],
"IsMaxPeriod", [IsMaxPeriod]
)
Si tiene alguna otra pregunta, consulte los archivos adjuntos que agregué que pueden ayudarlo.
¡Espero que te ayude!
Saludos
Apoyo de la comunidad Team_ Tom Shen
Si esta publicación ayuda, considere aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Hola @CoTheiss
haga una relación de contrato a detalle de contrato de 1 a * una sola dirección y cree 3 medidas como había creado en la captura de pantalla a continuación.
Estoy obteniendo la salida del deseo.
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
Check out the November 2025 Power BI update to learn about new features.