Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 度量值在月份阈值内不起作用_Sql Server_Powerbi_Dax - Fatal编程技术网

Sql server 度量值在月份阈值内不起作用

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

我建立了这个Dax度量

_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] ) )