Power BI DAX度量问题:计算销量超1000产品占比
Power BI DAX 度量解决方案
问题核心
你当前的Total sales度量逻辑错误,导致后续占比度量返回空白。Products表每行对应一笔销售记录,COUNT('Products'[PRODUCT NAME])仅统计当前上下文的记录行数,无法正确计算单个产品的总销量,这是所有问题的根源。
正确度量写法
1. 产品总数
产品总数 = DISTINCTCOUNT('Products'[PRODUCT NAME])
直接统计表中不重复的产品名称数量。
2. 各产品销量
各产品销量 = COUNTROWS('Products')
因每行对应一笔销售,统计当前产品的记录行数即为该产品销量;若表中有唯一销售ID列(如SALE ID),用COUNT('Products'[SALE ID])更严谨,可规避产品名称为空的异常情况。
3. 销量超过1000的产品数量
销量超1000产品数 = CALCULATE( DISTINCTCOUNT('Products'[PRODUCT NAME]), FILTER( ALL('Products'[PRODUCT NAME]), CALCULATE(COUNTROWS('Products')) > 1000 ) )
通过ALL('Products'[PRODUCT NAME])迭代所有产品,在迭代过程中计算每个产品的总销量,筛选出销量大于1000的产品后统计数量。
4. 销量超1000产品的占比
销量超1000产品占比 = DIVIDE( [销量超1000产品数], [产品总数], 0 )
用DIVIDE函数处理除数为0的场景,返回0而非错误值,保证结果正常显示。
原度量错误说明
Total sales:全局上下文下返回所有销售记录数,而非单个产品的总销量,导致筛选时无法判断产品销量阈值。% products Plus 1000 sales:直接筛选Products表行时,上下文为单条销售记录,[Total Sales]返回值始终为1,无法筛选出销量超1000的产品,因此返回空白。
内容的提问来源于stack exchange,提问作者Tony Ashton
相关产品推荐
相关产品推荐

