Sql server 度量值在月份阈值内不起作用
我建立了这个Dax度量Sql server 度量值在月份阈值内不起作用,sql-server,powerbi,dax,Sql Server,Powerbi,Dax,我建立了这个Dax度量 _Access_Daily = CALCULATE( DISTINCTCOUNTNOBLANK(ApplicationAccessLog[ApplicationUserID]), FILTER('Date','Date'[DateId]=SELECTEDVALUE('DateSelector'[DateId],MAX('DateSelector'[DateId]))))+0 _Access__PreviousDay = CALCULATE( DISTINCTCO
_Access_Daily = CALCULATE(
DISTINCTCOUNTNOBLANK(ApplicationAccessLog[ApplicationUserID]),
FILTER('Date','Date'[DateId]=SELECTEDVALUE('DateSelector'[DateId],MAX('DateSelector'[DateId]))))+0
_Access__PreviousDay = CALCULATE(
DISTINCTCOUNTNOBLANK(ApplicationAccessLog[ApplicationUserID]), FILTER('Date','Date'[DateId]=SELECTEDVALUE('DateSelector'[DateId],MAX('DateSelector'[DateId]))-1 ))+0
日期选择器表是一个断开连接的表,包含从1月20日到现在的日期。Dateid是一个类似于20200131的整数。
日期表是一个标准的日期表,所有日期都在1970年到2038年之间。日期id是一个类似于20200131的整数。
然而,它似乎不适用于1月和2月之间的月阈值?因此,如果选择的日期是2020年2月1日,那么对于2020年1月31日,它不会正确返回。如评论中所述,这里的根本问题是您使用的整数不是日期。因此,当您减去1并跨越月(或年)边界时,没有日历智能可以正确调整数字 您的解决方案(使用“Date”[DayDateNext])可能会起作用,如果出于其他考虑,必须使用此设计。然而,我建议重新审视整体方法,使用真实日期而不是“DateId”。然后,您将能够使用内置的DAX时间智能,您的代码将更加优雅和快速 例如,如果“日期”和“日期选择器”表具有常规的日期字段,则可以按如下方式重新编写代码:
_Access_Daily =
VAR Selected_Date = SELECTEDVALUE ( 'DateSelector'[Date], MAX ( 'DateSelector'[Date] ) )
VAR Result =
CALCULATE (
DISTINCTCOUNTNOBLANK ( ApplicationAccessLog[ApplicationUserID] ),
'Date'[Date] = Selected_Date
)
RETURN
Result + 0
以及:
你应该使用常规日期,而不是整数。如果你从20200201中减去1,你将得到20200200。这是一个合法的数字,但不是一个合法的日期为这一洞察力干杯。帮我想办法破解它。解决方案是这个过滤器,过滤器('Date','Date'[DayDateNext]=SELECTEDVALUE('DateSelector'[DayDate],MAX('DateSelector'[DayDate]))+0输入一个解决方案,我会给你一些分数。
_Access_PreviousDay =
CALCULATE ( [_Access_Daily], PREVIOUSDAY ( 'Date'[Date] ) )