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

基于DAX实现度量值匹配另一表区间的分值查找

在Tabular模型中基于绩效分数区间匹配分值的解决方案

嘿,这个需求很常见,咱们用DAX就能轻松实现这个度量值,把PerformanceScore和对应的Points精准匹配起来。下面是具体的步骤和代码:

1. 先确认模型结构

首先得确保你的Tabular模型里有两个核心部分:

  • 包含MetricID和PerformanceScore度量值的主表(我这里假设叫MetricsTable,你可以换成自己的表名)
  • 分值对照表(假设叫ScoreMappingTable,就是你给出的那个带Metric、LowRange、HighRange、Points的表)

2. 创建匹配分值的度量值

新建一个度量值,命名为AssignedPoints,粘贴下面的DAX代码:

AssignedPoints = 
VAR CurrentMetric = SELECTEDVALUE(MetricsTable[MetricID])
VAR CurrentPerformanceScore = [PerformanceScore]
RETURN
CALCULATE(
    VALUES(ScoreMappingTable[Points]),
    ScoreMappingTable[Metric] = CurrentMetric,
    ScoreMappingTable[LowRange] <= CurrentPerformanceScore,
    ScoreMappingTable[HighRange] > CurrentPerformanceScore
)

代码逻辑解释:

  • CurrentMetric:抓取当前上下文里的MetricID,保证只匹配对应指标的分值区间
  • CurrentPerformanceScore:调用你已有的PerformanceScore度量值,拿到当前的绩效分数
  • CALCULATE块:筛选分值表,找到符合当前Metric且分数落在区间内的记录,返回对应的Points值

3. 生成完整结果集

如果需要直接生成包含三个字段的结果集,你可以创建一个计算表(或者在报表视觉对象里直接组合字段):

FinalScoreResults = 
SELECTCOLUMNS(
    MetricsTable,
    "MetricID", MetricsTable[MetricID],
    "PerformanceScore", [PerformanceScore],
    "AssignedPoints", [AssignedPoints]
)

小提醒

  • 要保证ScoreMappingTable的区间没有重叠,并且覆盖所有可能的PerformanceScore范围(比如如果有分数超过100的情况,记得补充对应的区间规则)
  • 如果你的区间是包含HighRange的(比如希望60属于第一个区间),把条件调整为ScoreMappingTable[HighRange] >= CurrentPerformanceScore,同时一定要确保区间不重叠,避免匹配到多个结果

这样设置后,当你在报表里展示MetricID、PerformanceScore和AssignedPoints时,就能自动得到每个指标对应的匹配分值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:15:00