Power BI DAX:如何基于维度当前行值计算度量值
Power BI度量值中获取维度表当前行值的解决方案
直接引用
Product[LineItem]报错的原因
度量值的计算基于筛选上下文,而非行上下文。直接写维度表列名时,Power BI无法定位具体要引用哪一行的值——因为度量值默认是对筛选范围内的整体数据做聚合,没有明确的行上下文指向,因此会报错。最优解决方案:使用
SELECTEDVALUE
你尝试的SELECTEDVALUE就是专门解决这类场景的函数,它能在筛选上下文中提取当前唯一选中的列值。修改后的度量值如下:Updated_Qtr_Amount = IF( SELECTEDVALUE(Product[LineItem]) = "Opening Balance", Sales[YTD Amount], Sales[Qtr Amount] )该函数的逻辑是:如果
Product[LineItem]在当前筛选下只有一个明确值,就返回这个值;如果筛选后有多个值或无筛选,默认返回空白(你也可以通过第二个参数指定默认值,例如SELECTEDVALUE(Product[LineItem], "Other"))。迭代场景下的替代方案
若需要逐行遍历维度表并计算,可使用SUMX、MAXX这类迭代函数创建行上下文,示例如下:Updated_Qtr_Amount = SUMX( Product, IF( Product[LineItem] = "Opening Balance", CALCULATE(Sales[YTD Amount]), CALCULATE(Sales[Qtr Amount]) ) )这个写法会遍历
Product表的每一行,在每行的行上下文里直接引用Product[LineItem],再通过CALCULATE转换为筛选上下文计算对应销售度量值,最后求和。不过这种方式仅适用于需要逐行聚合的场景,日常使用中SELECTEDVALUE更简洁高效。
内容的提问来源于stack exchange,提问作者Arif
相关产品推荐
相关产品推荐

