在PowerBI中,我有一个价格表(ItemID、ItemName、Price、EffectiveStartDate、EffectiveEndDate(,我正试图返回在给定日期生效的所有价格(由用户或评估上下文选择(。在我的报表画布上,我看到了一个包含所有项目和详细信息的表(如上(。如果我声明一个变量并为其分配一个文字值,那么过滤器就可以正常工作。。。。像这样:
VAR CurrentDate =
DATE(2022, 3, 15)
RETURN
FILTER (
Ingredients,
[EffectiveStartDate] < CurrentDate
&& [EffectiveEndDate] > CurrentDate
)
但是,如果我尝试为CurrentDate分配我的采集器度量值,它就会失败。(不知何故,不等式过滤器被忽略了(。我有一个切片器(下拉列表(来选择日期,SELECTEDVALUE('DimDate'[date}(来检索值。但当我试图在过滤器中使用它时,它失败了:
VAR CurrentDate =
SELECTEDVALUE('DimDate'[Date])
RETURN
FILTER (
Ingredients,
[EffectiveStartDate] < CurrentDate
&& [EffectiveEndDate] > CurrentDate
)
知道为什么会发生这种事吗?我该如何修复它?
我原本希望这两个过滤器的作用相同(文字过滤器使用DATE((和一个变量,但事实并非如此。当我使用SELECTEDVALUE((设置变量的值时,它似乎忽略了filter((语句中的变量。
如果您希望计算依赖于切片器,您需要Measure,而不是Calculated列或Calculated表。计算列和计算表在刷新时生成并物理存储在模型中,因此切片器可以对它们进行筛选,但切片器不能更改计算值。
度量不是持久性的,而是根据过滤器和切片器的更改根据需要计算的。例如,您可以使用以下方法来过滤成分:
Filtered Ingredients =
VAR CurrentDate = SELECTEDVALUE(DimDate[Date])
RETURN
CALCULATE(
MAX(Ingredients[Name]),
Ingredients[EffectiveStartDate] < CurrentDate
&& Ingredients[EffectiveEndDate] > CurrentDate
)