cqwcns 发表于 2022-3-3 18:05

POWER BI/DAX,动态时间段计数的问题

POWER BI中,需要统计一列数据【投诉数】,我希望有一个度量值能动态统计出近7天的总计。
我尝试这样写:



周期投诉数 =
CALCULATE(
    COUNTA('重复投诉率'[是否重复投诉]),
    FILTER(
      ALL('日期表'),
      '日期表'[日期] >= DATEADD('日期表'[日期], -7, MONTH) && '日期表'[日期] <= MAX ( '日期表'[日期] )
    )
)

但结果不是我想要的:




如上图,以3月2日为例,近7天的投诉量正确是2316,但我的代码统计出来是32499。


显然是'日期表'[日期] >= DATEADD('日期表'[日期], -7, MONTH)这句没有生效。




不知道应该怎么改。


请指教,谢谢

飞鸟热 发表于 2022-3-3 18:24

本帖最后由 飞鸟热 于 2022-3-3 21:38 编辑

计数 =
var sday = SELECTEDVALUE('日期表'[日期])
return
CALCULATE(COUNTA('重复投诉率'[是否重复投诉]),DATEDIFF('日期表'[日期],sday,DAY)<=7)

雨过之后是晴天 发表于 2022-3-4 09:59

动态投放的展现方式是? 希望可以直接选择一个日期查看前七天的 或者动态选择日期 动态查看某几天的?

cqwcns 发表于 2022-3-4 14:59

飞鸟热 发表于 2022-3-3 18:24
计数 =
var sday = SELECTEDVALUE('日期表'[日期])
return


感谢,但大佬的代码少了一个条件,我稍微改了一下,功能实现。

周期内重复投诉 =
VAR _DATE = SELECTEDVALUE('日期表'[日期])
VAR _RANGE = 7
RETURN
CALCULATE(
    COUNTA('重复投诉率'[是否重复投诉]),DATEDIFF('日期表'[日期],_DATE,DAY) < _RANGE && '日期表'[日期] <= MAX ( '日期表'[日期] )
)

cqwcns 发表于 2022-3-4 15:25

本帖最后由 cqwcns 于 2022-3-4 15:26 编辑

飞鸟热 发表于 2022-3-3 18:24
计数 =
var sday = SELECTEDVALUE('日期表'[日期])
return

大佬,还有一个问题。
我通过以下代码选取了投诉总数,即分母。



投诉总数 =
VAR _DATE = SELECTEDVALUE('日期表'[日期])
VAR _RANGE = 30
RETURN
CALCULATE(
    COUNTA('重复投诉率'[是否重复投诉]),DATEDIFF('日期表'[日期],_DATE,DAY) < _RANGE && '日期表'[日期] <= MAX ( '日期表'[日期] )
)


但我还要选取分子,如果选取分子还有加一个条件,就是'重复投诉率'[是否重复投诉] = "重复投诉"。
我以为可以这样:

重复投诉总数 =
VAR _DATA = FILTER('重复投诉率', '重复投诉率'[是否重复投诉] = "重复投诉")
VAR _DATE = SELECTEDVALUE('日期表'[日期])
VAR _RANGE = 30
RETURN
CALCULATE(
    COUNTA(_DATA),DATEDIFF('日期表'[日期],_DATE,DAY) < _RANGE && '日期表'[日期] <= MAX ( '日期表'[日期] )
)


但报错:COUNTA 函数只接受列引用作为参数。不知道怎么改才行,请指教,谢谢。

飞鸟热 发表于 2022-3-4 17:17

VAR _DATA = CALCULATE( VALUES('重复投诉率'[某个列]) , '重复投诉率'[是否重复投诉] = "重复投诉")

参数变一下应该就可以了。
另外filter的写法已经支持简化了。

cqwcns 发表于 2022-3-5 11:24

cqwcns 发表于 2022-3-4 15:25
大佬,还有一个问题。
我通过以下代码选取了投诉总数,即分母。



这样吗?


重复投诉总数 =
VAR _DATA = CALCULATE( VALUES('重复投诉率'[是否重复投诉]) , '重复投诉率'[是否重复投诉] = "重复投诉")
VAR _DATE = SELECTEDVALUE('日期表'[日期])
VAR _RANGE = 30
RETURN
CALCULATE(
    COUNTA(_DATA),DATEDIFF('日期表'[日期],_DATE,DAY) < _RANGE && '日期表'[日期] <= MAX ( '日期表'[日期] )
)



不行,报错一样,还是COUNTA 函数只接受列引用作为参数。{:301_972:}
页: [1]
查看完整版本: POWER BI/DAX,动态时间段计数的问题