此文仅介绍XPivot的通用功能,如有对项目中定制的高级功能感兴趣的可留言讨论
XPivot当前版本v2.1 【2015-03-04发布】
v2.1 下载链接: http://pan.baidu.com/s/1i3sx3Sx 密码: 1ra0
安装注意事项:
安装文件分为32位和64位两个版本,请对照自己的excel版本下载安装(注意不是windows版本),下图所示为excel 2010和excel 2013的版本号查看方式
安装后在使用过程中如果报以下错误信息,请手动对C:\Program Files\XPivot\XPivot 2.0\XPivot 2.0.dll.config文件授予当前用户可写的权限
-
Logon
SSAS之跨域鉴权从来就是件麻烦事,因为SSAS的权限控制是基于windows用户创建的Role, 所以关于服务端鉴权有个原则问题,也是很多新手很容易混淆的问题,就是被授权的用户必须是SSAS服务端能够识别的服务端用户,而不是你的访问客户端用户,所以官方鼓励的是服务端和客户端在同一个域内,服务端可以很方便的对域名授权,而现实中很多案例是服务端和客户端不在同一个域内,甚至两者都不在任何域内,那么主流的解决方案有以下几种(此处仅讨论excel客户端的方案):
- netonly runas,原理是在excel进程创建之前就把服务端账户credential信息写入startupinfo里,之后这个excel进程就可以服务端用户身份访问SSAS,缺点是用户每次新建excel文件都需要进行一次netonly runas登陆鉴权,而且在双击打开已有的excel report时会发现无法修改更新pivot table,因为此时的excel进程是没有登陆授权的,就用户体验而言真的是不胜其烦,有兴趣的可以参考
https://technet.microsoft.com/en-us/sysinternals/cc300361.aspx
2. 配置客户端windows用户密码和SSAS服务端用户密码一致,以达到欺骗服务端完成鉴权的目的,这个方案貌似完美的解决了上个方案的问题,可以完整的配置用户权限,终端用户无需每次都验证身份,然而实际生产环境还是会造成一些不必要的麻烦,例如客户端用户修改了密码,造成和服务端同名用户的密码不一致,那么访问权限也就被终止了
3. http方式访问,如果配置的web服务器是匿名验证,就没有任何权限控制可言,所有访问客户端的权限都是一样的; 如果配置的是Basic验证(没有域环境的时候貌似只能用Basic代替Windows验证),安全性方面也不太放心
4. excel客户端访问SSAS,除了以上几种方案,其实也是支持直接访问的,需要开通服务端的2383端口(默认的ssas端口)给客户端访问,默认的访问向导输入服务端账户密码进行到最后一步新建pivottable时会报传输层异常,是因为这一步丢失了账户密码信息.
XPivot插件支持以上所有登陆鉴权方式, 下面先看第一步,配置数据源【Source Config】
打开数据源配置会看到以下几项配置信息作为一组数据源,如果需要配置多组数据源的话,请用竖线|分隔,提交配置后就会在上面的下拉框里罗列所有的数据源组
Cube=Adventure Works; 此项配置内容必须是Cube的名称,见下图高亮处
Cube Data Source=.; 此项配置是Cube的数据源,如果是同一域内或者第四种访问方式只需配置ip即可,如果是http访问方式,需要配置为完整的http://....msmdpump.dll路径
Cube Initial Catalog=AdventureWorksDW2012Multidimensional-SE; 此项配置是ssas数据库实例名,见上图的Databases下面的数据库名
Cube Integrated Security=SSPI;此项配置可选,如果设置了此项,XPivot将忽略登陆账户信息,直接使用当前windows用户访问ssas
DW Data Source=.; 以下配置项均为可选项,配置的是DW数据库的连接信息,如果不配置的话就只能访问SSAS Cube, XPivot里与DW相关的功能即无效
DW Initial Catalog=AdventureWorksDW2012;
DW Integrated Security=SSPI; 此配置项可选,如果未做设置,就必须先登陆XPiovt才可正常使用DW相关的功能,需要注意的是,如果Cube Integrated Security和DW Integrated Security均未做设置,为了使登陆XPivot的身份能够顺利访问DW和Cube,必须在服务端配置Cube和DW使用同样的账户密码,只不过前者是windows用户,后者是db用户
XPivot的登陆窗口很简单,输入账户密码即可,帐户名如果是域名的话,需要输入完整的域名,例如:DomainName\DomainUser,图中所示的test1是个windows用户,所以登陆后会在XPivot Logon按钮下显示.\test1的账户信息,登陆窗口的Permanently Bind To Computer选项框如果选中再登陆的话,XPivot会记住这个账户身份,以后任何时间在同一台电脑上打开excel,都会默认使用此账户身份访问服务端,如果登陆时没有选中这个选项框的话,这个登陆的身份生命周期就仅仅是当前打开的excel了,关闭这个excel工作薄,这个身份就会消失,适用于临时的切换身份权限
- netonly runas,原理是在excel进程创建之前就把服务端账户credential信息写入startupinfo里,之后这个excel进程就可以服务端用户身份访问SSAS,缺点是用户每次新建excel文件都需要进行一次netonly runas登陆鉴权,而且在双击打开已有的excel report时会发现无法修改更新pivot table,因为此时的excel进程是没有登陆授权的,就用户体验而言真的是不胜其烦,有兴趣的可以参考
-
New PivotTable
如果此时尚未登录,并且数据源配置的不是Integrated Security=SSPI,会弹出登陆窗口,如果已经登陆,或者配置了SSPI,则可直接在当前单元格插入数据透视表
-
New Table
如果当前单元格为空,则弹出文本编辑框,用于输入sql脚本,脚本中可用注释标注参数单元格, 例如/*A1*/10/*A1*/,
那么当这个指定单元格内容发生变化时,会提示你是否刷新表格而如果当前单元格就在表格内,点击此按钮弹出的文本框里会显示当前表格的查询脚本,用于编辑更新
-
Share
点击Share按钮打开一个自定义的任务窗格,如下图所示,首行的公盘路径可以手动录入并回车确认,也可以点击右边的按钮导航到一个具体的文件夹路径,之后会自动在下面以树状形式展现此目录下的所有文件夹和excel文件。
当右击某个文件夹或者excel report文件时弹出下图所示的右键菜单
下面是右键菜单的相关功能说明:
【New Folder】新建子文件夹:只有右击文件夹时可用,会在当前选中文件夹下面建立子文件夹
【Open File】打开文件:excel打开所选excel report文件
【Save File】保存文件:如果右击选中的是文件夹,将会把当前excel文档保存于此文件夹下,如果选中的是某个excel文件,那么将会把当前excel文档覆盖到选中的excel文档上
【Rename】重命名:可重命名文件夹或excel文件
【Copy Path】复制路径:可复制文件夹或excel文件的公盘路径,用于email分享给同事
-
Toggle Fields
收缩折叠PivotTable Field List,如下图所示,这个功能兼容Excel2007,2010和2013,因为Excel2013本身有相同的功能,所以此处功能仅在Excel2007,2010版本上有意义
-
Copy Address
复制所选单元格Range地址(可以是连续或不连续的多个单元格)到剪切板,用于往固定的报表模板上粘贴数据引用地址,以实现PivotTable或QueryTable刷新后自动同步Raw Data到固定的模板Sheet。
-
Filter
自动过滤器,如下图所示,如果需要进行维度多选,且选项数量有限的情况下还尚可手动操作,而如果选项过多,无法肉眼检索筛选,就可以使用这个功能,定位当前单元格在某个PivotTable的Filter上,然后点击菜单里的Filter按钮,弹出窗口罗列出当前已选的选项,在编辑框里录入所有要选取的选项后确认,即可自动完成筛选工作
-
Synchronize Filters
同步过滤器,类似于Slicer切片器的功能,但切片器有其功能上的局限性,不如这种方式灵活。
如下所示三个PivotTable分别筛选不同的Country,修改A和C的Filter Name为Country AC,修改B的Filter Name为Country B
然后点击菜单里的【Synchronize Filters】,会为你创建一个用于设置全局过滤器的PivotTable,在其中添加一个Country Filter并修改Filter Name为Country AC
修改全局过滤器的选项后XPivot会提醒你全局过滤器已更新,是否需要同步到当前工作薄其它pivottable上,选择是即可开始同步,结果如下
-
Drill Down
当一个PivotTable的行和列上被各种维度占据后,如果还想继续下钻到一个新的维度,不但视觉上会感到杂乱,而且下钻的性能也会受到影响,如下左图所示定位当前单元格到B7,然后点击【Drill Down】会为你新建一个PivotTable如下右图,把所有行列上的维度都迁移到Filter区域,接着你就可以把你想观察的其它维度放在行列区域,服务端的计算量大为减少,所以前端的数据加载效率将会提高不少,此功能Excel2013已提供,所以适用于13以下的Excel版本
-
Dashboard
如下图所示,新建一个pivottable,并设置两个过滤器,定位当前单元格在此pivottable上,然后点击Dashboard按钮,此时会在当前页面为你创建一个空白的pivotchart,在pivotchart上编辑图表内容,按这个步骤创建四个pivotchart,分别呈现不同的图表内容,共同构建一个Dashboard,此时再更新上面的pivottable两个过滤器选项,下面四个pivotchart会自动同步pivottable的过滤器更新图表数据
-
MDX
此功能已在Excel2013里提供,详见http://www.cnblogs.com/xpivot/p/4310998.html,因此仅适用于13以下的版本。
定位到一个有内容的pivottable上,点击MDX按钮,弹出的窗体下方显示当前pivottable的mdx脚本
如图所示,在上面编辑一个mdx计算项,首行输入计算项名称,下面输入计算项的mdx公式脚本,点击submit确认后效果如下:
注意到当前pivottable的mdx脚本以及呈现的数据内容已经发生了变化