powerbi - dax中的高级IF
问题描述
当条件满足时,我需要更改我原来的“总预算金额”以在新的“TotalBudgetTest”中包含不同的公式。条件是当 art=220 它应该从 art 101 返回 15%*totalBudgettest + 从 art 220 的总预算金额。这意味着它是 15 * 1.321.049+ 1.878.566 我的问题是我的代码现在不添加当条件不满足时,值(1.878.566)的 15% 应返回总预算金额中的值
我的代码是
TotalBudgetTest =
VAR _if =
IF (
HASONEVALUE ( Art[Art Code] ),
SWITCH (
VALUES ( Art[Art Code] ),
101, [Project Cost Amount],
220, [Total Budget Amount],
[Total Budget Amount]
)
)
RETURN
_if
任何人都可以帮助我吗?
解决方案
您必须更改[Total Budget Amount]
ArtCode 为 220 时的上下文。您必须将 SWITCH 语句中的该行更改为如下所示:
HASONEVALUE( Art[Art Code] ),
SWITCH (
VALUES ( Art[Art Code] ),
101, [Project Cost Amount],
220, [Total Budget Amount] +
CALCULATE(
[Project Cost Amount],
[Art Code] = 101
)*0,15),
[Total Budget Amount]
)
我还没有尝试过这个解决方案(我通常在发布之前这样做)所以让我知道它不起作用,我会再看一下。此外,我不了解您的代码背后的逻辑/推理,所以我可能误解了您要计算的内容。
编辑1:
我组成了一个数据集,并尝试了以下代码:
_if =
var _if =
IF(
HASONEVALUE('Data'[Leve4]);
SWITCH(
VALUES(Data[Leve4]);
101; [Project Cost Amount]*0,1;
220; [Project Cost Amount]+CALCULATE([Project Cost Amount]; Data[Leve4] = 101)*0,1;
[Project Cost Amount]
)
)
return
_if
将其添加到小型数据集表时,我得到了这个结果。如您所见,即使在 switch 语句中也可以计算计算。
推荐阅读
- reactjs - 如何从 kibana iframe 解决 Blocked a frame with origin(SecurityError)
- botframework - 微软 bot 让团队渲染英雄卡的轮播
- xcode - 在我的应用程序中没有资源文件夹。如何在我的应用程序中添加资源文件夹以添加图像和自定义字体
- android - Visual Studio 分发 Xamarin Android APP。错误 此 API 已被弃用,不再可用。[410]
- microservices - 微服务的正确结构 - 基于订阅的模型
- kubernetes - uid:无法进行端口转发:使用 helm 找不到 socat
- python - producer.poll(0) 不会产生任何消息,但 producer.flush() 有效
- duplicates - 微服务之间的数据重复 - 解决 ONE 服务中的冗余
- php - PHP 文件中嵌入式 SQL 的 Notepad++ 语法高亮
- c# - 将基类转换为 T 的泛型类