当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, 2015January 9, 2017
最后更新时间September 2, 2015-
数据源Team Services REST APIAnalytics Service
Power BI Servicecheckedchecked
Power BI Desktopuncheckedchecked
可用数据
工作项-当前状态checkedchecked
工作项-历史checkedchecked
工作项-自定义uncheckedchecked
源代码 - Gitcheckedunchecked
源代码 - TFVCcheckedunchecked
构建 - XAMLcheckedunchecked
包含元素
checkedchecked
关系checkedunchecked
度量checkedunchecked
报表checkedunchecked
仪表盘checkedunchecked
Power Query函数uncheckedchecked
认证
Microsoft Account (Live ID)checkedchecked
Azure Active Directory (AAD)checkedchecked
OAuthcheckedchecked
个人访问令牌uncheckedchecked
其他账号uncheckedchecked
其他
支持大账号(工作项超过40万)uncheckedchecked
支持自定义度量uncheckedchecked
支持混合其他数据源uncheckedchecked

使用内容包

  1. 进入Power BI Service账号。如果没有账号,那么这里申请一个试用账号:https://powerbi.microsoft.com/en-us/get-started/
  2. 点击左下角的“获取数据”按钮
  3. 选择“服务”,会看到一个Power BI应用的选择对话框,
  4. 输入“Visual Studio Team Services”进行搜索,第一个结果就是我们要找的内容包
  5. 点击”立即获取“,就可用开始安装了
  6. 需要输入VSTS的账号名称(即visualstudio.com前面的名称)和团队项目名称,点击下一步
  7. 这个时候,会提示用OAuth来登录VSTS,在弹出的OAuth验证对话框上点击确定就可用授权成功
  8. 到此,VSTS内容包已经安装到Power BI服务当中了。(不过由于刷新数据稍慢,需要多等一会才看得到数据)

更详细的说明,见官方文档:https://powerbi.microsoft.com/en-us/documentation/powerbi-content-pack-visual-studio/(注意不要看中文版的)

使用数据连接器

  1. 启动最新版的Power BI Desktop,在起始对话框上点“获取数据”,或者进入主界面后点“获取数据”
  2. 在获取数据库对话框中,“联机服务”找到“Visual Studio Team Services”,点“连接”,点“继续”
  3. 和内容包类似,需要输入VSTS的账号名称和团队项目名称,可选输入区域的名称,点“确定”
  4. 使用VSTS的账号进行登录(依然还是OAuth协议验证)后,点“连接”
  5. 到这里,大概率是报错的,因为我的账号也没有被选中启用“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中。具体步骤如下:

  1. 在TFS中,根据要分析的主题所需的数据,对现有查询进行自定义或者创建全新的查询
  2. 在Excel中连接到这些查询,具体连接方式见:https://www.visualstudio.com/en-us/docs/work/office/bulk-add-modify-work-items-excel
  3. 保存查询得到的数据为xlsx文件
  4. 在Power BI中从xlsx文件导入TFS的数据,根据需要制作报表。
  5. 后续要更新数据的时候,先打开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的分组统计,甚至做出基于日期序列的累积趋势图。如下图所示:

image

当然,在这里就不展开了,具体的写法见pbix文件。

转载于:https://www.cnblogs.com/redmoon/p/7482515.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HashMap深度解析:一文让你彻底了解HashMap

写在前面HashMap是Map族中最为常用的一种,也是 Java Collection Framework 的重要成员。本文首先给出了 HashMap 的实质并概述了其与 Map、HashSet 的关系,紧接着给出了 HashMap 在 JDK 中的定义,并结合源码分析了其四种构造方式。最后&#…

Bzoj3628: [JLOI2014]天天酷跑

3628: [JLOI2014]天天酷跑 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 121 Solved: 44[Submit][Status][Discuss]Description 在游戏天天酷跑中,最爽的应该是超级奖励模式了吧,没有一切障碍,可以尽情的吃金币,现在请你控制…

python_线程、进程和协程

线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。 1 #!/usr/bin/env python2 #codingutf-83 __author__ yinjia4 5 6 import threading,time7 8 def show(arg):9 time.sleep(2) 10 print(线程: str(arg)) 11 12 for i in range(…

AppDelegate瘦身之服务化

有没有觉得你的AppDelegate杂乱无章?代码几百行上千行?集成了无数的功能,如推送、埋点、日志统计、Crash统计等等,感觉AppDelegate无所不能。 来一段一般的AppDelegate代码,来自网上一篇文章: UIApplicatio…

第四章:手机平板要兼顾-探究碎片

碎片是什么? 碎片(Fragment)是一种可以嵌入在活动(Activity)中的 UI 片段,它能让程序更加合理和充分的利用大屏幕的空间,因而在平板上应用的非常广泛。 碎片的使用方式 静态嵌入动态加载碎片和活…

Android Studio 3.4增可视化资源管理工具 可管理和预览项目资源

