在 Power BI Desktop 中使用 SAP Business Warehouse 连接器

可使用 Power BI Desktop 访问 SAP Business Warehouse (SAP BW) 数据。 SAP BW Connector Implementation 2.0 与 1.0 版相比,在性能和功能方面有了显着改进。

有关 SAP 客户如何通过将 Power BI 连接到其 SAP BW 系统而受益的信息,请参阅 Power BI 和 SAP BW 白皮书。 有关将 DirectQuery 与 SAP BW 结合使用的详细信息,请参阅 DirectQuery 和 SAP Business Warehouse (BW)

重要

SAP BW 连接器 1.0 版已弃用。 新连接使用 SAP BW 连接器的 Implementation 2.0。 在不久的将来,对 1.0 版的所有支持都将从连接器中删除。 使用本文中的信息更新现有 1.0 版报表,以使用连接器的 Implementation 2.0。

使用 SAP BW Connector

按照以下步骤安装 SAP BW Connector 并连接到数据。

先决条件

SAP 连接器的 Implementation 2.0 需要使用 SAP .NET 连接器 3.0 或 3.1。 可以从 SAP 下载 SAP .NET 连接器 3.0 或 3.1。 只有有效的 S 用户登录才能访问下载。

.NET Framework 连接器有 32 位和 64 位版本。 选择与 Power BI Desktop 安装版本匹配的版本。

安装时,在“可选安装步骤” 中,确保选择“将程序集安装到 GAC” 。

SAP 可选安装步骤的屏幕截图,其中选择了“将程序集安装到 GAC”。

注意

SAP BW Connector 的第一个版本需要 NetWeaver DLL。 当前版本不需要 NetWeaver DLL。

在 Power BI Desktop 中连接到 SAP BW 数据

若要使用 SAP BW Connector 连接到 SAP BW 数据,请按照以下步骤进行操作:

  1. 在 Power BI Desktop 中,选择“获取数据”。

  2. 在“获取数据”屏幕上,选择“数据库”,然后选择“SAP Business Warehouse 应用程序服务器”或“SAP Business Warehouse 消息服务器”。

    显示 SAP 的“获取数据”选项的屏幕截图。

  3. 选择“连接”。

  4. 在下一个屏幕上,输入服务器、系统和客户端信息,以及是使用“Import”还是“DirectQuery”连接方法。 有关详细说明,请参阅:

    注意

    可使用 SAP BW Connector 从 SAP BW 服务器多维数据集导入数据(这是默认设置),也可使用 DirectQuery 连接到数据。 有关将 SAP BW Connector 与 DirectQuery 结合使用的详细信息,请参阅 DirectQuery 和 SAP Business Warehouse (BW)

    还可以选择“高级选项”,然后选择“语言代码”、针对指定服务器运行的自定义“MDX 语句”,以及其他选项。 有关详细信息,请参阅使用高级选项

  5. 选择“确定”可建立连接。

  6. 提供任何必要的身份验证数据并选择“连接”。 有关身份验证的详细信息,请参阅使用数据源进行身份验证

  7. 如果没有指定自定义 MDX 语句,“导航器”屏幕会显示服务器上所有可用多维数据集的列表。 可以向下钻取并选择可用多维数据集中的项目,包括维度和度量值。 Power BI 显示开放分析接口公开的查询和多维数据集。

    当从服务器中选择一个或多个项时,“导航器”显示输出表的预览。

    “导航器”屏幕中 SAP 表预览的屏幕截图。

    “导航器”对话框还提供以下显示选项:

    • 仅选定的项。 默认情况下,“导航器” 显示所有项。 此选项可用于验证所选的最后一组项。 此外,你也可以在预览区域中选择列名称来查看选定的项。
    • 启用数据预览。 此值为默认值,并显示数据预览。 通过不再请求预览数据,取消选择此选项可减少服务器调用次数。
    • 技术名称。 对于多维数据集中的对象,SAP BW 支持用户定义的技术名称。 多维数据集所有者可以公开多维数据集对象的这些易记名称,而不是只公开该对象的物理名称。

    “导航器”窗口中显示选项的屏幕截图。

  8. 选择所有需要的对象后,请选择以下选项之一:

    • “加载”用于将输出表的整个行集加载到 Power BI Desktop 数据模型中。 此时将打开“报表” 视图。 可以使用“数据”或“模型”视图来开始可视化数据或进行进一步的修改。
    • “转换数据”用于打开包含数据的“Power Query 编辑器”。 在将整个行集放入 Power BI Desktop 数据模型之前,可以指定更多数据转换和筛选步骤。

