DAX技术求助:在Products查找表计算列统计各产品销售笔数
解决Products表计算列统计销售笔数的问题
错误原因分析
你当前的公式逻辑完全偏离了目标:
- 你用
Filter(Product, ...)是在筛选产品表而非销售表,这根本不是统计销售笔数的正确对象。 Calculate(Sum(Sales[SalesAmount]))在没有指定产品筛选条件时,返回的是所有销售记录的总金额(只要总金额不为0,筛选条件就始终成立),最终Countrows(Filter(...))会返回整个Products表的行数,所以所有产品行的数值都一样。
正确的DAX公式
有两种简洁且正确的写法,任选其一即可:
方法1:使用RELATEDTABLE(推荐,语义清晰)
Product[total number of sales] = COUNTROWS(RELATEDTABLE(Sales))
RELATEDTABLE会自动识别当前Products行上下文对应的关联Sales记录集合,直接统计该集合的行数,就是对应产品的销售笔数。
方法2:使用CALCULATE+COUNTROWS(利用上下文转换)
Product[total number of sales] = CALCULATE(COUNTROWS(Sales))
在计算列的行上下文里,CALCULATE会自动执行上下文转换:把当前行的产品筛选条件(比如ProductID)转换为筛选上下文,应用到Sales表,然后统计符合条件的销售记录行数。
内容的提问来源于stack exchange,提问作者Swarnadip Bandyopadhyay
相关产品推荐
相关产品推荐

