DAX查询以选择两个给定日期之间的值

时间:2018-11-10 01:58:09

标签: powerbi dax

我是DAX查询的新手,它试图从promotion_name表中获取两个日期之间promotion的唯一列表,这两个日期来自该表的其他两列。我已经写了下面的DAX查询来衡量。但是,我得到一个错误。我确定查询不正确。我可以帮忙吗?

Measure = 
CALCULATE(VALUES(promotion[promotion_name]),
FILTER (ALL(promotion),
    promotion[start_date] >= DATE(1997,1,1) &&
    promotion[end_date] <= DATE(1997,12,31)))

基本上我想在DAX中实现此SQL查询:

select promotion_name
from promotion
where start_date >= '1998-01-01 00:00:00' AND
        end_date <= '1998-12-31 00:00:00'

1 个答案:

答案 0 :(得分:2)

您快到了。如Alexis所说,此DAX表达式返回一个表,而不是像度量值一样的单个值。因此,请使用CALCULATETABLE代替CALCULATE。此处不需要FILTER表达式中的ALL函数。因此,请在“建模”标签上的New Table中进行尝试:

Table =
CALCULATETABLE (
    VALUES ( promotion[promotion_name] ),
    FILTER (
        promotion,
        promotion[start_date] >= DATE ( 1997, 1, 1 )
            && promotion[end_date] <= DATE ( 1997, 12, 31 )
    )
)

请注意,VALUES ( promotion[promotion_name] )将返回不同的值。如果需要所有值都重复的值,则需要将VALUES ( promotion[promotion_name] )替换为SELECTCOLUMNS('promotion',"promotion_name",'promotion'[promotion_name])