首页 > 代码库 > Excel Add-In for Olap Cubes/Analysis Services & PowerPivot

Excel Add-In for Olap Cubes/Analysis Services & PowerPivot

几个月前偶然发现一个用于SSAS OLAP数据分析的Excel插件SmartPivot,都是非常实用的功能,如果你的BI解决方案是采用SSAS,那么请看看这个东西,一定会对你有很多启发,如果你的BI Report客户端采用的是Excel,那么这简直就是居家必备的绝配工具,最近几个月我用零碎的时间模仿并改进了部分基础功能,并根据具体项目定制扩展了更加人性化的功能,没什么技术难点,主要是针对现有的项目做的定制功能就不方便公开了,这里只介绍通用的基础功能,看官阅后若觉得有用就留下邮箱,我发安装包给你。

下面是SmartPivot的官方介绍,可以下载试用版

http://www.devscope.net/products/SmartPivot

下面介绍下我的XPivot当前版本已实现的通用功能,也欢迎提出改进意见。

 1. Logon跨域鉴权,这个主要解决了客户端和服务端不在同一个域环境内,又希望不同的客户端用户具备不同的维度访问权限,就在插件里实现了跨域鉴权,具体就不详述了,请翻看之前的博客,当时的版本和现在没有太大差异

 2. Source Config配置数据源,  配置的多个数据源以竖线分割,第一条配置项【Cube】具备唯一性,后面的几条配置项大家都认识,需要说明的是【Integrated Security】,如果配置其等于SSPI,则不会提示你登陆,将默认使用当前windows用户身份访问Cube或DW,如果Cube或DW任何一方没有【Integrated Security】配置项,都会弹出登陆框要求输入身份密码,如果Cube和DW的【Integrated Security】都没有配置,就会使用同样的录入身份登录Cube和DW,服务端需要分别为Cube和DW配置同样的登陆身份和密码

3. New PivotTable,这个没什么特别的,类似于【Data】菜单里的【Existing Connections],只不过简化了操作步骤,是直接在当前单元格插入一个PivotTable,另外,如果是新开的Workbook还没有【Existing Connections]的话,就会按当前选中的数据源以及登陆的身份新建PivotTable

4. New Table,这个类似于上一条功能,是在当前单元格插入QueryTable,不过会先弹出窗口让你录入SQL,唯一有些特别的是你可以在SQL脚本里用注释/**/配置传参,脚本举例说明:

select top /*A1*/100/*A1*/ * from DimDate

如果当前QueryTable所在Sheet的A1单元格为空,则默认取出top 100的记录,当你修改了A1单元格的内容,就会触发并修改这个QueryTable的脚本,并提示你是否马上刷新,比起Excel QueryTable默认的传参方式灵活多了。顺便吐槽下Excel QueryTable的数据源如果是From SQL Server的话是不支持传参的,如果是From Microsoft Query的话虽然支持传参,但对执行的脚本会有诸多限制。

5. Toggle Fields,收缩折叠PivotTable Field List,如下图所示,这个功能兼容Excel2010和2013,因为Excel2013本身有类似功能,所以此处仅在Excel2010版本上有意义

6. Copy Address,复制所选单元格Range地址(可以是连续或不连续的多个单元格)到剪切板,用于往固定的报表模板上粘贴数据引用地址,以实现PivotTable或QueryTable刷新后自动同步Raw Data到固定的模板Sheet。

7. Filter自动过滤器,如下左图所示,如果需要进行维度多选,且选项数量有限的情况下还尚可手动操作,而如果选项过多,就可以使用这个功能,如下右图所示,定位当前单元格在某个PivotTable的Filter上,然后点击菜单里的Filter按钮,弹出窗口罗列出当前已选的选项,在编辑框里录入所有要选取的选项后确认,即可自动完成筛选工作。

 

8. 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

再次点击菜单里的【Synchronize Filters】完成同步后的结果如下图

9. Drill Down,当一个PivotTable的行和列上被各种维度占据后,如果还想继续下钻到一个新的维度,不但视觉上会感到杂乱,而且下钻的性能也会受到影响,如下左图所示定位当前单元格到B7,然后点击【Drill Down】会为你新建一个PivotTable如下右图,把所有行列上的维度都迁移到Filter区域,接着你就可以把你想观察的其它维度放在行列区域,服务端的计算量大为减少,所以前端的数据加载效率将会提高不少

Excel Add-In for Olap Cubes/Analysis Services & PowerPivot