基于间接关联表创建Home_Away计算列的Power BI可视化问题
解决方法
方案1:新增维度表+度量值实现
创建Home/Away维度表
在Power BI中新建表,输入DAX代码:Region_Type = DATATABLE("Home_Away", STRING, {{"Home"}, {"Away"}})这个表仅包含两行数据,用于强制每个Owner Region生成对应的Home、Away两行记录。
编写判断度量值
创建度量值,用于判断当前Owner Region在对应Home/Away类别下是否存在匹配数据:Region_Match_Status = VAR Current_Owner = SELECTEDVALUE('A'[Owner Region]) VAR Current_Type = SELECTEDVALUE(Region_Type[Home_Away]) -- 获取当前Owner Region关联的所有Execution Region VAR Linked_Execution_Regions = CALCULATETABLE( VALUES('B'[Execution Region]), ALLSELECTED('A'), 'A'[Owner Region] = Current_Owner ) RETURN SWITCH( Current_Type, "Home", IF(Current_Owner IN Linked_Execution_Regions, "有数据", BLANK()), "Away", IF(NOT(Current_Owner IN Linked_Execution_Regions), "有数据", BLANK()) )配置可视化表格
- 将
A[Owner Region]拖入表格第一列 - 将
Region_Type[Home_Away]拖入第二列 - 可选:拖入上述度量值,筛选度量值不为空的行(仅显示有实际数据的记录);若需强制显示所有Owner Region的Home/Away行,可跳过筛选。
- 将
方案2:直接生成计算表
如果希望预先得到包含所有Owner Region+Home/Away组合的基础表,可创建计算表:
Owner_HomeAway_Combination = VAR Owner_List = VALUES('A'[Owner Region]) VAR Type_List = DATATABLE("Home_Away", STRING, {{"Home"}, {"Away"}}) -- 生成所有Owner Region与Home/Away的笛卡尔积 RETURN CROSSJOIN(Owner_List, Type_List)
之后基于这个计算表,关联原表数据编写度量值(如计数、求和),再用于可视化展示。
问题根源说明
原DAX的问题在于使用MAX('B'[Sales Person ID])和MAX('B'[Execution Region])做聚合,移除Execution Region列后,聚合逻辑只会返回单一值,无法拆分Home/Away两类记录。通过新增维度表生成固定的Home/Away类别,再结合上下文筛选获取关联的Execution Region,就能实现每个Owner Region对应两行的需求。
内容的提问来源于stack exchange,提问作者Franalyze
相关产品推荐
相关产品推荐

