当TFS/VSTS遇上Power BI
引言
众所周知,要对TFS进行深入的图表分析,往往需要依赖于SQL Server Analysis Service和SQL Server Reporting Service。虽然随着TFS对敏捷项目的支持,内置了诸如累积流图、燃尽图等快捷图表;并且在最新的版本中还可以在仪表盘和查询中快捷的定义一些汇总图表。但是更复杂的分析还是做不到。
Power BI作为微软目前极力主推的一个敏捷自助型BI平台,理所当然可以和TFS/VSTS集成起来,对工作项进行全面的分析。
Power BI集成VSTS
如果你使用的是VSTS,那么很幸运,微软已经让Power BI和VSTS无缝的集成在一起了。你进行一些配置就可以直接使用了。
不过,在开始动手之前,我们来了解一下Power BI和VSTS集成的方式。目前,微软提供了两种方式来进行集成:内容包和数据连接器。
第一种,微软使用内容包(Content Pack)的形式,把针对VSTS进行分析的完整分析模型(表、关系和度量)和一系列的默认报表和仪表盘打包在一起,通过Power BI Service来复用。在运行报表的时候,通过VSTS的REST API来获取数据更新。
第二种,微软创建了一个数据连接器(Data Connector),通过访问VSTS在Azure中托管的一个Analysis Service,以便让你选择自己感兴趣的数据,并自由的建模和设计可视化报表。
两者的具体比较如下:
| 内容包 | 数据连接器 | |
|---|---|---|
| 首次发布时间 | May 27, 2015 |
January 9, 2017 |
| 最后更新时间 | September 2, 2015 | - |
| 数据源 | Team Services REST API |
Analytics Service |
| Power BI Service | ||
| Power BI Desktop | ||
| 可用数据 | ||
| 工作项-当前状态 | ||
| 工作项-历史 | ||
| 工作项-自定义 | ||
| 源代码 - Git | ||
| 源代码 - TFVC | ||
| 构建 - XAML | ||
| 包含元素 | ||
| 表 | ||
| 关系 | ||
| 度量 | ||
| 报表 | ||
| 仪表盘 | ||
| Power Query函数 | ||
| 认证 | ||
| Microsoft Account (Live ID) | ||
| Azure Active Directory (AAD) | ||
| OAuth | ||
| 个人访问令牌 | ||
| 其他账号 | ||
| 其他 | ||
| 支持大账号(工作项超过40万) | ||
| 支持自定义度量 | ||
| 支持混合其他数据源 | ||
使用内容包
- 进入Power BI Service账号。如果没有账号,那么这里申请一个试用账号:https://powerbi.microsoft.com/en-us/get-started/
- 点击左下角的“获取数据”按钮
- 选择“服务”,会看到一个Power BI应用的选择对话框,
- 输入“Visual Studio Team Services”进行搜索,第一个结果就是我们要找的内容包
- 点击”立即获取“,就可用开始安装了
- 需要输入VSTS的账号名称(即visualstudio.com前面的名称)和团队项目名称,点击下一步
- 这个时候,会提示用OAuth来登录VSTS,在弹出的OAuth验证对话框上点击确定就可用授权成功
- 到此,VSTS内容包已经安装到Power BI服务当中了。(不过由于刷新数据稍慢,需要多等一会才看得到数据)
更详细的说明,见官方文档:https://powerbi.microsoft.com/en-us/documentation/powerbi-content-pack-visual-studio/(注意不要看中文版的)
使用数据连接器
- 启动最新版的Power BI Desktop,在起始对话框上点“获取数据”,或者进入主界面后点“获取数据”
- 在获取数据库对话框中,“联机服务”找到“Visual Studio Team Services”,点“连接”,点“继续”
- 和内容包类似,需要输入VSTS的账号名称和团队项目名称,可选输入区域的名称,点“确定”
- 使用VSTS的账号进行登录(依然还是OAuth协议验证)后,点“连接”
- 到这里,大概率是报错的,因为我的账号也没有被选中启用“Analytics OData”服务。
更详细的说明,见官方文档:https://www.visualstudio.com/en-us/docs/report/powerbi/data-connector-connect
Power BI集成TFS
如果你用的是本地部署的TFS的话,就无法使用Power BI来直接连接TFS了。当然也不是没有办法。最直接的就是用Power BI Desktop去连接TFS的数据库(需要去理解TFS数据库的数据结构)。
当然一种更加容易的方式,就是充分利用TFS的查询功能导出数据到Power BI中。具体步骤如下:
- 在TFS中,根据要分析的主题所需的数据,对现有查询进行自定义或者创建全新的查询
- 在Excel中连接到这些查询,具体连接方式见:https://www.visualstudio.com/en-us/docs/work/office/bulk-add-modify-work-items-excel
- 保存查询得到的数据为xlsx文件
- 在Power BI中从xlsx文件导入TFS的数据,根据需要制作报表。
- 后续要更新数据的时候,先打开xlsx文件,在Team(团队)栏里面点刷新,然后保存文件;再打开PBIX文件,刷新数据。
当然,这种方式得到的数据,一般是当前状态信息,没有包含历史数据,所以在分析一些趋势类的报表的时候就需要一些技巧。
在这里,分享一个我根据导出的Bugs数据制作的Bug分析报表(甚至做出了Bug趋势图),供大家参考。下载链接见:https://zyg.blob.core.windows.net/share/Bug%E5%88%86%E6%9E%90.pbix
这个Power BI报表中,我根据导出的所有Bug数据,进行了基本的KPI分析、基于Tags的分组统计,甚至做出基于日期序列的累积趋势图。如下图所示:

