Power BI中基于另一列最小值回溯列值的DAX公式需求
解决Power BI中基于最小值回溯对应列值的DAX计算列问题
你的原公式仅计算了分组内KBETR的最小值,未实现“回溯对应列值”的核心需求。以下是两种通用DAX方案,可直接复用至其他场景:
场景1:分组内KBETR最小值唯一
使用LOOKUPVALUE直接匹配最小值对应的目标列值:
回溯列 = VAR MinKBETR = CALCULATE( MIN(ZMOB_TZONE_L1[KBETR]), ALLEXCEPT( ZMOB_TZONE_L1, ZMOB_TZONE_L1[LZONE], ZMOB_TZONE_L1[INCO1], ZMOB_TZONE_L1[WGBEZ] ) ) RETURN LOOKUPVALUE( ZMOB_TZONE_L1[要回溯的列名], -- 替换为你需要获取值的目标列 ZMOB_TZONE_L1[KBETR], MinKBETR, ZMOB_TZONE_L1[LZONE], ZMOB_TZONE_L1[LZONE], ZMOB_TZONE_L1[INCO1], ZMOB_TZONE_L1[INCO1], ZMOB_TZONE_L1[WGBEZ], ZMOB_TZONE_L1[WGBEZ] )
场景2:分组内存在多个KBETR最小值行
若同一分组内有多行KBETR等于最小值,需指定排序规则确定取哪一行的目标值:
回溯列 = VAR GroupFilter = ALLEXCEPT( ZMOB_TZONE_L1, ZMOB_TZONE_L1[LZONE], ZMOB_TZONE_L1[INCO1], ZMOB_TZONE_L1[WGBEZ] ) VAR MinKBETR = CALCULATE(MIN(ZMOB_TZONE_L1[KBETR]), GroupFilter) VAR MinRows = FILTER(GroupFilter, ZMOB_TZONE_L1[KBETR] = MinKBETR) -- 替换[排序列名]为实际列(如行号、日期),ASC为升序,DESC为降序 VAR TargetRow = TOPN(1, MinRows, ZMOB_TZONE_L1[排序列名], ASC) RETURN MAXX(TargetRow, ZMOB_TZONE_L1[要回溯的列名]) -- 替换为目标列
复用适配方法
替换以下参数即可快速应用到其他业务场景:
ZMOB_TZONE_L1:你的数据表名称[LZONE], [INCO1], [WGBEZ]:分组依据的列集合[KBETR]:用于计算最小值的基准列[要回溯的列名]:需要获取对应值的目标列[排序列名](场景2):用于确定取值优先级的排序依据列
内容的提问来源于stack exchange,提问作者ABHISHEK KUMAR
相关产品推荐
相关产品推荐

