Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Excel催化剂开源第48波-Excel与PowerBIDeskTop互通互联之第二篇

Excel催化剂开源第48波-Excel与PowerBIDeskTop互通互联之第二篇

作者头像
Excel催化剂
发布于 2021-08-19 07:55:15
发布于 2021-08-19 07:55:15
93900
代码可运行
举报
文章被收录于专栏:Excel催化剂Excel催化剂
运行总次数:0
代码可运行

前一篇的分享中,主要谈到Excel透视表连接PowerBIDeskTop的技术,在访问SSAS模型时,不止可以使用透视表的方式访问,更可以发数据模型发起DAX或MDX查询,返回一个结果表数据,较透视表的方式更为灵活。 此篇再次带出Excel向PowerBIDeskTop发出DAX查询的技术要点。

此篇对应功能实现出自:第5波-使用DAX查询从PowerbiDeskTop中获取数据源https://www.jianshu.com/p/21b2ca8fd2b8

原理性分析

和上一篇类似,同样是使用OLEDB的数据连接,和SSAS分析服务进行连接,但此时使用编程的方式,向SSAS服务发起OleDbCommand,将DAX查询作为参数,传给OleDbCommand,最终模型将返回数据结果。

核对代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   public static DataTable GetDAXQueryTableFromPbid(string queryString, DataGridViewRow row)
        {
            Entity.PbidFileInfo pbidFileInfo = Common.GetPbidFileInfo(row);

            string cnnString = $"Provider=MSOLAP;Integrated Security=SSPI;Persist Security Info=True;Data Source=localhost:{pbidFileInfo.Port};Initial Catalog={pbidFileInfo.DbName};";
            using (OleDbConnection cnn = new OleDbConnection(cnnString))
            {
                cnn.Open();
                OleDbCommand cmd = new OleDbCommand(queryString, cnn);

                OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
                System.Data.DataSet ds = new System.Data.DataSet();
                DataTable dt = new DataTable();
                adp.Fill(ds);
                return ds.Tables[0];
            }
        }

以上发起查询后,数据结构由OleDbDataAdapter的Fill方法存入到DataSet中,再从DataSet取出首张表,即可拿到最终的结果。

同样的代码亦可以使用在Sqlserver上SSAS服务。只是需要将连接字符串带上有权限访问模型的用户名、密码。

DAX查询自动化

看完上述方法,已经蠢蠢欲动,下面再来个高潮,DAX查询全自动化生成。

因为PowerBIDeskTop开启的SSAS服务是本地化服务,本地用户对其有全部的权限访问,并且PowerBIDeskTop界面上拖拉控件,实际上是转化为一段DAX查询向SSAS服务发出查询并返回的数据结构,经控件渲染后产生的可视化效果。

其发出的查询,会保留着最后的几条查询,使用DMV查询可以访问到,所以使用下面的代码,即可拿到PowerBIDeskTop所发出的DAX查询语句,将此段语句再用上面所说的OLEDB的查询向SSAS服务再次请求,就实现了零代码写DAX查询的用户体验。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        private void GetDAXQueryStringFromPbidAndBandingListbox()
        {
            string queryString = "select COMMAND_TEXT from $SYSTEM.DISCOVER_COMMANDS";
            DataTable dt = Common.GetDAXQueryTableFromPbid(queryString, this.dataGridView1.SelectedRows[0]);
            this.listBox1.DataSource = dt.AsEnumerable().Where(s => Regex.IsMatch(s.Field<string>(0), @"EVALUATE\s+TOPN|DEFINE\s+VAR")).Select(s => s.Field<string>(0)).ToArray();
        }

结语

