在 DAX Power BI 中使用最大和最小日期创建计算 table
Creating calculated table with MAX and MIN dates in DAX Power BI
我在 Power BI 中导入了以下 table - QOL_Exp(请参见下面的屏幕截图示例)
我需要创建一个计算的 table 来过滤掉 Rating = 999 的值,
同时,将根据 ClientID(请参阅突出显示的灰色和桃色区域)仅从日期列中选择最高和最低日期值。
我用红色字体突出显示了我希望在我的计算中看到的值 table
例如,对于 ClientID = 3052,我需要 Date = 11/20/2020(此 ClientID 的最低日期)和 Date = 5/17/2021(此 ClientID 的最高日期)的记录
对于 ClientID = 2666 我不需要记录 where Rating = 999(条件之一)
我设法过滤掉了(排除 Rating = 999),但努力在新计算的 table
中只包含最大和最小日期
这是我的 DAX:
QOL = CALCULATETABLE(QOL_Exp, QOL_Exp[Rating]<>999)
我应该如何修改以仅保留基于 ClientID 的 Max(Date) 和 Min(Date) 记录?
更新:
根据给出的答案,稍作更新(见下文):
QOL =
FILTER (QOL_Exp, QOL_Exp[Rating] <> 999
&&
(( QOL_Exp[Date] = CALCULATE (MIN ( QOL_Exp[Date] ),
ALLEXCEPT(QOL_Exp,QOL_Exp[ClientID])))
|| QOL_Exp[Date] = CALCULATE (MAX ( QOL_Exp[Date] ),
ALLEXCEPT(QOL_Exp, QOL_Exp[ClientID]))))
QOL =
FILTER (
QOL_Exp,
QOL_Exp[Rating] <> 999
&& (
QOL_Exp[Date]
= CALCULATE (
MIN ( QOL_Exp[Date] ),
FILTER (
QOL_Exp,
QOL_Exp[Rating] <> 999
&& QOL_Exp[ClientID] = EARLIER ( QOL_Exp[ClientID] )
)
)
|| QOL_Exp[Date]
= CALCULATE (
MAX ( QOL_Exp[Date] ),
FILTER (
QOL_Exp,
QOL_Exp[Rating] <> 999
&& QOL_Exp[ClientID] = EARLIER ( QOL_Exp[ClientID] )
)
)
)
)
我在 Power BI 中导入了以下 table - QOL_Exp(请参见下面的屏幕截图示例)
我需要创建一个计算的 table 来过滤掉 Rating = 999 的值, 同时,将根据 ClientID(请参阅突出显示的灰色和桃色区域)仅从日期列中选择最高和最低日期值。
我用红色字体突出显示了我希望在我的计算中看到的值 table
例如,对于 ClientID = 3052,我需要 Date = 11/20/2020(此 ClientID 的最低日期)和 Date = 5/17/2021(此 ClientID 的最高日期)的记录
对于 ClientID = 2666 我不需要记录 where Rating = 999(条件之一)
我设法过滤掉了(排除 Rating = 999),但努力在新计算的 table
中只包含最大和最小日期这是我的 DAX:
QOL = CALCULATETABLE(QOL_Exp, QOL_Exp[Rating]<>999)
我应该如何修改以仅保留基于 ClientID 的 Max(Date) 和 Min(Date) 记录?
更新: 根据给出的答案,稍作更新(见下文):
QOL =
FILTER (QOL_Exp, QOL_Exp[Rating] <> 999
&&
(( QOL_Exp[Date] = CALCULATE (MIN ( QOL_Exp[Date] ),
ALLEXCEPT(QOL_Exp,QOL_Exp[ClientID])))
|| QOL_Exp[Date] = CALCULATE (MAX ( QOL_Exp[Date] ),
ALLEXCEPT(QOL_Exp, QOL_Exp[ClientID]))))
QOL =
FILTER (
QOL_Exp,
QOL_Exp[Rating] <> 999
&& (
QOL_Exp[Date]
= CALCULATE (
MIN ( QOL_Exp[Date] ),
FILTER (
QOL_Exp,
QOL_Exp[Rating] <> 999
&& QOL_Exp[ClientID] = EARLIER ( QOL_Exp[ClientID] )
)
)
|| QOL_Exp[Date]
= CALCULATE (
MAX ( QOL_Exp[Date] ),
FILTER (
QOL_Exp,
QOL_Exp[Rating] <> 999
&& QOL_Exp[ClientID] = EARLIER ( QOL_Exp[ClientID] )
)
)
)
)