// 计算含税总销售额的占比
// 分子:受当前上下文影响(比如特定年份或产品)
// 分母:使用 ALL 清除所有筛选,获取全公司历史总销售额
Sales Percentage =
DIVIDE(
SUM(‘SLS Order Details_Master‘[Grand Total amount including Tax (INR)]),
CALCULATE(
SUM(‘SLS Order Details_Master‘[Grand Total amount including Tax (INR)]),
ALL(‘SLS Order Details_Master‘)
)
)
// 生产级销售总计
// 使用 DIVIDE 避免除以零错误
// 使用 SUMX 替代 SUM 以便在未来添加复杂的行级逻辑(如折扣计算)
// 使用 ALL 确保分母是全局常量
Total Sales % (Robust) =
VAR CurrentSales =
SUMX(
‘SLS Order Details_Master‘,
IF(
‘SLS Order Details_Master‘[Grand Total amount including Tax (INR)] > 0,
‘SLS Order Details_Master‘[Grand Total amount including Tax (INR)],
0
)
)
VAR AllCompanySales =
CALCULATE(
SUM(‘SLS Order Details_Master‘[Grand Total amount including Tax (INR)]),
ALL(‘SLS Order Details_Master‘)
)
RETURN
DIVIDE(CurrentSales, AllCompanySales)
代码解析:
在这里,我们引入了变量(VAR)语法。这是现代 DAX 开发的标准实践,不仅提高了代码可读性,使得 AI 能更好地理解我们的意图,还能在一定程度上优化性能(引擎只需计算一次变量值)。
—
2. ALLCROSSFILTERED 与 ALLEXCEPT:精准控制上下文
在 Power BI 的数据模型中,特别是 2026 年越来越普遍的复杂星型模型中,我们经常需要处理“双向筛选”的关系。
// 计算当前销售额占“用户选择范围内”总额的百分比
Sales % of Selected Total =
DIVIDE(
SUM(‘SLS Order Details_Master‘[Total amount (INR)]),
CALCULATE(
SUM(‘SLS Order Details_Master‘[Total amount (INR)]),
ALLSELECTED(‘SLS Order Details_Master‘)
)
)
// 性能较差:清除整表
Measure Bad = CALCULATE([Sales], ALL(‘SLS Order Details_Master‘))
// 性能更好:只清除特定列的筛选
Measure Good = CALCULATE([Sales], ALL(‘SLS Order Details_Master‘[Region]))
#### 监控与可观测性
在 2026 年,我们推崇“可观测性”。我们可以使用 INLINECODEea0bae99 和 INLINECODE02abee42 结合 ALL 来构建一些监控度量值,用来检查数据模型的健康状况。
示例代码:数据模型完整性检查
// 检查 Fact 表中是否有不匹配的 Dimension 数据
// 如果这个值大于 0,说明 ETL 流程可能有问题
Data Integrity Check =
VAR OrphanRows =
CALCULATE(
COUNTROWS(‘SLS Order Details_Master‘),
ISBLANK(‘SLS Order Details_Master‘[CustomerKey]),
ALL(‘SLS Order Details_Master‘) // 确保检查所有行
)
RETURN
IF(OrphanRows > 0, "Alert: Data Mismatch", "OK")