You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Matrix视觉对象生成甘特图线条的DAX代码需求

用DAX在Matrix视觉对象中实现投资/运维阶段甘特图线条

核心思路

要在Matrix里生成连续的甘特图线条,不能仅标记单个年份为1/0,而是要标记整个时间区间内的所有年份,再通过数据条格式将连续的1转化为可视化线条。

前提准备

  1. 确保你有包含项目时间节点的事实表(例:项目时间表),字段至少包括:
    • 项目名称
    • 投资终止年份
    • 运维启动年份
  2. 建立包含连续年份的日期维度表(避免年份断层),可以用以下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视觉对象配置

  1. 行区域:拖入项目时间表[项目名称]
  2. 列区域:拖入日期维度[年份]
  3. 值区域:添加上述两个度量值
  4. 格式设置:
    • 选中每个度量值的字段,进入「条件格式」→「数据条」
    • 选择对应颜色(例:投资阶段用蓝色,运维阶段用绿色)
    • 勾选「仅显示数据条」,隐藏数值
    • 调整数据条的宽度和对齐方式,让线条更清晰

问题排查

如果之前用IF仅标记单个年份无效,原因是单个1只能显示一个点,无法形成连续线条,必须覆盖整个时间区间内的年份,才能通过数据条渲染成连续的甘特图线条。

内容的提问来源于stack exchange,提问作者mal991010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:32:06