微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 DAX 查询 PowerBI 中使用切片器的日期范围

如何解决在 DAX 查询 PowerBI 中使用切片器的日期范围

我有一个用户控制的日期切片器。我正在尝试使用用户最小/最大日期选择作为指标。我创建了两个度量 - 一个用于最小值,另一个用于最大值。请参阅以下 DAX 代码

NewMin = CALculaTE(FirsTDATE('Master Query'[RegisterDate]),ALLSELECTED('Master Query'))

现在,在主查询表上有一列以 dd/mm/yyyy 00:00:00 格式保存日期值......我正在添加另一列并使用 if 语句来获得 0/ 1 个输出(即检查日期列是否在最小和最大日期切片器选择之间)但它不起作用。请参阅下面的 DAX:

RangeCheck = IF('Master Query'[RegisterDate] >= 'Master Query'[NewMin] && 'Master Query'[RegisterDate] <= 'Master Query'[NewMax],1,0)

这不起作用,我不确定为什么。如果日期在两个最小和最大边界之间,它似乎无法识别日期或无法破译。

解决方法

使用 LASTDATE 检索某个时间段内最后一个可见日期的值会返回一个包含该最后日期的表,而不仅仅是日期。

It does not return a date. It returns a table,containing the date.

这样做的原因是 LASTDATE 是一个时间智能函数。它的主要目的是在 CALCULATE 中用作过滤器参数。 CALCULATE 过滤器参数是表格。因此,对于要在度量中使用的函数,它需要返回一个表。

表达上述计算的更好方法是使用标量函数,例如用 MIN 代替 FIRSTDATE,用 MAX 代替 LASTDATE。 MIN 和 MAX 不返回表:它们返回第一个和最后一个日期的值。

为了使用任何时间智能计算,您需要一个格式良好的日期表。日期表必须满足以下要求:

  • 必须提供所需年份的所有日期。日期表 必须始终从 1 月 1 日开始到 12 月 31 日结束,包括所有 在这个范围内的日子。如果报告仅引用会计年度, 那么日期表必须包含从第一天到第二天的所有日期 财政年度的最后一天。例如,如果 2008 财年 从 2007 年 7 月 1 日开始,那么日期表必须包括所有天数 2007年7月1日至2008年6月30日。
  • 需要有一个 DateTime 或 Date 数据类型的列 包含唯一值。此列通常称为日期。甚至 尽管日期列通常用于定义与 其他表,这不是必需的。尽管如此,日期列必须 包含唯一值,应由标记为日期引用 表功能。如果该列还包含时间部分,则不 应使用时间——例如,时间应始终为 12:00 上午。
  • Date 表必须在模型中标记为日期表,在 案例日期表和任何其他表之间的关系 不是基于日期。

如果您已遵循上述所有操作,则可以尝试这样的操作(因为日期切片器已经过滤了表格)

测量:

InBetween = 
VAR maxValue = CALCULATE ( MAX ( Table[column] ),ALLSELECTED ( Table) )
    
VAR minValue = CALCULATE ( MIN ( Table[column] ),ALLSELECTED ( Table) )

RETURN IF ( minValue <= Master Query[RegisterDate] <= maxValue,1,0 )

或者,您可以使用许多其他 DAX 表达式来生成期间 (min,max) 中的一组日期,并根据它评估主列。确保所有内容均采用日期时间格式或日期而非文本。

,

计算列无法从切片器读取动态过滤器。每次刷新模型时,计算列仅计算一次,而不是响应交互切片器或过滤器窗格。

相比之下,度量确实适用于动态计算(但当您尝试在计算列中使用它们时则不然)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。