各位使用Power BI的小伙伴有很多是从事项目管理相关工作的,咱们的Power BI除了可以基于数据对现状展示以外,还可以对不同项目以及各个阶段工作量进行宏观展示。今天我们就来扒一扒如何利用Power BI做出项目Roadmap以及对项目一目了然的甘特图。
1.原始数据
案例:假如现在是2011年6月,你得知将有三款新产品将会纳入公司新的开发计划,开发计划如下表所示。作为部门经理,你需要分别计算出这三款新产品在未来开发期、运营期每一年的工作量,以便配备相应的资源,比如增加人员扩大预算等。
我们将基于以上较简单案例-三个产品,三个里程碑进行实践。产品周期由筹备日期开始,结束于下市日期。
2.数据录入
在Power Query中输入以上表格数据,生成下方原始数据表。
为了能更好的体现每周的实际情况,以及体现最后完成项目所需的周数,我们需要生成一列日期,这列日期的每一行数据代表了一周的时间段。
3.复制&引用的区别
但在新增加列之前,需要给大家介绍一种引用原始数据表生成一张新的表,并在此新表基础上做数据修整的方法,此方法可以使经过复制的新表格在今后原始数据表中数据源变化的情况下也随之变化。
在原始数据表上点击右键,在菜单中选择“引用”。即可看到新生成的,可以双击表格名称重新命名为“数据分析表”以示区别。
那很多朋友会问了,引用和复制到底有何区别呢?在这里给大家介绍下下图中复制和引用的区别:
复制:由母表复制,生成一张一模一样的子表。以后母表变化,子表不会再发生变化。
引用:由母表复制,生成一张一模一样的子表。但以后母表变化,子表也会发生同样变化;但子表变化,母表不会变化。
当你需要在清洗数据前保留一张原始表格的时候可以应用“引用”的功能,而且不用担心数据不随母表的变化而变化啦。
4.生成周列表
下面在数据分析表中我们新建一列日期,使这列日期的每一行数据代表了一周的时间段。而这列日期的区间就是从产品的筹备日期开始到产品的下市日期,即产品的全生命周期。
在Power Query中点击添加列的自定义列,并在自定义列公式中输入:
List.Dates(Date.EndOfWeek([筹备日期]),
Number.From([下市日期]- [筹备日期])/7,
Duration.From(7))
并将新列命名为周列表。在生成新的列后单击下方红框按钮并选择“扩展到新行”,即生成新的一列日期,可以看到所有的日期均为周日开始到周六结束。
其中Date.EndOfWeek([筹备日期])用以计算筹备日期当周的周日(因为公司每周以周一开始,周日作为最后一天)。List.Dates函数根据给定的起始日期,日期个数,日期间隔生成日期列表,其使用格式为:List.Dates(start as date, count as number, step as duration)
start as date:意思是时间列的起始值,案例中以筹备日期当周的最后一天为起始值。
count as number:指这个时间列一共含有多少值,案例中以康帅傅筹备日期和下市日期之间的天数除以7以算得期间共有多少周,即需要多少行显示期间的每一周。
step as duration:意思是持续时间,这里的意思是持续时间为7天,也就是每隔7天生成一个日期。
5.添加条件列
下一步需要加入新列以区分产品周期的两个阶段—计划期与运营期。此步骤也是添加条件列的方法:在Power Query中点击添加列中的条件列,并按下图填好。
其含义是当周列表中的值≤上市日期,则在新列中输入筹备阶段;如果当周列表中的值>上市日期,则在新列中输入运营阶段;其他情况则输入NA。
以上完成后则再添加一个自定义列,并输入:Date.Year([周列表]),此步骤是将周列表中的年新增一列提出来单独放在一列中,并重命名列名为年。
6.生成阶段计划表
在这个案例中需要展现一个甘特图,而甘特图所展现的特征就是不同的项目在不同的时段分别所处的进度/阶段,这就需要我们抓住这几个维度的数据进行整理。
我们需要新建一个表格,并在公式栏输入下图公式:
VAR/Return函数有专家将其比喻为收音机函数,VAR函数工作原理是先录制一个变量,再配合Return函数把录制好的内容拿出来反复使用。并且在Power BI公式栏输入的时候,智能提示会特别提醒我们使用已经定义好的VAR函数。
上图中即先用VAR函数定义好a & b,并用Return函数调用a & b,通过Union函数将a/b两张表进行简单合并展现出新生成的阶段计划表。
而VAR a 中的Summarizecolumns函数表示生成一张包括原始数据表中产品名称和上市日期的表格,并在此基础上扩展出标题为开始日期的新列,开始日期这列数据来源为原始数据中的筹备日期去重后的列,且行信息与原始数据表中行信息相匹配,比如原始数据表中康帅傅筹备日期为2012年9月27日,在开始日期这行信息所对应的产品名称也为康帅傅。Values函数是生成一张去重后的标准表格。
有了以上表格后还需要添加一列以明示出项目此时段所处阶段,点击新建列并输入:
产品阶段 = IF('阶段计划表'[结束日期]='阶段计划表'[上市日期],"筹备阶段",IF('阶段计划表'[上市日期]='阶段计划表'[开始日期],"运营阶段","NA"))
7.数据可视化
接下来的工作是需要将整理好的数据在Power BI中以图形化的形式展现出来。Power BI是一个可视化插件开源的软件,后方有源源不断的视图更新供大家使用。数据可视化获取方法有两种:
①是在登录Power BI后在主页的自定义视觉对象中点击来自应用商店。这里经常会更新开发者开发的可视化插件。②是在微软https://store.office.com/中寻找合适的插件,然后以.pbiviz格式下载下来,再导入到Power BI中,以表现出你所需要的视觉效果。
在本案例中我们选择的是以矩阵展现各个阶段各个项目所需的工作资源(标准人力情况下的周数),以甘特图展示项目生命周期中各阶段所处的时间段。
1) 矩阵:在右侧可视化中点击矩阵。
并将数据分析表中的项目阶段&产品名称拖入行,将年拖入列,将周列表拖入值并点击下拉菜单选择“计数”。
此时一个完整的体现各个项目各个阶段所需周别(资源)的表格完成,此表格将跟随数据源变换而变化。
2) 甘特图:
作为项目运营,甘特图实为一个可以代替千言万语亘古不变的好图。但在Power BI自带的视图中并没有甘特图供使用,这就需要我们在Power BI主页的自定义视觉对象中点击来自应用商店,搜索“as Timeline”,点击添加后,在我们的Power BI可视化区就多了一个如下图的as Timeline的小图标,点击他。
然后根据下图将阶段计划表中的字段拖入对应的框中,并在格式中设置格式颜色,甘特图就做出来了。
通过上面的案例各位看官应该了解了如何用Power BI建立项目各个阶段工作量以及用甘特图展示项目进展。再进一步,如果新产品有上百种,项目计划分了10多个阶段并且每个阶段的工作量权重不同,只要在此基础上新生成一列权重,并生成资源计算公式的度量值去代替周列表的计数即可。