基于Matrix视觉对象生成甘特图线条的DAX代码需求
用DAX在Matrix视觉对象中实现投资/运维阶段甘特图线条
核心思路
要在Matrix里生成连续的甘特图线条,不能仅标记单个年份为1/0,而是要标记整个时间区间内的所有年份,再通过数据条格式将连续的1转化为可视化线条。
前提准备
- 确保你有包含项目时间节点的事实表(例:
项目时间表),字段至少包括:项目名称投资终止年份运维启动年份
- 建立包含连续年份的日期维度表(避免年份断层),可以用以下DAX生成:
之后将日期表与事实表通过年份字段建立关系(如果事实表的年份是数值型,直接关联;是日期型则提取年份后关联)。日期维度 = ADDCOLUMNS( CALENDARAUTO(), "年份", YEAR([Date]) )
DAX度量值编写
1. 投资阶段线条标记
标记从项目起始(或最早年份)到投资终止年的所有年份:
投资阶段标记 = VAR 当前年份 = SELECTEDVALUE('日期维度'[年份]) VAR 项目终止年 = SELECTEDVALUE('项目时间表'[投资终止年份]) VAR 项目起始年 = MINX(ALLSELECTED('项目时间表'), '项目时间表'[项目起始年份]) -- 若无起始年,可替换为MIN('日期维度'[年份]) RETURN IF(当前年份 >= 项目起始年 && 当前年份 <= 项目终止年, 1, 0)
2. 运维阶段线条标记
标记从运维启动年到项目结束(或最晚年份)的所有年份:
运维阶段标记 = VAR 当前年份 = SELECTEDVALUE('日期维度'[年份]) VAR 运维启动年 = SELECTEDVALUE('项目时间表'[运维启动年份]) VAR 项目结束年 = MAXX(ALLSELECTED('项目时间表'), '项目时间表'[项目结束年份]) -- 若无结束年,可替换为MAX('日期维度'[年份]) RETURN IF(当前年份 >= 运维启动年 && 当前年份 <= 项目结束年, 1, 0)
Matrix视觉对象配置
- 行区域:拖入
项目时间表[项目名称] - 列区域:拖入
日期维度[年份] - 值区域:添加上述两个度量值
- 格式设置:
- 选中每个度量值的字段,进入「条件格式」→「数据条」
- 选择对应颜色(例:投资阶段用蓝色,运维阶段用绿色)
- 勾选「仅显示数据条」,隐藏数值
- 调整数据条的宽度和对齐方式,让线条更清晰
问题排查
如果之前用IF仅标记单个年份无效,原因是单个1只能显示一个点,无法形成连续线条,必须覆盖整个时间区间内的年份,才能通过数据条渲染成连续的甘特图线条。
内容的提问来源于stack exchange,提问作者mal991010
相关产品推荐
相关产品推荐

