美文网首页BI学习笔记
BI技巧丨矩阵甘特图

BI技巧丨矩阵甘特图

作者: Fabric丨白茶 | 来源:发表于2023-05-13 20:28 被阅读0次

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的初学者。


相关文章

  • BI技巧丨矩阵高亮

    BOSS:白茶,问你个事,PowerBI里面能不能让我选择哪个条件,对应的数据就在表格里面高亮显示啊?白茶:(黑人...

  • BI技巧丨RankxYoY

    群友:PowerBI可以实现两年的排名差异么?白茶:可以!安排! 本期的问题,来自于群内小伙伴的一个实际应用场景。...

  • BI技巧丨均值之上

    BOSS:白茶呢?!今天没来么?同事:来了啊,老板,不过你上次不是罚他扫厕所么?厕所了!BOSS:哎哟!这个时候扫...

  • BI技巧丨粒度切换

    白茶在很久之前,写过关于笛卡尔积的两个函数。 GENERATE函数与CROSSJOIN函数。 传送门:《笛卡尔积》...

  • BI技巧丨权限轴

    BOSS:(愁眉苦脸)白茶呢?同事:(推一推)醒醒,白茶,BOSS喊你!白茶:(一脸懵)咋了,老板?BOSS:(一...

  • BI技巧丨当月期初

    最近在群里,小伙伴提出了一个有意思的算法逻辑,决定分享给大家。 先来看看本期的案例数据: 如图,数据相对而言比较简...

  • BI技巧丨权限下载

    BOSS:白茶,问你个事,就是报表的下载权限,这个能控制不?白茶:可以啊,老板,工作区限制成员身份就可以啊。BOS...

  • BI技巧丨筛选重置

    在开发的过程中,用户最喜欢,最习惯看的,还是类似于Excel形式的明细表格。 执行层用户需要的,往往是一张Deta...

  • BI技巧丨财务累计

    日常使用PowerBI制作看板过程中,往往需要我们在看板的第一浏览区将用户最关注的核心指标呈现出来。白茶在之前的文...

  • BI技巧丨目标达成

    BOSS:哎,今年这个行情,也不知道收益如何...对了!那个,什么茶来着?同事:喂!白茶,醒醒!(小声哔哔:BOS...

网友评论

    本文标题:BI技巧丨矩阵甘特图

    本文链接:https://www.haomeiwen.com/subject/mjkkkdtx.html