
# DWS对接Power BI操作指导
Power BI 是一款强大的自助商业智能分析软件，可以对来自不同系统的数据进行提取、清理、整合、汇总、分析、可视化展示。简单来说，Power BI就是一个数据分析工具，它能实现数据分析的所有流程，包括对数据的获取、清洗、建模和可视化展示。
本实践演示在弹性云服务器ECS上的Windows环境下安装Power BI，并使用On-premises Data Gateway（本地数据网关）模式与DWS进行对接。
**本实践预计时长120分钟，基本流程**如下：
1. [准备工作]：准备Windows系统的弹性云服务ECS，创建数据仓库服务DWS。
2. [步骤一：安装Power BI环境及软件]：安装.NET Framework、Npgsql驱动和Power BI。
3. [步骤二：准备DWS的样例数据]：在DWS创建好对应的数据库、Schema、表、用户，并授权该用户访问表的权限。
4. [步骤三：将DWS对接到Power BI并生成和发布报表]：实现Power BI与DWS的对接，并生成和发布报表。
5. [步骤四：添加DWS的连接信息到Power BI的网关列表中]：实现Power BI报表中的数据实时与DWS的数据同步。
 #### 准备工作
- 已购买Windows操作系统的弹性云服务ECS且Windows Server可正常使用（如已有ECS或本地PC环境满足要求则不需要单独购买ECS）。
- 已购买DWS集群。
- DWS集群能与ECS正常通信（本实践为内网通信），如果通过公网通信，请确保DWS已绑定公网IP。
 
 #### 步骤一：安装Power BI环境及软件
1. 登录ECS。
2. Windows环境下安装[.NET Framework](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net48-web-installer)（本文以.NET Framework 4.8版本为例）。
   
   安装完成后，如下显示。
   图1安装.NET Framework   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002166991421.png "点击放大")
   
   
3. 在Windows环境下安装PostgreSQL驱动程序。 
   1. 获取[Npgsql驱动](https://github.com/npgsql/npgsql/releases/tag/v4.0.10)（以4.0.10版本为例）安装包。
      图2Npgsql v4.0.10   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002166960797.png "点击放大") 
   
   2. 安装过程中，需要勾选"**Npgsql GAC Installation** "，如下所示。
      图3安装Npgsql   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002131800574.png "点击放大")
      安装完成后如下图所示。
      图4安装Npgsql成功   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002167000981.png "点击放大") 
   
   
   
   
4. 安装Power BI Gateway标准版。 
   1. 访问[Power BI](https://www.microsoft.com/en-us/power-platform/products/power-bi/gateway)下载标准版安装程序。
   
   2. 在网关安装程序中，保持默认安装路径，接受使用条款，单击"Install"。
      图5安装Power BI   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002167039361.png "点击放大") 
   
   3. 输入Office 365账户的邮箱，单击"Sign in"。
      图6输入邮箱   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002131682872.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-dws/public_sys-resources/note_3.0-zh-cn.png)
      如果您注册了Office 365，则您的地址可能类似于xxx@contoso.onmicrosoft.com。
      
   
   4. 选择在此计算机上注册新网关，单击"Next"。
      图7注册新网关   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002131685316.png "点击放大") 
   
   5. 输入网关的名称，该名称在租户中必须是唯一的。不需要勾选"Add to an existing gateway cluster"。
   
   6. 输入恢复密钥，该密钥在恢复或移动网关场景下需要用到，单击"Configure"。
      图8输入网关名称   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002167044569.png "点击放大")
      安装完成后，界面如下图所示。
      图9安装Power BI完成   
      ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002131854906.png "点击放大") 
   
   
   
   
   
