我是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'
答案 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])
。