当然,在这里就不展开了,具体的写法见pbix文件。
当TFS/VSTS遇上Power BI的更多相关文章
- 2019微软Power BI 每月功能更新系列——2月Power BI 新功能学习
哈喽,小伙伴们,我是小悦悦,好久不见~ 春节假期结束,新一轮的工作开始,祝大家猪年如意,开工大吉! 今天小悦悦带你走入猪年学习的正确打开方式——Power BI新一年的持续更新学习! Power ...
- 2019 Power BI最Top50面试题,助你面试脱颖而出系列<上>
距离4月还剩11天, 你是否还在投简历找工作而机会寥寥? 你是否还在四处奔波疲于面试而结果不意? ....... 知否知否, 天下武功唯快不破, 传说江湖有本Power BI 面试真香秘籍, 能助你快 ...
- Power BI与Tableau基于Google搜索上的比较
在数据分析领域里,不少的数据爱好者都会关心什么数据分析产品最好用?最重要的是,很多的企业也特别希望员工能真正知道如何使用这些BI平台以确保公司的投资是值得.同类的文章,小悦也曾发布过,可参考最近< ...
- 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表
1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...
- 一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题
千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi emb ...
- Power BI官方视频(3) Power BI Desktop 8月份更新功能概述
Power BI Desktop 8月24日发布了更新版本.现将更新内容翻译整理如下,可以根据后面提供的链接下载最新版本使用. 1.主要功能更新 1.1 数据钻取支持在线版 以前的desktop中进行 ...
- 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???
在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...
- 一起学微软Power BI系列-使用技巧(2)连接Excel数据源错误解决方法
上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题, ...
- Power BI入门教程
题记:这篇文章不仅是Power BI的入门教程,同时相对于Qlik Sense进行了简单比较. 最近把一个Qlik Sense的示例应用手动转成了Power BI的应用,把相关步骤和遇到的问题记录如下 ...
随机推荐
- SVG矢量图学习实例
从W3school上学习了一下SVG矢量图形,感觉和HTML相比还是有一些新的元素和属性的,一时间不能全部记住,特此留下笔记,供遗忘时作为参考 <!DOCTYPE html> <!- ...
- Luogu P4716 【模板】最小树形图
题目链接\(Click\) \(Here\) 不知道有什么用的一个东西.本来不打算再大量扩知识点了但还是学一下好了,反正也不难. 原理:树上父亲唯一,每次选最短的父边. 此时会有两类情况: 就这样正常 ...
- cmake 递归依赖
现在有3个模块:main.service.base,main依赖service的service.h.service依赖base的base.h,怎么写CMakeList.txt避免main直接耦合bas ...
- 转载:C++中堆和栈的区别
C++中堆和栈的区别,自由存储区.全局/静态存储区和常量存储区 文章来自一个论坛里的回帖,哪个论坛记不得了! 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和 ...
- input下拉带输入框
html5 自带的datalist实现 html代码: <input list="students"> <datalist id="students&q ...
- python开发基础之语法基础
一.知识点 (一)python介绍 1.Python被设计成一种高可读性的语言,它大量地使用了英语单词作为关键字,不像其他语言使用标点符号构成复杂的语法结构. 2.Pyton是支持面向对象的,支持在对 ...
- win10 64位Python 3.6.2 + Django 环境安装
一.安装Python3.6.2 1.下载安装包 https://www.python.org/downloads/release/python-362/ 2.一直下一步,记得到了这个界面全部勾选再下一 ...
- JAVA进阶17
---恢复内容开始--- 间歇性混吃等死,持续性踌躇满志系列-------------第17天 1.递归结构 递归是一种常见的解决问题的方法,即把问题逐渐简单化.递归的基本思想就是自己就是“自己调用自 ...
- java中几种加/解密API
如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...
- vue.js基础
1,感谢菜鸟教程 2,第一个实例 <html> <head> <meta charset="utf-8"> <title>Vue 测 ...