If statement PowerBI查询没有';不能使用日期过滤器

If statement PowerBI查询没有';不能使用日期过滤器,if-statement,filter,powerbi,dax,slicers,If Statement,Filter,Powerbi,Dax,Slicers,我有这个DAX: Earned Daily = VAR d = SELECTEDVALUE ( 'P6 Update'[Date] ) RETURN IF ( 'Data for Pivot'[Date] <= d && 'Data for Pivot'[Act Rem] = "Actual Units" && 'Data for Pivot'[Type] = "Current", 'Data for Pivo

我有这个DAX:

Earned Daily =
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
IF (
    'Data for Pivot'[Date] <= d
        && 'Data for Pivot'[Act Rem] = "Actual Units"
        && 'Data for Pivot'[Type] = "Current",
    'Data for Pivot'[Value],
    0
)
数据已正确过滤

原始代码有什么问题

注:P6更新表是使用以下代码创建的:

P6 Update = CALENDAR(MIN('Data for Pivot'[Date]), MAX('Data for Pivot'[Date]))

DAX公式似乎是一个计算列,而不是度量值。由于计算列在每次加载表时只计算一次,因此它们不能响应切片器或任何类型的动态筛选

解决方案是编写一个度量来生成所需的值。它看起来像这样:

Earned Daily =
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
CALCULATE (
    SUM ( 'Data for Pivot'[Value] ),
    'Data for Pivot'[Date] <= d,
    'Data for Pivot'[Act Rem] = "Actual Units",
    'Data for Pivot'[Type] = "Current"
)
每日收入=
VAR d=SELECTEDVALUE('P6更新'[日期])
返回
算计(
总和('数据透视'[值]),

“数据透视”[Date]基于@Alexis Olson的回答,我把这一个做了我想要的:

Earned Daily = 
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
CALCULATE (
    SUM('Data for Pivot'[Value] ),
    FILTER(ALLSELECTED('Data for Pivot'),'Data for Pivot'[Date]=MAX('Data for Pivot'[Date])),
    'Data for Pivot'[Date] <= d,
    'Data for Pivot'[Act Rem] = "Actual Units",
    'Data for Pivot'[Type] = "Current"
)
每日收入=
VAR d=SELECTEDVALUE('P6更新'[日期])
返回
算计(
总和('数据透视'[值]),
过滤器(ALLSELECTED('Data for Pivot'),'Data for Pivot'[Date]=MAX('Data for Pivot'[Date]),

“数据透视”[日期]如果
返回d
,它会给出日期吗?如果
SELECTEDVALUE
没有返回空值,我希望这会起作用。如果
P6 Update
表与Pivot
表的
数据相关,这也可能会导致问题。是的……我想这就是问题所在。它们是相关的。等一下……这看起来不像mea当然可以,但计算列。计算列无法响应切片器。它们不是动态的。这是您的问题。您无法将切片器选择读入计算列。是的……现在的问题是,它将所有值相加,而不是为Pivot'[Value]显示
数据
每一天。假设选择了日期2018-4-15…它是第13、14和15天的总和。我希望它只输出Pivot'[Value]的
数据
每天,而不是总结。我只是用我想要的方式回答了问题。非常感谢Alexis花时间提供了宝贵的见解。现在我们讨论了这个问题,我发现你写的内容很有道理:一个计算过的列不能响应切片器。它们不是动态的。你能给我一些启发吗这里是ht吗?是不是因为所有3列都是计算出来的?
Earned Daily = 
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
CALCULATE (
    SUM('Data for Pivot'[Value] ),
    FILTER(ALLSELECTED('Data for Pivot'),'Data for Pivot'[Date]=MAX('Data for Pivot'[Date])),
    'Data for Pivot'[Date] <= d,
    'Data for Pivot'[Act Rem] = "Actual Units",
    'Data for Pivot'[Type] = "Current"
)