5. 设置NAT网关。 
   1. 登录[NAT网关控制台](https://console.huaweicloud.com/vpc/#/nat/public/list)，左侧选择"网络连接 \> NAT网关 \> 公网NAT网关"。
   
   2. 购买一个公网NAT网关，此处不再赘述，详情参见[NAT网关文档](https://support.huaweicloud.com/natgateway/index.html)。
   
   3. 单击已购买的公网NAT右侧的"设置规则"，切换到"DNAT规则"，单击"添加DNAT规则"，按以下配置。 ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002248807660.png "点击放大")
      
      
   
   4. 单击"确定"。
   
   
   
   
 
 #### 步骤二：准备DWS的样例数据
1. 连接到DWS的默认数据库gaussdb，创建一个名为dws_test的数据库。
   
   ```
   CREATE DATABASE dws_test;
   ```
   
   
2. 重新连接到新创建的数据库dws_test，创建名为dws_data的SCHEMA，同时在该SCHEMA下创建名为rpg_order的表，并插入4条数据。 
   ```
   CREATE SCHEMA dws_data;
      
   CREATE TABLE dws_data.dws_order
           ( order_id      VARCHAR,
             order_channel VARCHAR,
             order_time    VARCHAR,
             cust_code     VARCHAR,
             pay_amount    DOUBLE PRECISION,
             real_pay      DOUBLE PRECISION )
   DISTRIBUTE BY HASH (order_id);
    
   INSERT INTO dws_data.dws_order VALUES ('202306270001', 'webShop', '2023-06-27 10:00:00', 'CUST1', 1000, 1000);
   INSERT INTO dws_data.dws_order VALUES ('202306270002', 'webShop', '2023-06-27 11:00:00', 'CUST2', 5000, 5000);
   INSERT INTO dws_data.dws_order VALUES ('202307100003', 'webShop', '2023-07-10 13:00:00', 'CUST1', 3000, 3000);
   INSERT INTO dws_data.dws_order VALUES ('202307200004', 'webShop', '2023-07-20 14:00:00', 'CUST2', 4000, 4000);
   ```
   
   
3. 查询表数据，验证数据是否插入。 
   ```
   SELECT * FROM dws_data.dws_order;
   ```
   
   

4. 创建使用Power BI的数据库用户，密码需自定义。 
   ```
   CREATE USER dws_thiru PASSWORD '{password}';
   ```
   
   
5. 授权该用户可访问对应Schema和表的权限。 
   ```
   GRANT USAGE ON SCHEMA dws_data TO dws_thiru;
   GRANT SELECT ON dws_data.dws_order TO dws_thiru;
   ```
   
   
 
 #### 步骤三：将DWS对接到Power BI并生成和发布报表
1. 已获取DWS的内网IP、端口。
   
   1. 登录[DWS控制台](https://console.huaweicloud.com/dws)，左侧选择"集群 \> 集群列表"，单击集群名称进入集群详情页面。
   
   2. 在右侧的"连接信息"，记录"内网IP"、"端口"。 ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284229357.png "点击放大")
      
      
   
   
   
   
2. 登录ECS的Windows桌面，双击打开"Power BI Desktop"，单击"Get Data"。
3. 选择"Database \> PostgreSQL Database"，单击"Connect"。
   
   图10连接数据库   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002283932721.png "点击放大")
   
   
4. 输入DWS的连接信息。 
   - Server：本例DWS与ECS在同一VPC中，输入[1]查询到的内网IP和端口即可。
   
   - Database：输入[1]创建的数据库名称dws_test。
   
   - Data Connectivity mode：选择"DirectQuery"
     图11DWS连接信息   
     ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002249154406.png "点击放大") 
   
   
   
   
5. 单击"OK"。
6. 继续输入以下信息。 
   - User name：连接数据库的用户，本例为dws_thiru。
   
   - Password：dws_thiru对应的密码，创建时自定义。
   
   
   图12连接用户和密码   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002249194364.png "点击放大")
   
   
7. 单击"Connect"进行连接。
   
   连接将不成功，弹出如下错误，因为默认情况下是加密连接，需参见后续步骤改为非加密连接。
   图13加密连接报错信息   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284344953.png "点击放大")
   
   
