基于多个条件的计算列 - 在 Power BI Dax 中按类别比较行
Calculated column based on multiple conditions - comparing rows by category in Power BI Dax
我需要在以下计算中创建计算列 - IsImproved - table - tbl_QOL(屏幕截图如下)
它应该比较每个客户 (EHRClientFK) 的 MetricDate 的 AvgQOL(另一个计算列)
如果-对于任何特定的 EHRClientFK AvgQOL 值,其中 IsDateMax = 1 高于 IsDateMin = 1 的 AvgQOL 值,则 IsImproved 值 = 1;任何其他情况 IsImproved = 0
例如:
EHRClientFK = 2666; (highest(max) date=1) = 3.66 的 AvgQOL; 3.66 值不高于 3.83,表示 EHRClientFK 的 IsImproved 2666 = 0
EHRClientFK = 3444; (highest(max) date=1) = 3.5 的 AvgQOL; 3.5 值高于 2,表示 EHRClientFK 3444 的 IsImproved = 1
如下图所示
应用了以下代码。
但它不能正常工作。
即使 IsDateMax = 1 的 AvgQOL 小于 IsDateMin = 1 的 AvgQOL,它也会放 1,而我希望那里为 0 - 就像 AvgQOL = 3.66(对于更大的日期 - 5/13/2021)
enter
IsImproved =
var _DateRecent = QOL[IsDateMax]
var _DateLatest = QOL[IsDateMin]
var _max = calculate(max(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateRecent=1))
var _min = calculate(min(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateLatest=1))
var _min1 = calculate(max(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateRecent=0))
var _min2 = calculate(min(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateRecent=1))
return if(_max > _min || _max >_min1 || _max > _min2, 1, 0)
我是 DAX 的新手,请帮忙!
我更愿意在此处使用 LOOKUPVALUE
:
VAR ClientFK = tbl_QOL[EHRClientFK]
VAR AvgQOLForMin =
LOOKUPVALUE (
tbl_QOL[AvgQOL],
tbl_QOL[IsDateMin], 1,
tbl_QOL[EHRClientFK], ClientFK
)
VAR AvgQOLForMax =
LOOKUPVALUE (
tbl_QOL[AvgQOL],
tbl_QOL[IsDateMax], 1,
tbl_QOL[EHRClientFK], ClientFK
)
RETURN
0 + ( AvgQOLForMax > AvgQOLForMin )
我需要在以下计算中创建计算列 - IsImproved - table - tbl_QOL(屏幕截图如下)
它应该比较每个客户 (EHRClientFK) 的 MetricDate 的 AvgQOL(另一个计算列)
如果-对于任何特定的 EHRClientFK AvgQOL 值,其中 IsDateMax = 1 高于 IsDateMin = 1 的 AvgQOL 值,则 IsImproved 值 = 1;任何其他情况 IsImproved = 0
例如:
EHRClientFK = 2666; (highest(max) date=1) = 3.66 的 AvgQOL; 3.66 值不高于 3.83,表示 EHRClientFK 的 IsImproved 2666 = 0
EHRClientFK = 3444; (highest(max) date=1) = 3.5 的 AvgQOL; 3.5 值高于 2,表示 EHRClientFK 3444 的 IsImproved = 1
如下图所示
应用了以下代码。 但它不能正常工作。 即使 IsDateMax = 1 的 AvgQOL 小于 IsDateMin = 1 的 AvgQOL,它也会放 1,而我希望那里为 0 - 就像 AvgQOL = 3.66(对于更大的日期 - 5/13/2021)
enter
IsImproved =
var _DateRecent = QOL[IsDateMax]
var _DateLatest = QOL[IsDateMin]
var _max = calculate(max(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateRecent=1))
var _min = calculate(min(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateLatest=1))
var _min1 = calculate(max(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateRecent=0))
var _min2 = calculate(min(QOL[AvgQOL]), FILTER(ALL('QOL'), _DateRecent=1))
return if(_max > _min || _max >_min1 || _max > _min2, 1, 0)
我是 DAX 的新手,请帮忙!
我更愿意在此处使用 LOOKUPVALUE
:
VAR ClientFK = tbl_QOL[EHRClientFK]
VAR AvgQOLForMin =
LOOKUPVALUE (
tbl_QOL[AvgQOL],
tbl_QOL[IsDateMin], 1,
tbl_QOL[EHRClientFK], ClientFK
)
VAR AvgQOLForMax =
LOOKUPVALUE (
tbl_QOL[AvgQOL],
tbl_QOL[IsDateMax], 1,
tbl_QOL[EHRClientFK], ClientFK
)
RETURN
0 + ( AvgQOLForMax > AvgQOLForMin )