经过6个月的开发时间,网络大厂17日发布了最新版的App开发IDE Android Studio 3.4,现在就能够下载使用,除了有超过300个错误修护和稳定度增强之外,在开发、建置和测试App阶段,都推出了一些小的新功能和工具,…

Python安装、使用MySQL数据库

本机安装的python版本为Python 2.7(win32 bit) 从http://www.codegood.com/archives/129下载MySQL-python-1.2.3.win32-py2.7.exe,点击安装 如果是win版还需要下载:libguide40.dll 和 libmmd.dll这两个文件,下载后放入到到C:\WINDOWS/syste…

pytorch 安装

安装pytorch时,官网不能选择版本。原以为是浏览器问题,换了几个浏览器都不行。 后来FQ之后,就能选择版本了。 sudo pip install torch torchvision转载于:https://www.cnblogs.com/rabitvision/p/8908757.html

《JavaScript 高级程序设计》精读笔记

本系列读书笔记是我通过学习《Javascript 高级程序设计》第3版时结合自己的理解、概括、精炼然后加以一定的拓展,总结而来的,非常适合具有一定基础,同时又想把 JS 基础学更好的童鞋,当然更希望得到大家的反馈于建议,比…

struts2实现文件查看、下载

CreateTime--2017年9月7日10:25:33 Author:Marydon struts2实现文件查看、下载 1.界面展示 <a style"color: #199ED8;" target"_blank" href"<c:url value"/telemedicine/reseCons/viewFile.do?fileName201516529IO.jpg"/>"…

css文本设置

常用的应用文本的css样式&#xff1a; color 设置文字的颜色&#xff0c;如&#xff1a; color:red; font-size 设置文字的大小&#xff0c;如&#xff1a;font-size:12px; font-family 设置文字的字体&#xff0c;如&#xff1a;font-family:微软雅黑; font-style 设置字体…

关键字static

原文出处&#xff1a;http://cmsblogs.com/ 『chenssy』 一、 static代表着什么 在Java中并不存在全局变量的概念&#xff0c;但是我们可以通过static来实现一个“伪全局”的概念&#xff0c;在Java中static表示“全局”或者“静态”的意思&#xff0c;用来修饰成员变量和成员方…

[IoC容器Unity]第三回:依赖注入

上节介绍了&#xff0c;Unity的Lifetime Managers生命周期&#xff0c;Unity具体实现依赖注入包含构造函数注入、属性注入、方法注入&#xff0c;所谓注入相当赋值&#xff0c;下面一个一个来介绍。 2.构造函数注入 Unity利用Resolve方法解析一个对象&#xff0c;都是调用注册类…

Apache CarbonData 1.5.0编译及安装

2019独角兽企业重金招聘Python工程师标准>>> 一、编译环境描述 OpenStack创建五个虚拟机&#xff0c;其中1个主节点&#xff08;hostname为bigdatamaster&#xff09;&#xff0c;4个从节点&#xff08;hostname分别为&#xff0c;bigdataslave1、bigdataslave2、bi…

JS控制网页全屏

在谷歌&#xff0c;IE等浏览器中&#xff0c;点击F11按键会进入网页全屏模式&#xff0c;如同看电影的剧场模式&#xff0c;这个在代码中可以通过JS来实现&#xff0c;简单说下在实现这个需求后的个人总结&#xff1a; 底层网页是已经加载完毕的&#xff0c;这时我们需要的全屏…

HDU 3966-Aragorn's Story 树链剖分+树状数组

题目链接 题意&#xff1a;有一棵树&#xff0c;每个节点有权值 有三种操作&#xff1a; I c1 c2 k 从节点c1到节点c2的路径上每个节点权值增加kD c1 c2 k 从节点c1到节点c2的路径上每个节点权值减少kQ i 查询节点i的权值是多少思路&#xff1a; 树链剖分处理出来的链放在数组中…

Filter介绍

Filter 可认为是 Servlet的一种 “ 加强版 ”&#xff0c;它主要用于对用户请求进行预处理&#xff0c; 也可以对HttpServletResponse 进行后处理&#xff0c;是个典型的处理链。Filter 也可对用户请求生成响应&#xff0c;这一 点与Servlet 相同&#xff0c; 但实际上很少会使…

LeetCode算法题-Jewels and Stones(Java实现)

这是悦乐书的第313次更新&#xff0c;第334篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题&#xff08;顺位题号是771&#xff09;。字符串J代表珠宝&#xff0c;S代表你拥有的石头。S中的每个字符都是你拥有的一种石头。计算S中有多少石头也是珠宝。J中…

python --- 二分查找算法

二分查找法&#xff1a;在我的理解中这个查找方法为什么会叫二分呢&#xff0c;我认为是将要查询的一个列表分成了两份&#xff0c;然后在利用某个值来进行比较&#xff0c;在一个不断循环的过程中来找出我们要找的某一个值。 废话不多说&#xff0c;先上代码&#xff1a; 1 de…

面试题

1. block 的作用由来&#xff0c;跟delegate的区别。 2. swift 的枚举。 3. iOS保存一个对象。转载于:https://www.cnblogs.com/studyNT/p/7499779.html