如何用Power BI原生功能创建带层级任务的类甘特图:着色与空节点处理
基于Power BI原生功能+DAX实现类甘特图的解决方案
一、任务条按任务状态着色
处理任务表重复数据
由于FClick中同一任务ID对应多行(多标签),先创建去重计算表确保每个任务唯一关联状态:任务主表去重 = SUMMARIZE( FClick, FClick[id], FClick[name], FClick[date_created], FClick[due_date], FClick[status_name] )建立该表与DimTarefa的关系(通过
ID字段)。用原生条形图模拟甘特图并着色
使用堆积条形图实现甘特效果:- 轴:拖入DimTarefa的层级任务名称(如
Tarefa_N1至Tarefa_N4),设置为层次结构展示任务层级。 - 值:将
任务主表去重[date_created]设为起始值,任务主表去重[due_date]设为结束值(在字段值的下拉菜单中选择对应选项)。 - 颜色:将
任务主表去重[status_name]拖入「颜色」字段,任务条会自动按状态着色。
- 轴:拖入DimTarefa的层级任务名称(如
二、隐藏中间空节点
方法1:在数据模型层过滤
修改DimTarefa的DAX表达式,直接过滤掉空节点:
DimTarefa = VAR 原始层级表 = -- 替换为你原有的构建任务层级的DAX代码 PATHITEM(...) -- 示例原有逻辑 RETURN FILTER( 原始层级表, -- 过滤掉ID为空或各层级任务名称为空的行 NOT(ISBLANK([ID])) && NOT(ISBLANK([Tarefa_N1])) && NOT(ISBLANK([Tarefa_N2])) && NOT(ISBLANK([Tarefa_N3])) && NOT(ISBLANK([Tarefa_N4])) )
方法2:在可视化层过滤
在条形图的「筛选器」面板添加以下筛选条件:
- 对每个层级字段(
Tarefa_N1至Tarefa_N4),设置「不包含空白」。 - 添加筛选条件:
RELATED('任务主表去重'[id]) <> BLANK(),确保仅显示有实际任务关联的节点。
若使用层次结构展开,可在可视化「格式」面板的「层次结构」设置中,取消勾选「显示空行」选项(若存在)。
内容的提问来源于stack exchange,提问作者spiderrony
相关产品推荐
相关产品推荐

