BI技巧丨矩阵甘特图

文章讲述了如何在PowerBI中利用DAX公式和自定义日期表来创建甘特图,以展示项目进度。通过构建日期表、条件判断和度量值,实现了矩阵形式的甘特图,并展示了如何添加额外的判断元素如当前日期,以增强可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BOSS:白茶,我们最近有很多项目,能不能做个甘特图?
白茶:没问题!(应用市场上随便找个甘特图就OK了嘛!)
BOSS:对了,不要那种点进来会有点卡,等半天的那种,要保持速度!
白茶:(#¥%@!&)没问题!

日常分析时,当我们需要针对某一个连续事件进行进度更新的时候,往往会采用甘特图来进行展示,这样肉眼看起来直观,方便一眼定位到目前的项目节点。

在应用市场中,有两个应用可以帮助大家满足制作甘特图的需求:
Gantt和Gantt Chart By MAQSoftware。

除了使用应用市场的应用以外,还可以通过内置的矩阵,来实现甘特图的制作。对比市场的应用,内置的图表无论是性能上还是兼容性上都会更优一些。
案例数据:

案例数据只有两张表,一张维度表,索引使用,一张项目状态表。将数据导入到PowerBI中,模型关系如下:

白茶模拟的数据比较简单,但实际应用中,会存在项目中断重启的情况,因此为了能够在完整的维度下展示,我们需要构建一张日期表。

Dim_Data = 
VAR MaxxData =
    MAX (
        MAXX ( ALL ( 'Fact_Status' ), [开始日期] ),
        MAXX ( ALL ( 'Fact_Status' ), [结束日期] )
    )
VAR MinxData =
    MIN (
        MINX ( ALL ( 'Fact_Status' ), [开始日期] ),
        MINX ( ALL ( 'Fact_Status' ), [结束日期] )
    )
VAR Result =
    GENERATE (
        CALENDAR ( MinxData, MaxxData ),
        VAR DA = [Date]
        VAR FactYear =
            YEAR ( DA )
        VAR FactQuarter =
            "Q" & FORMAT ( DA, "Q" )
        VAR FactMonth =
            FORMAT ( DA, "M" )
        VAR FactDAY =
            DAY ( DA )
        RETURN
            ROW (
                "年度", FactYear,
                "季度", FactQuarter,
                "月份索引", VALUE ( FactMonth ),
                "月份", FactMonth & "月",
                "日", FactDAY
            )
    )
RETURN
    Result

模型关系更新如下:

注:新生成的日期表,不需要和原本的模型建立关系。

思考一下
接下来需要做什么?
1
2
3
获取事实表的开始日期和结束日期,再根据维度表进行条件判断即可。
编写如下DAX:
开始日期:

001.StartData = 
MONTH ( SELECTEDVALUE ( 'Fact_Status'[开始日期] ) )

结束日期:

002.EndData = 
MONTH ( SELECTEDVALUE ( 'Fact_Status'[结束日期] ) )

维度日期:

003.ConditionData = 
SELECTEDVALUE ( 'Dim_Data'[月份索引] )

条件判断:

004.ProjectStatus = 
VAR ConditionStatus =
    IF (
        AND (
            [003.ConditionData] >= [001.StartData],
            [003.ConditionData] <= [002.EndData]
        ),
        1,
        0
    )
VAR Result =
    IF (
        AND ( HASONEFILTER ( 'Dim_Sort'[项目阶段] ), ConditionStatus = 1 ),
        1,
        BLANK ()
    )
RETURN
    Result

将度量值拉到矩阵中进行展示如下:

看起来矩阵已经有甘特图的样子了,我们继续编写如下代码:
配色:

005.FillColor = 
IF ( [004.ProjectStatus] = 1, "#00B050", "#FFFFFF" )

将上述度量值,设置为矩阵值的背景和字体颜色:

再对矩阵一些细节进行调整,展示效果如下:

可以看到,已经将甘特图的样式,在矩阵中复现。除了根据日期节点进行判断以外,我们也可以加一些其他元素做判断,例如:项目的状态、当前日期节点等。
这里我们用当前日期节点判断标识一下:

006.FillColorToday = 
VAR TodayMonth =
    MONTH ( TODAY () )
VAR Result =
    IF (
        [004.ProjectStatus] = 1,
        IF ( [003.ConditionData] = TodayMonth, "#FF0000", "#00B050" ),
        "#FFFFFF"
    )
RETURN
    Result

展示效果如下:

这里是白茶,一个PowerBI的初学者。

PowerBI系列课程之内置视觉对象和常用自定义视觉对象专题 内置视觉对象Stacked bar chart  堆积条形图Stacked column chart 堆积柱形图 - X轴按类别显示Clustered bar chart  簇状条形图Clustered column chart  簇状柱形图100% Stacked bar chart 百分比堆积条形图100% Stacked column chart 百分比堆积柱形图Line Chart  折线图-预测功能Area Chart  面积图Stacked Area Chart  堆积面积图Line and stacked column chart 折线和堆积柱形图-双Y轴Line and clustered column chart 折线和簇状柱形图Ribbon Chart  丝带图Waterfall Chart  瀑布图Funnel  漏斗图Scatter chart  散点图Pie Chart  饼图 Donut Chart 环形图TreeMap 树状图Map  地图 Filled Map 着色地图Shape Map 形状地图Gauge 仪表Card 卡片图Multi-row card 多行卡片KPI  Table 表格-条件样式Matrix 矩阵详解  Key influencers  关键影响者Decomposition tree 分解树Q&A 问答2021.6月增加分页表格视觉对象自定义视觉对象视觉对象使用建议下载排名前20,免费实用的视觉对象 AllDemo pbix介绍 Pareto 帕累托图DrillDown Donut  可钻取饼图Word Cloud   文字云Gantt  甘特图Infographic Designer  信息柱状图Timeline Slicer  时间轴切片器Chiclet Slicer 图片切片器Text Filter 文本筛选器HierarchySlicer  层级切片器Pulse Chart脉动图Power KPI Matrix  KPI矩阵Animated Bar Chart Race 动态条形图Advance Card  高级卡片Sankey Chart  桑基图Radar Chart   雷达图Dial Gauge  码表Waffle 华夫占比图Quadrant 象限图 Tornado Chart  龙卷风图Histogram Chart  直方图 Box and Whisker chart 盒线图Sunburst  阳光图Chord Chart 和弦图Bullet Chart  子弹图HTML Content  html解析视觉对象  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fabric丨白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值