如何基于Location列创建DAX公式生成% Achieved列
基于Location计算% Achieved的DAX公式解决方案
需求说明
创建DAX计算列生成% Achieved列,规则如下:
- 当
Location为EU时,计算逻辑:Actual * Target - 当
Location为其他区域时,计算逻辑:Actual + Target
背景:Actual与Target数据分属不同数据集,已通过Name和Location建立数据建模关系,使用IF函数尝试实现时出现报错。
数据集
实际值数据集(ActualTable)
| Name | Location | Actual |
|---|---|---|
| John | EU | 10 |
| John | ASIA | 4 |
| Steve | EU | 5 |
| Steve | ASIA | 87 |
目标值数据集(TargetTable)
| Name | Location | Target |
|---|---|---|
| John | EU | 5 |
| John | ASIA | 5 |
| Steve | EU | 7 |
| Steve | ASIA | 9 |
解决方案
报错核心原因通常是未正确跨表引用关联列,需使用RELATED函数获取关联表的对应值。以下是针对ActualTable创建计算列的DAX公式:
% Achieved = IF( ActualTable[Location] = "EU", ActualTable[Actual] * RELATED(TargetTable[Target]), ActualTable[Actual] + RELATED(TargetTable[Target]) )
若需在TargetTable中创建该计算列,调整引用方向即可:
% Achieved = IF( TargetTable[Location] = "EU", RELATED(ActualTable[Actual]) * TargetTable[Target], RELATED(ActualTable[Actual]) + TargetTable[Target] )
预期结果
| Name | Location | Actual | Target | % Achieved |
|---|---|---|---|---|
| John | EU | 10 | 5 | 50 |
| John | ASIA | 4 | 5 | 9 |
| Steve | EU | 5 | 7 | 35 |
| Steve | ASIA | 87 | 9 | 96 |
内容的提问来源于stack exchange,提问作者lil chill
相关产品推荐
相关产品推荐

