You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX中RELATED()函数报错:Power BI英超赛事最大比分查询问题

问题分析与解决方案

报错原因

你定义的HomeTeam和AwayTeam变量是在度量的全局上下文里计算的,而非CONCATENATEX迭代BiggestGDRow的行上下文当中。RELATED函数需要当前行上下文存在与目标表的关联上下文,但外层全局上下文没有Matches的行上下文支撑,自然无法识别Clubs与当前上下文的关系,导致报错。

修正方案

使用LOOKUPVALUE函数替代RELATED,它无需依赖行上下文的关系,可直接通过ID匹配获取球队名称。以下是两种可行的修正代码:

方案一:在迭代过程中直接计算球队名称

HighestWin = 
VAR BiggestGD = MAXX(Matches, ABS(Matches[home_team_goals] - Matches[away_team_goals]))
VAR BiggestGDRow = FILTER(Matches, ABS(Matches[home_team_goals] - Matches[away_team_goals]) = BiggestGD)

VAR ResultList = CONCATENATEX(
    BiggestGDRow,
    LOOKUPVALUE(Clubs[club_name], Clubs[club_id], Matches[home_team_id]) 
    & " " & Matches[home_team_goals] & ":" & Matches[away_team_goals] & " " 
    & LOOKUPVALUE(Clubs[club_name], Clubs[club_id], Matches[away_team_id]),
    ", "
)

RETURN ResultList

方案二:提前扩展行表添加球队名称

HighestWin = 
VAR BiggestGD = MAXX(Matches, ABS(Matches[home_team_goals] - Matches[away_team_goals]))
VAR BiggestGDRow = 
    ADDCOLUMNS(
        FILTER(Matches, ABS(Matches[home_team_goals] - Matches[away_team_goals]) = BiggestGD),
        "HomeTeamName", LOOKUPVALUE(Clubs[club_name], Clubs[club_id], Matches[home_team_id]),
        "AwayTeamName", LOOKUPVALUE(Clubs[club_name], Clubs[club_id], Matches[away_team_id])
    )

VAR ResultList = CONCATENATEX(
    BiggestGDRow,
    [HomeTeamName] & " " & [home_team_goals] & ":" & [away_team_goals] & " " & [AwayTeamName],
    ", "
)

RETURN ResultList

补充说明

如果Clubs与Matches的两个关系中一个是活动关系、一个是非活动关系,也可以保留USERELATIONSHIP,但需要将其放到行上下文内。例如在CONCATENATEX中用CALCULATE(RELATED(...), USERELATIONSHIP(...)),但LOOKUPVALUE的写法更简洁且不依赖关系的活动状态,更适合当前场景。

内容的提问来源于stack exchange,提问作者Grzegorz Szymala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:35:28