Excel催化剂开源,是动真格的,谁有幸看到是谁的福气,将最核心、最独一无二的功能全公开,这就是最好的行动证明。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Excel催化剂开源第49波-Excel与PowerBIDeskTop互通互联之第三篇
在PowerBIDeskTop开启的SSAS服务,和Sqlserver所开启的一个本质的区别是,前者其端口号是随机生成的,即上一次打开获得的端口号,下一次关闭后再打开,系统分配给它新的端口号,而后者因为是服务器版的,服务器的SSAS端口号是固定的,且服务器一般都是长期打开的,不存在端口号变化引起数据连接字符串要变更的情况。
Excel催化剂
2021/08/19
4510
Excel催化剂开源第50波-Excel与PowerBIDeskTop互通互联之第四篇
答应过的全盘分享,也必承诺到底,此篇PowerBI功能分享的最后一篇,讲述如何导出数据模型的元数据,笔者定义其为模型的数据字典。
Excel催化剂
2021/08/19
4360
Excel催化剂开源第47波-Excel与PowerBIDeskTop互通互联之第一篇
此篇对应功能实现出自:第3波-与PowerbiDesktop互通互联(Excel透视表连接PowerbiDesktop数据模型)https://www.jianshu.com/p/e05460ad407d
Excel催化剂
2021/08/19
6400
基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)
基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)
用户1170933
2022/05/10
1.4K0
基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)
C# 读取EXCEL文件的三种经典方法
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:
代码伴一生
2021/09/22
2.6K0
将Excel文件数据库导入SQL Server
将Excel文件数据库导入SQL Server的三种方案//方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server
Java架构师必看
2021/03/22
2.5K0
Excel催化剂功能第3波-与PowerbiDesktop互通互联-功能体验国际领先水平
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。 简书原文地址:https://www.jianshu.com/p/e05460ad407d
Excel催化剂
2021/08/19
8680
[PowerBI]中国首款重量级PowerBIDeskTop外部工具问世
过往的PowerBIDeskTop,它是一个独立的软件,不像Excel那样可以有二次开发的接口,但7月份更新PowerBIDeskTop后,已经开放了外部工具,单独有一个外部工具的选项卡。
Excel催化剂
2021/08/18
4.1K0
C#进阶-OleDb操作Excel和数据库
在C#编程中,使用OleDb可以方便地实现对Excel文件和数据库的操作。本文探讨了在C#中使用OleDb技术操作Excel和数据库的策略。文章详述了OleDb的定义、配置环境的步骤,并通过实际代码示例演示了如何高效读写Excel文件和交互数据库。文中还评估了OleDb技术的优缺点,为需要处理多种数据源的开发者提供了一种有效的数据操作方案。
Damon小智
2024/05/10
7750
C#进阶-OleDb操作Excel和数据库
[PBI催化剂]国际水准,中国首款重量级PowerBIDeskTop外部工具问世
SQLBI的工具,有兴趣的可了解下,需要点英文阅读能力:https://www.sqlbi.com/tools/analyze-in-excel-for-power-bi-desktop/
Excel催化剂
2021/08/18
3.2K0
个人永久性免费-Excel催化剂功能第27波-Excel工作表设置快捷操作
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。
Excel催化剂
2021/08/19
9940
『功能发布,问题修复』PBI催化剂打造完美PowerBI DeskTop局域网内共享模型方案
工具开发的成功,离不开大家多多的参与反馈,感谢几位群友积极反馈问题,最终排查出失败原因,现已修复发布新版,可自动更新后即可使用。
Excel催化剂
2023/04/26
6590
『功能发布,问题修复』PBI催化剂打造完美PowerBI DeskTop局域网内共享模型方案
一文带你全面认识Excel催化剂系列功能
因插件功能大部分是本人过去在工作中曾经开发过或曾经构想过在工作场景中有较大的使用率,同时也是其他主流插件未提供或提供的功能使用上略有欠缺的。
心莱科技雪雁
2019/04/22
1.5K0
王者回归,PBI催化剂2.0发布,回归初心,个人永久性免费使用全部功能
PBI催化剂是笔者两年前开发的国内首款PowerBI外部工具,用于在PowerBI模型和报表层的元数据批量管理。
Excel催化剂
2022/09/02
4.9K0
王者回归,PBI催化剂2.0发布,回归初心,个人永久性免费使用全部功能
Excel催化剂功能第5波-使用DAX查询从PowerbiDeskTop中获取数据源
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。 简书原文地址:https://www.jianshu.com/p/21b2ca8fd2b8
Excel催化剂
2021/08/19
6.6K0
Excel催化剂开源第10波-VSTO开发之用户配置数据与工作薄文件一同存储
在传统的VBA开发中,若是用的是普通加载项方法,是可以存储数据在xlam上的,若用的是Com加载项方法同时是Addins程序级别的项目开发的,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用。
Excel催化剂
2021/08/19
1.4K0
个人永久性免费-Excel催化剂功能第48波-拆分工作薄内工作表,堪称Excel界的单反
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。
Excel催化剂
2021/08/19
1.4K0
Excel催化剂功能第6波-导出PowerbiDesktop模型数据字典
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。 简书原文地址:https://www.jianshu.com/p/21b2ca8fd2b8
Excel催化剂
2021/08/19
6350
Excel催化剂开源第14波-VSTO开发之单元格区域转DataTable
在Excel开发过程中,大部分时候是和Range单元格区域打交道,在VBA开发中,大家都知道的一点是,不能动不动就去遍历所有单元格,那性能是非常糟糕的,很多时候,是需要把整个单元格区域装入数组中再作处理的。
Excel催化剂
2021/08/19
1.7K0
个人永久性免费-Excel催化剂功能第21波-Excel与Sqlserver零门槛交互-执行SQL语句篇
虽然操作数据库的任何操作都可以最终转换为写特定的SQL语句去操作,但不代表用SQL语句去操作是最佳的选择,就算专业的数据库开发维护人员,对一大坨的SQL代码也没几个能表示写得快而准无差错。
Excel催化剂
2021/08/19
8440
推荐阅读
Excel催化剂开源第49波-Excel与PowerBIDeskTop互通互联之第三篇
4510
Excel催化剂开源第50波-Excel与PowerBIDeskTop互通互联之第四篇
4360
Excel催化剂开源第47波-Excel与PowerBIDeskTop互通互联之第一篇
6400
基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)
1.4K0
C# 读取EXCEL文件的三种经典方法
2.6K0
将Excel文件数据库导入SQL Server
2.5K0
Excel催化剂功能第3波-与PowerbiDesktop互通互联-功能体验国际领先水平
8680
[PowerBI]中国首款重量级PowerBIDeskTop外部工具问世
4.1K0
C#进阶-OleDb操作Excel和数据库
7750
[PBI催化剂]国际水准,中国首款重量级PowerBIDeskTop外部工具问世
3.2K0
个人永久性免费-Excel催化剂功能第27波-Excel工作表设置快捷操作
9940
『功能发布,问题修复』PBI催化剂打造完美PowerBI DeskTop局域网内共享模型方案
6590
一文带你全面认识Excel催化剂系列功能
1.5K0
王者回归,PBI催化剂2.0发布,回归初心,个人永久性免费使用全部功能
4.9K0
Excel催化剂功能第5波-使用DAX查询从PowerbiDeskTop中获取数据源
6.6K0
Excel催化剂开源第10波-VSTO开发之用户配置数据与工作薄文件一同存储
1.4K0
个人永久性免费-Excel催化剂功能第48波-拆分工作薄内工作表,堪称Excel界的单反
1.4K0
Excel催化剂功能第6波-导出PowerbiDesktop模型数据字典
6350
Excel催化剂开源第14波-VSTO开发之单元格区域转DataTable
1.7K0
个人永久性免费-Excel催化剂功能第21波-Excel与Sqlserver零门槛交互-执行SQL语句篇
8440
相关推荐
Excel催化剂开源第49波-Excel与PowerBIDeskTop互通互联之第三篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验