[已解决] 对于外部筛选取消或保留的问题

  [复制链接]
查看202351 | 回复163 | 2021-2-19 01:10:37 | 显示全部楼层 |阅读模式
如图所示,需要计算每个月近半年的销售额和购买客户数,即保留行标签的外部筛选,但取消切片器的外部筛选。
尝试写了两个度量值,但返回的值还是不对。

希望大佬拨冗指点。

谢谢。

  1. 销售额_近半年 =

  2. CALCULATE(

  3.   [销售额],

  4.   DATESINPERIOD('日期'[日期],ENDOFMONTH('日期'[日期]),-6,MONTH)

  5. )
复制代码
  1. 购买客户_近半年 =

  2. VAR _Half=

  3. CALCULATE(

  4.   [销售额],

  5.   DATESINPERIOD('日期'[日期],ENDOFMONTH('日期'[日期]),-6,MONTH)

  6. )

  7. Return

  8. CALCULATE(

  9.   DISTINCTCOUNT('客户'[客户ID]),

  10.   FILTER(VALUES('客户'[客户ID]),_Half>0)

  11. )
复制代码



11218112038081.png
11218112038085.zip (590.82 KB, 下载次数: 0)
回复

使用道具 举报

davliu888 | 2021-2-19 01:15:37 | 显示全部楼层
第一眼就看到VAR _Half用在FILTER的第二参数了。

可以这么改:
  1. 购买客户_近半年 =

  2. VAR __period =

  3.   DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )

  4. RETURN

  5.   COUNTROWS (

  6.   FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 0 )

  7.   )
复制代码
回复

使用道具 举报

911net | 2021-2-19 01:20:37 | 显示全部楼层
这样算也行
11218112038082.jpg
回复

使用道具 举报

绝对原因 | 2021-2-19 01:25:37 | 显示全部楼层
第一眼就看到VAR _Half用在FILTER的第二参数了。

可以这么改:


感谢指点,VAR除了不能用在Calculate第一参数,也不能用在Filter的第二参数。

再将问题延伸,场景变成:1)近半年内,且2)客户消费总计大于1千。

1)+2)下的购买客户返回了正确的值,但1)+2)的销售额却有些问题。

还望指点一二。

再次谢谢。

  1. 购买客户_近半年_消费超1K =

  2. VAR __period =

  3.   DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )

  4. RETURN

  5.   COUNTROWS (

  6.   FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 1000 )

  7.   )
复制代码
  1. 销售额_近半年_消费超1K =

  2. VAR __period =

  3.   DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )

  4. RETURN

  5.   CALCULATE([销售额],

  6.   FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 1000 )

  7.   )
复制代码


11218112038083.png
11218112038086.zip (598.28 KB, 下载次数: 0)
回复

使用道具 举报

hgp82 | 2021-2-19 01:34:37 | 显示全部楼层
感谢指点,VAR除了不能用在Calculate第一参数,也不能用在Filter的第二参数。

再将问题延伸,场景变成 ...
  1. 销售额_近半年_消费超1K =

  2. VAR __period =

  3.   DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )

  4. RETURN

  5.   SUMX (

  6.   FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 1000 ),

  7.   [销售额]

  8.   )
复制代码
回复

使用道具 举报

zsxdsl | 2021-2-19 01:36:38 | 显示全部楼层
感谢足下再次指点,更新了下DAX函数,两种写法返回的结果完全相同。
  1. 销售额_近半年_消费超1K_Calculate =

  2. VAR __period =

  3.   //DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )

  4.   DATESINPERIOD ( '日期'[日期], MAX ( '日期'[日期] ), -6, MONTH )

  5. RETURN

  6. CALCULATE([销售额_近半年],

  7.   FILTER (

  8.   VALUES ( '客户'[客户ID] ),

  9.   CALCULATE ( [销售额], __period ) > 1000

  10.   )

  11. )
复制代码
  1. 销售额_近半年_消费超1K_SumX =

  2. VAR __period =

  3.   //DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )

  4. DATESINPERIOD ( '日期'[日期], MAX( '日期'[日期] ), -6, MONTH )

  5. RETURN

  6. SUMX(

  7.   FILTER (

  8.   VALUES ( '客户'[客户ID] ),

  9.   CALCULATE ( [销售额], __period ) > 1000

  10.   ),

  11.   [销售额_近半年]

  12. )
复制代码


11218112038084.png
回复

使用道具 举报

jinchang | 2021-6-20 22:58:44 | 显示全部楼层
支持,赞一个
回复

使用道具 举报

lzw | 2021-7-17 12:46:24 来自手机 | 显示全部楼层
秀起来~
回复

使用道具 举报

孔隆 | 2021-8-2 08:40:51 | 显示全部楼层
LZ帖子不给力,勉强给回复下吧
回复

使用道具 举报

白峰 | 2021-8-21 10:07:54 | 显示全部楼层
顶起顶起顶起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则