文章 / 公众号历史文章
『颠覆认知』过程来之不易,PowerBI DeskTop局域网内共享模型方案问世
自从重新迭代开发PBI催化剂功能后,一直想找一个有普适性刚需功能场景,最近找到的是将PowerBI DeskTop的模型层开放给局域网使用这一功能,但探索过程异常曲折。有些方案不是笔者原创,不方便拿出来分享。 今天,想起两年多前技术群隐约有网友说过的方案,很幸运地一点模糊的印象还是能找到他本人: 淬
自从重新迭代开发PBI催化剂功能后,一直想找一个有普适性刚需功能场景,最近找到的是将PowerBI DeskTop的模型层开放给局域网使用这一功能,但探索过程异常曲折。有些方案不是笔者原创,不方便拿出来分享。
今天,想起两年多前技术群隐约有网友说过的方案,很幸运地一点模糊的印象还是能找到他本人:淬剑阁阁主-西陵剑魂。
万万没想到,他已经在两年前,写了详细文章分享过,而笔者自己却掉进了其他方向的探索,最终走向死胡同般没有出路。
综合来说,此方案已经接近完美,不止可局域网访问,更可屏蔽端口号变化问题,很欣喜的是,淬剑阁阁主也很乐意分享传播,经授权可在本公号发表。
为了能使此方案更易用,惠及更广的群体,笔者打算将之实现在PBI催化剂上,使其能一键界面完成,如是您的菜敬请关注后续的消息。
转换为PBI催化剂功能需要处理:
- 软件包的下放用户电脑安装(貌似是绿色版,大概率可行,不过实现方式可能会引起报毒问题)
- 自动化读取当前打开的pbix文件的文件名与端口号信息,并将其写入nginx配置文件中,并启动nginx
- 处理防火墙规则,新增对应的端口号入站规则。
经过上述的封装后,应该可以比较友好地完成用户界面层交互,探索和开发不易,若对您有价值,不妨多多帮忙传播一下。
本文提及的方法,不保证是合规使用,毕竟PBID是故意为之不可用于局域网共享其SSAS,具体法律条文如何定义此行为绕开限制,笔者非专业人士不懂。
若有侵权不合规,需自行担当,笔者仅分享技术实现,不对此方法的实际使用引发的不合规负责。
合规且性能、安全等得到保障的方式是直接使用Sqlserver的SSAS分析服务,笔者为资深的微软企业级BI方案顾问,有一套成熟、低成本、易实施落地的适合中小企业的数据分析BI商业智能解决方案,如有更深需求,欢迎联系笔者详细咨询,微信:190262897。
以下为淬剑阁阁主文章内容,亲测此方法可行,也欢迎更多反馈。
点击阅读原文可跳转到其原文博客地址。
没有废话版:
1、打开PBID软件,打开数据集
2、查找msmdsrv.port.txt文件,确认PBID使用的端口(假设为8888)
3、下载安装nginx,修改配置文件,设定反向代理端口(假设为6666)启用stream反向代理。启动nginx服务器。
示例配置:
worker_processes 1;
events {
worker_connections 1024;
}
stream{
server{
listen 6666;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass 127.0.0.1:8888;
}
}
4、在Excel中选择【数据】→【获取数据】→【来自数据库】→【自Analysis Services】在弹出的对话框【服务器名称】项中填入服务器地址及端口号。假如服务器网址为pbi.cuijiange.com,那么地址栏就应该输入pbi.cuijiange.com:6666;假如没有网址,而是使用的IP地址,那么就输入IP:port
5、【登陆凭据】项选择“使用下列用户名和密码”,在输入框内输入服务器端的用户名和密码
废话版:
昨天前几天,学习群里,潘老师给下达了一个任务:实现使用A电脑上的Excel访问B电脑上的PBI数据集。
PBID本质上就是一个服务端和客户端的集合体,服务端使用的是Microsoft家族成熟的Microsoft SQL Server Analysis Services,那么就可以通过连接SSAS的方法进行连接。
那么,具体是怎么连接的呢?下面跟着阁主,来一探究竟吧。
第一步,我们需要打开PowerBI desktop软件。如果不打开软件,那么后面我们就会找不到工作区目录的。
第二步,我们需要找到PBID的SSAS服务的端口号。经过老师的指导,阁主了解到PBID的SSAS服务的端口号并不是固定的,每次打开PBID都会发生变化。在我们打开PBID的情况下,PBID会在我们的硬盘中生成一个SSAS工作区目录analysisServicesWorkspaceXXXXXXXXX,我们可以从该目录的Data子目录中的msmdsrv.port.txt获得端口号。阁主就按照老师给的参考地址,去C:\users\淬剑阁阁主\appdata\local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces目录下寻找,结果没有找到。后来,阁主使用everything搜索msmdsrv.port.txt,在C:\users\淬剑阁阁主\Microsoft\Power BI store Desktop\AnalysisServicesWorkspaces目录下找到了相应的配置目录。为什么找不到呢?阁主猜测,可能是因为阁主用的是应用商店版本的PowerBI desktop,版本不同导致文件的位置也不一样。在这里,为了方便朋友们快速找到相应的位置,阁主写了两个带系统变量的地址语句,复制到“资源管理器”地址栏回车就能找到所需要的目录。
应用商店版:
%USERPROFILE%\Microsoft\Power BI Desktop store app\AnalysisServicesWorkspaces
安装版:
%LOCALAPPDATA%\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces
找到了工作区文件夹。如果有童鞋发现这个文件夹是空的,那么是因为你没有打开PowerBI软件,请把PowerBI Desktop软件打开。
如果您的PowerBI Desktop已经是打开的,那么这个位置应该就出现了形如【AnalysisServicesWorkspace123456789】这样子的文件夹,请打开这个文件夹,会看到有一个【Data】目录和一个【pbiworkspace.lock】文件,打开Data文件夹,打开里面的文本文档【msmdsrv.port.txt】,里面的端口号就是我们第二步需要找到的端口号啦~
第三步,架设nginx stream反向代理服务器。nginx是一款开源的多平台服务器软件,今天我们借助他的stream代理功能,将外部访问转换为本地访问,以突破ssas服务只能够本地访问的限制。
首先,我们要有一个nginx的安装包。很多网站上都可以下载到这个安装包,在这里,阁主还是推荐您使用官方地址http://nginx.org/en/download.html来下载,可以保证软件的有效性。
安装好nginx服务器之后,我们还需要对它进行相应的配置,以启用stream反向代理功能。配置文件的默认路径是【程序目录\conf\nginx.conf】示例代码已经放在上面了,各位童鞋可以参照修改哦~
当然,如果不便于直接修改nginx.conf配置文件,那么我们也可以复制一份nginx.conf文件,到其他位置,或者改名字(假设为【d:\pbi.conf】)。
修改完毕后,我们启动nginx,这样stream反向代理就架设成功了。(如果使用了非默认的配置文件名和文件位置,那么我们在启动nginx的时候就需要通过添加参数来特别指定要使用的配置文件)我们可以通过excel来进行测试~(方法不再赘述)
第四步,如果我们想要其他电脑访问(废话),那么我们还需要进行防火墙设置。打开windows高级防火墙,在入站规则中,放行我们的反向代理端口(示例中为6666端口)。
(由于阁主也是刚刚接触PBI,所以上述说法也是听来转述的,可能有偏颇甚至错误的时候,如果您发现文章有误,还请您直指不足,不吝赐教^_^)