除了来自 SAP BW 多维数据集的数据外,你还可以从 Power BI Desktop 中的很多其他数据源导入数据,然后将它们合并到单一报表中。 此功能在 SAP BW 数据顶部演示许多有趣的报表和分析方案。

SAP BW Implementation 2.0 中的新选项

本部分列出了一些 SAP BW Connector Implementation 2.0 功能和改进。 有关详细信息,请参阅实现详细信息

高级选项

可在 SAP BW 连接屏幕上的“高级选项”下设置以下选项:

  • “执行模式”指定 MDX 接口如何在服务器上执行查询。 以下选项是有效的:

    • BasXml
    • BasXmlGzip
    • DataStream

    默认值为 BasXmlGzip。 此模式可以提高性能,以实现低延迟或大容量查询。

  • Batch 大小指定执行 MDX 语句时一次检索的最大行数目。 数量越少,在检索大型语义模型时对服务器的调用越多。 较大的值可以提高性能,但可能会导致 SAP BW 服务器出现内存问题。 默认值为 50000。

  • “启用特征结构”会更改“导航器”显示特征结构的方式。 此选项的默认值为 false 或未选中。 此选项会影响可供选择的对象列表,并且在本机查询模式下不受支持。

其他改进

以下列表介绍了其他 Implementation 2.0 改进:

  • 性能更好。
  • 可检索几百万行数据,通过批大小参数微调。
  • 可切换执行模式。
  • 支持压缩模式,这对高延迟连接或大型语义模型特别有用。
  • Date 变量检测改进。
  • Date(ABAP 类型 DATS)和 Time(ABAP 类型 TIMS)维度公开为日期和时间,而不是文本值。 有关详细信息,请参阅对 SAP BW 中键入的日期的支持
  • 更好的异常处理。 现在,显示 BAPI 调用中发生的错误。
  • BasXmlBasXmlGzip 模式下的列折叠。 例如,如果生成的 MDX 查询检索 40 列,但当前选择仅需要 10 列,此请求将传递到服务器,以检索较小的语义模型。

更新现有的 Implementation 1.0 报表

可以更改现有报表,以仅在“导入”模式下使用 Implementation 2.0。

  1. 从 Power BI Desktop 的现有报表中,选择功能区中的“转换数据”,然后选择要更新的 SAP Business Warehouse 查询。

  2. 右键单击查询,选择“高级编辑器” 。

  3. 在“高级编辑器”中,按如下所示更改 SapBusinessWarehouse.Cubes 调用:

  4. 确定查询是否已包含选项记录,如以下示例所示:

    显示包含选项记录的纯文本查询的屏幕截图。

    如果是这样,请添加 [Implementation 2.0] 选项,并删除任何 ScaleMeasures 选项:

    显示已添加值 Implementation = 2.0 的纯文本查询的屏幕截图。

    注意

    在此实现中不建议使用 ScaleMeasures 选项。 连接器现在始终显示未缩放的值。

  5. 如果查询不包含选项记录,请添加它。 例如,更改以下条目:

    显示添加了选项记录的纯文本查询的屏幕截图。

    to:

    显示添加了值 Implementation = 2.0 的新选项的纯文本查询的屏幕截图。

注意

SAP BW Connector 的 Implementation 2.0 应与版本 1 兼容。 但是,由于 SAP BW MDX 执行模式不同,可能存在一些差异。 若要解决任何不一致问题,请尝试在不同执行模式之间切换。

故障排除

本部分提供了一些针对 SAP BW 连接器的疑难解答情况和解决方案。 有关详细信息,请参阅 SAP Business Warehouse 连接器疑难解答

来自 SAP BW 的数值数据返回格式错误的数值数据

在此问题中,SAP BW 返回带小数点而非逗号的数值数据。 例如,1,000,000 返回为 1.000.000。

SAP BW 返回以逗号或句点作为十进制分隔符的十进制数据。 若要指定 SAP BW 应使用其中哪些字符作为十进制分隔符,Power BI Desktop 驱动程序需调用 BAPI_USER_GET_DETAIL。 此调用返回一个名为 DEFAULTS 的结构,它有一个名为 DCPFM 的字段,该字段将“十进制格式表示法”存储为以下值之一:

  • ' '(空格)= 小数点为逗号:N.NNN,NN
  • 'X' = 小数点为句点:N,NNN.NN
  • 'Y' = 小数点为 N:NNN NNN,NN