8. 以上报错信息，单击"Cancel"退出。
9. 回到Power BI的主界面，选择"File \> Options and settings \> Data source settings"。 
   图14数据源设置   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284360805.png "点击放大")
   
   
10. 选中DWS的连接信息，单击"Edit Permissions..."，将"Encrypt connections"的勾选去掉，并单击"OK"。 
    图15设置非加密   
    ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002249404342.png "点击放大")
    
    
11. 关闭数据源设置的窗口，退出设置。
12. 回到Power BI主界面，重新执行[3]\~[7]的连接即可。
13. 连接成功后，选择需要加载的数据表，单击"Load"。 
    图16选择加载的表   
    ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002249571142.png "点击放大")
    
    
14. 进入构建报表页面，单击"File"，单击"Save"，将报表保存到本地。 
    图17保存报表   
    ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284482833.png "点击放大")
    
    
15. 将报表发布到Power BI在线页面。 
    1. 回到Power BI主界面，选择"File \> Publish \> Publish to Power BI"。
    
    2. 如果当前未登录，系统将要求您通过指定电子邮件和密码进行登录。 ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284529465.png "点击放大")
       
    
    3. 登录成功后进入发布页面。选择工作空间，单击"Select"。 ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284545605.png "点击放大")
       出现以下成功消息，表示报表已发布成功。
       ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002249480786.png "点击放大")
       
    
    
    
    
 
 #### 步骤四：添加DWS的连接信息到Power BI的网关列表中
基于数据仓库安全角度考虑，DWS不能直接暴露到公网上，因此Power BI无法一直与DWS建立连接以实时刷新已发布的报表数据。此时，需参见以下步骤将DWS连接信息添加到Power BI的网关列表中。
1. 访问[链接](https://app.powerbi.com/)，登录在线Power BI，输入电子邮件和密码，单击"提交"。
2. 在Power BI在线页面，单击左侧"Workspaces"，单击已保存报表的工作区。 
   图18选中工作区   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284701437.png "点击放大")
   
   
3. 单击需要设置的报表右上角的![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284737265.png "点击放大")，单击"Settings"。
   
   图19设置报表   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284617353.png "点击放大")
   
   
4. 将"Use an On-premises or VNet data gateway"开关打开，并单击"Actions"下面的![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284618457.png "点击放大")，在弹出的下拉信息中，单击"Add to gateway"。
   
   图20添加到网关   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284737833.png "点击放大")
   
   
5. 填写DWS的连接信息，如[表1]所示。
   
    表1添加网关信息 
   | 参数                    | 描述            | 示例                 |
   |:---|:---|:---|
   | Connection name       | 连接名称。         | 用户自定义              |
   | Server                | DWS的连接地址和端口。  | 192.168.0.196:8000 |
   | Database              | 待连接的DWS数据库名称。 | dws_test           |
   | Authentication method | 鉴权方式。         | Basic              |
   | Username              | 数据库用户名称。      | dws_thiru          |
   | Password              | 数据库用户密码。      | 前面用户自定义的密码         |
   | Encrypted connection  | 是否加密连接。       | Not encrypted      |
   | Privacy level         | 隐私级别。         | Organizational     |
      
   图21添加网关信息   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002249701194.png "点击放大")
   
   
6. 核对参数无误，单击"Create"。上方新创建的连接信息将出现在网关列表中。 
   图22添加网关成功   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284622493.png "点击放大")
   
   
7. 选择新创的连接名"pbogw_dws_cn1"，单击"Apply"。 
   网关映射成功。已完成报表与DWS的数据对接。
   图23网关映射成功   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002284623781.png "点击放大")
   
   
 
#### 更多信息
- 了解Power BI，请访问[官网](https://learn.microsoft.com/en-us/power-bi/fundamentals/power-bi-overview)。
- 了解更多安装过程，请访问[官网](https://learn.microsoft.com/en-us/data-integration/gateway/service-gateway-install)。
 
