powerbi - 在 Power BI 中使用 DAX 的矩阵问题中的部件百分比
问题描述
基本上我试图找到每个“缺陷代码”的缺陷百分比。
机器编号在一个表中([针织]),缺陷代码/缺陷数量在另一个表中([针织缺陷])。它们按件数相关,并受日历表的影响。加工数量来自针织缺陷表,如下所示。
问题是当应用下面的百分比计算时,它非常适用于机器,但零件的百分比(缺陷代码)显示为 100%。
我目前正在使用三个 DAX 度量。
Defect Quantity =
CALCULATE(
SUMX( 'Knit Defects','Knit Defects'[Processed Qty]),
left('Knit Defects'[Defect Code])="5"
)
Defect and 1st Quality =
calculate(
sum('Knit Defects'[Processed Qty]),
'Knit Defects'[Defect Code] = ""
) + [Defect Quantity]
Defect Percentage =
iferror([Defect Quantity] / [Defect and 1st Quality] ,0)
解决方案
问题在于您的 [缺陷和第一质量] 度量。如果将其放入矩阵中,您将看到它始终与每个缺陷描述的 [缺陷数量] 相同:
只有当您的 [缺陷和第一质量] 测量的第一部分:
Defect and 1st Quality =
calculate( sum('Knit Defects'[Processed Qty]),
'Knit Defects'[Defect Code] = "")
总是返回 0 或空白。
为什么会这样?因为在您的视觉过滤器中,您只选择了以“5”开头的缺陷代码。因此,在此度量中,您实质上是要求 Power BI 计算从“5”和等于“”开始的缺陷代码的已处理数量的总和。由于不存在此类组合,因此公式返回空白。
要修复它,您需要先“消除”视觉级别过滤器的影响,然后应用新过滤器:
Defect and 1st Quality =
CALCULATE (
SUM ( 'Knit Defects'[Processed Qty] ),
ALL ( 'Knit Defects'[Defect Description] ),
'Knit Defects'[Defect Code] = ""
) + [Defect Quantity]
结果:
一些额外的建议:
您可以重写缺陷百分比度量,如下所示:
Defect Percentage = DIVIDE([Defect Quantity], [Defect and 1st Quality])
它做同样的事情,但效率更高,代码更干净。
另外,我建议重新审视您的数据模型设计。它需要转换为正确的启动模式——就目前而言,它有很多维度建模问题。如果您不修复它们,DAX 将继续为您带来挑战。
推荐阅读
- identityserver4 - 401 blazor wasm + identityserver中如何配置网站域名和IP同时运行?
- python - 尝试创建在 6 次错误输入用户名和密码后退出的程序
- swift - 如何确保firebase数据始终是一个数组?
- android - 从项目目录读取本地文件 | Kotlin 多平台移动 | 知识管理系统
- c# - ASP.NET CORE MVC | System.ArgumentNullException : '值不能为空。' | Configuration.GetConnectionString
- python - Lambda 函数在此代码中如何工作?
- node.js - 令人难以置信的缓慢的 Angular 源地图构建
- c# - 在 C# MVC 中设置默认路由
- angular - MVP 与自定义指令
- java - 有没有办法让 gradle 在构建另一个子项目之前构建一个子项目依赖项?