由于此问题,特定用户对 BAPI_USER_GET_DETAIL 的调用失败,该用户将获取格式错误的数据,并显示类似于以下消息的错误消息:

 You are not authorized to display users in group TI:
     <item>
         <TYPE>E</TYPE>
         <ID>01</ID>
         <NUMBER>512</NUMBER>
         <MESSAGE>You are not authorized to display users in group TI</MESSAGE>
         <LOG_NO/>
         <LOG_MSG_NO>000000</LOG_MSG_NO>
         <MESSAGE_V1>TI</MESSAGE_V1>
         <MESSAGE_V2/>
         <MESSAGE_V3/>
         <MESSAGE_V4/>
         <PARAMETER/>
         <ROW>0</ROW>
         <FIELD>BNAME</FIELD>
         <SYSTEM>CLNTPW1400</SYSTEM>
     </item>

要解决此错误,SAP 管理员必须授予 Power BI SAP BW 用户执行 BAPI_USER_GET_DETAIL 的权限。 此外,验证用户的数据是否具有正确的 DCPFM 值。

需要连接 SAP BEx 查询

可通过启用“外部访问的版本”属性在 Power BI Desktop 中执行 BEx 查询,如下图所示:

显示启用“外部访问版本”的屏幕截图。

在此问题中,“导航器”窗口不显示数据预览,而是显示“对象引用未设置为对象实例”的错误消息。

SAP 用户需要访问以下特定 BAPI 函数模块才能获取元数据,并从 SAP BW 的 InfoProviders 中检索数据:

  • BAPI_MDPROVIDER_GET_CATALOGS
  • BAPI_MDPROVIDER_GET_CUBES
  • BAPI_MDPROVIDER_GET_DIMENSIONS
  • BAPI_MDPROVIDER_GET_HIERARCHYS
  • BAPI_MDPROVIDER_GET_LEVELS
  • BAPI_MDPROVIDER_GET_MEASURES
  • BAPI_MDPROVIDER_GET_MEMBERS
  • BAPI_MDPROVIDER_GET_VARIABLES
  • BAPI_IOBJ_GETDETAIL

要解决此问题,请验证该用户是否具有对 MDPROVIDER 模块和 BAPI_IOBJ_GETDETAIL 的访问权限。

启用跟踪

若要进一步排查这些问题或类似问题,可以启用跟踪:

  1. 在 Power BI Desktop 中,依次选择“文件”>“选项和设置”>“选项”。
  2. 在“选项”中,选择“诊断”,然后在“诊断选项”下选择“启用跟踪”。
  3. 在跟踪处于活动状态时尝试从 SAP BW 获取数据,并检查跟踪文件以获取更多详细信息。

SAP BW 连接支持

下表介绍了当前 Power BI 对 SAP BW 的支持。

产品 模型 身份验证 连接器 SNC 库 支持
Power BI Desktop 任何 用户/密钥 应用程序服务 不适用
Power BI Desktop 任何 Windows 应用程序服务 sapcrypto + gsskrb5/gx64krb5
Power BI Desktop 任何 通过模拟的 Windows 应用程序服务 sapcrypto + gsskrb5/gx64krb5
Power BI Desktop 任何 用户/密钥 消息服务器 不适用
Power BI Desktop 任何 Windows 消息服务器 sapcrypto + gsskrb5/gx64krb5
Power BI Desktop 任何 通过模拟的 Windows 消息服务器 sapcrypto + gsskrb5/gx64krb5
Power BI Gateway 导入 与 Power BI Desktop 相同
Power BI Gateway DirectQuery 用户/密钥 应用程序服务 不适用
Power BI Gateway DirectQuery 通过模拟的 Windows(固定用户、无 SSO) 应用程序服务 sapcrypto + gsskrb5/gx64krb5
Power BI Gateway DirectQuery 通过 Kerberos 使用 SSO 进行 DirectQuery 查询选项 应用程序服务 sapcrypto + gsskrb5/gx64krb5
Power BI Gateway DirectQuery 用户/密钥 消息服务器 不适用
Power BI Gateway DirectQuery 通过模拟的 Windows(固定用户、无 SSO) 消息服务器 sapcrypto + gsskrb5/gx64krb5
Power BI Gateway DirectQuery 通过 Kerberos 使用 SSO 进行 DirectQuery 查询选项 消息服务器 gsskrb5/gx64krb5
Power BI Gateway DirectQuery 通过 Kerberos 使用 SSO 进行 DirectQuery 查询选项 消息服务器 sapcrypto