这是使用微软Power BI Embed功能,在自定义WEB应用中嵌入报表的系列入门指南。系列文章共分为三篇,这是第一篇。
背景
通常我们使用Power BI(下文简称为PBI)的模式分为以下几种情况
- 个人用户或者小团队内部使用,在PBI Desktop内开发和查看报表数据。这种办法不需要付费,也不需要申请PBI 账号。
- 一人开发,多个用户查看报表,就需要使用共享方式让其他用户通过PBI门户网站进行访问。这种方案的缺陷是,所有查看报表的人员都需要购买独立的PBI Pro账号,并且只能通过PBI门户进行查看操作。
- 把报表嵌入到自定义Web应用中,这种方案下只有开发人员需要Pro账号,查看人员通过自定义Web应用查看报表。这是最灵活的方案,但是需要额外的程序开发工作量。
本文讨论最后一种嵌入方案,用一个简单的案例对整个开发流程进行简单演示。
Power BI 提供了Embedded功能(下文简称PBIE),使用特定 API,将仪表板和报表嵌入自定义应用中。 可以利用 JavaScript 和 REST API 满足个性化的嵌入需要。查看报表的用户无需了解有关 PBI 的机制,也无需Pro账号。
准备工作
配置ODBC
PBI Desktop,以及后面介绍的PBI网关,在报表开发和运行阶段都需要访问数据源。在我们的案例中,使用Greenplum数据库。虽然PBI Desktop自带了PostgreSQL的驱动,但是为了满足PBIE远程访问的要求,我们仍然自建一个ODBC数据源。如下图我们创建一个名称是GP-Prod的数据源,这个名称我们后面还会用到。
购买Power BI Pro账号
至少需要有一个 PBI Pro 帐户才能创建嵌入式应用程序。 这个帐户由报表开发管理人员使用,并且充当应用程序的主帐户(PBI服务将其视为代理帐户)。 借助 PBI Pro 帐户,在访问报表时生成嵌入令牌,用于访问PBI 服务中的仪表板和报表。
注册Azure AD App
在 Azure Active Directory (Azure AD) 中注册应用程序,用于嵌入 PBI 内容。使用 Azure AD 注册应用程序后,应用程序将能够访问 PBI REST API。 此操作能够为应用程序建立标识,并指定对 Power BI REST 资源的权限。
注册的关键步骤包括
- 使用 PBI 应用注册工具注册
- 使用 Azure 门户修改权限
- 获得应用程序ID
因为这个注册流程步骤比较多且官方手册有非常详细的描述,所以这里不再把具体步骤的图片贴上来。具体的操作请参考官方文档
建立Workspace
只有发布到应用工作区的报表才能被PBIE访问,所以我们要在Pro账号下创建一个应用工作区。
如下图,在【工作区】菜单下点击【创建应用工作区】,提供名称。其他的选项都使用默认值。
创建成功后,我们就拥有了默认的【我的工作区】和新建的【danlu_workspace】,可以在菜单中进行工作区的切换。如下图
安装Gateway
发布到工作区的报表和数据集,不能直接访问位于公司内部的数据库。PBI提供了网关来实现这种跨网络访问需求。简单的说,就是在本地机器上运行PBI Gateway服务,并且在Pro账户下配置网关需要访问的数据源,远端的报表和数据集通过网关来间接访问到本地数据。
登录PBI门户后,在右上角找到下载网关的链接,如下图
安装网关的流程很简单,但是有两点需要注意
- 使用推荐的本地网关,如下图所示
- 使用和创建工作区相同的Pro账号
配置Gateway
本地网关安装之后,远端同名Pro账号下就会出现这个网关信息。为了能够访问本地数据源,我们需要在远端网关下配置相应的数据源信息。一个网关下可以配置多个不同的数据源满足不同报表的需求,每个数据源都有自己的类型和连接信息。这里我们仅配置一个ODBC源。
首先在【设置】菜单下点击【管理网关】,如下图
我们会看到一个名称是GW-Danlu的网关(这个名称是本地创建网关时提供的名字),点击三个小圆点打开菜单,然后点击【添加数据源】,如下图
我们新建一个ODBC数据源来连接我们前面配置的本地ODBC DSN,特别要注意的是连接字符串的写法是 dsn=GP-Prod ,其中GP-Prod是我们本地数据源的名称,如下图
待续。。。