实现详细信息

本文介绍转换信息和 Power Query SAP Business Warehouse 连接器的实现 2 中提供的特定功能。

重要

SAP Business Warehouse 连接器版本 1.0 已弃用。 新连接将使用 SAP Business Warehouse 连接器的实现 2.0。 在不久的将来,对 1.0 版的所有支持都将从连接器中删除。 使用本文中的信息更新现有的版本 1.0 报表,以便它们可以使用此连接器的实现 2.0。

实现 2.0 的新选项

实现 2.0 支持以下选项:

  • ExecutionMode 指定用于在服务器上执行查询的 MDX 接口。 以下选项是有效的:

    • SapBusinessWarehouseExecutionMode.BasXml

    • SapBusinessWarehouseExecutionMode.BasXmlGzip

    • SapBusinessWarehouseExecutionMode.DataStream

      默认值为 SapBusinessWarehouseExecutionMode.BasXmlGzip

      在大型数据集遇到高延迟时,使用 SapBusinessWarehouseExecutionMode.BasXmlGzip 可能会提高性能。

  • BatchSize 指定执行 MDX 语句时一次检索的最大行数。 在检索大型数据集时,较小的数字意味着增加服务器调用次数。 大量行可能会提高性能,但也可能会导致 SAP BW 服务器上出现内存问题。 默认值为 50000 行。

  • EnableStructures 指示是否可识别特征结构。 此选项的默认值为 false。 影响可供选择的对象列表。 在本机查询模式下不受支持。

ScaleMeasures 选项在此实现中已弃用。 行为现在与将 ScaleMeasures 设置为 false 相同,即始终显示未缩放的值。

实现 2.0 的其他改进

以下列表介绍了新实现附带的一些其他改进:

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

将现有报表更改为使用实现 2.0

只能在导入模式下将现有报表更改为使用实现 2.0。 执行以下步骤:

  1. 打开现有报表,在功能区中选择编辑查询,然后选择要更新的 SAP Business Warehouse 查询。

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

  3. 高级编辑器中,按如下方式更改 SapBusinessWarehouse.Cubes 调用:

    确定查询是否已包含选项记录,如以下示例。

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

    如果已包含,请添加 Implementation 2.0 选项,并删除 ScaleMeasures 选项(如果存在),如下所示。

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

    如果查询尚未包含选项记录,只需添加选项记录。 对于以下选项:

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

    只需将其更改为:

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

已尽一切努力使 SAP BW 连接器的实现 2.0 与版本 1 兼容。 但是,由于使用的 SAP BW MDX 执行模式不同,因此可能会存在一些差异。 若要解决任何不一致问题,请尝试在不同执行模式之间切换。

支持 SAP BW 中的类型化日期

SAP BW 连接器的实现 2.0 支持类型化日期和时间。 如果查询具有 ABAP 类型 DATS 或 TIMS 的维度的报表,现在可以将其输出为日期,而不是输出为文本。

使用此功能的限制包括:

  • 仅在 SAP BW 连接器的实现 2.0 中可用。
  • 仅在导入模式下可用。
  • 用于连接到 SAP BW 服务器的帐户应具有足够的权限来调用 BAPI_IOBJ_GETDETAIL。
let
   Source = SapBusinessWarehouse.Cubes("sapbwtestserver", "00", "837", [ExecutionMode=SapBusinessWarehouseExecutionMode.BasXmlGzip, Implementation="2.0"]),
   #"$INFOCUBE" = Source{[Name="$INFOCUBE"]}[Data],
   #"$0D_DECU" = #"$INFOCUBE"{[Id="$0D_DECU"]}[Data],
   #"Added Items" = Cube.Transform(#"$0D_DECU",
   {
      {Cube.AddAndExpandDimensionColumn, "[0CALDAY]", {"[0CALDAY].[LEVEL01]"}, {"Calendar day.Calendar day Level 01"}},
      {Table.AddColumn, "Calendar day.Calendar day Level 01.Key", each Cube.AttributeMemberProperty([Calendar day.Calendar day Level 01], "[20CALDAY]")},
      {Cube.AddMeasureColumn, "Billed Quantity", "[Measures].[0D_INV_QTY]"}
   }) 
in
     #"Added Items"

需要添加键才能访问类型化日期。 例如,如果有一个名为 [0CALDAY] 的维度属性,则需要添加键 [0CALDAY] 才能获取类型化值。

在上面的示例中,这意味着:

  • 日历日。日历日级别 01 [0CALDAY] 将为文本(描述文字)。 (添加维度时默认添加。)
  • 日历日。日历日级别 01.Key [20CALDAY] 将是日期(必须手动选择)。

要在导入模式下手动添加键,只需展开属性并选择键。

在 Power Query 导航器中选择键属性。

键列的类型为日期,可用于筛选。 按此列进行筛选将折叠到服务器。

对 SAP BW 功能的支持

下表列出了在使用 Power Query SAP BW 连接器时不完全受支持或行为不同的所有 SAP BW 功能。

Feature 说明
本地计算 在 BEX 查询中定义的本地计算将更改通过 Bex Analyzer 等工具显示的数字。 但是,它们不会反映在通过公共 MDX 接口从 SAP 返回的数字中。

因此,在 Power Query 中看到的数字不一定与 SAP 工具中相应视觉对象的数字匹配。

例如,当从将聚合设置为“累积”(例如,运行总和)的 BEx 查询连接到查询多维数据集时,Power Query 将返回基数,而忽略该设置。 然后,分析师可以在本地应用运行总和计算,例如在 Power BI 中,但如果不这样做,则需要谨慎解释数字。
聚合 在某些情况下(尤其是在处理多种货币时),SAP 公共接口返回的聚合数字与 SAP 工具显示的数字不匹配。

因此,在 Power Query 中看到的数字不一定与 SAP 工具中相应视觉对象的数字匹配。

例如,不同货币的总计在 Bex Analyzer 中显示为“*”,但总计将由 SAP 公共接口返回,没有任何信息表明此类聚合数字毫无意义。 因此,数字(聚合,例如,$、EUR 和 AUD)将由 Power Query 显示。
货币格式 Power Query 中不会反映任何货币格式(例如,$2,300 或 4000 AUD)。
度量单位 Power Query 中不会反映度量单位(例如,230 KG)。
键与文本(短、中、长) 对于 CostCenter 等 SAP BW 特征,导航器将显示单项成本中心级别 01。 选择此项将在字段列表中包括成本中心的默认文本。 此外,可在特征的“属性”节点中选择键值、短名称、中名称和长名称值(如果在 SAP BW 中维护)。

请注意,这仅适用于导入连接模式。 对于 DirectQuery 模式,数据集中仅包括默认文本。
特性 在特征的“属性”中可选择特征的属性。 这仅适用于导入连接模式。 对于 DirectQuery 模式,属性将不可用。
特性的多个层次结构 在 SAP 中,某一特性可以具有多个层次结构。 在 BEx 分析器等工具中,当特性包含在查询中时,用户可以选择要使用的层次结构。

在 Power BI 中,可以在字段列表中将各种层次结构视为同一维度上的不同层次结构。 但是,从同一维度上的两个不同层次结构中选择多个级别时,将导致 SAP 返回空数据。
不规则层次结构的处理 SAP BW 支持不规则的层次结构,其中可能会错过级别,例如:

   Continent
      美洲
         加拿大
         USA
   未分配
      澳大利亚

在 Power BI 中,这会在缺少的级别处显示 (空白):

   Continent
      美洲
         加拿大
         USA
   未分配
      (空白)
         澳大利亚
缩放系数/反转符号 在 SAP 中,关键数字可以将缩放系数(例如 1000)定义为格式选项,这意味着所有显示都将按该系数缩放。

同样,它可以具有反转符号的属性设置。 在 Power BI 中使用此类关键数字(在视觉对象中或作为计算的一部分)时,将导致使用未缩放的数字(并且符号不会反转)。 基础缩放系数不可用。 在 Power BI 视觉对象中,轴(K、M、B)上显示的缩放单元可作为视觉对象格式的一部分进行控制。
级别动态显示/消失的层次结构 最初,在连接到 SAP BW 时,将检索有关层次结构级别的信息,从而在字段列表中生成字段集。 这将缓存,如果级别集发生更改,则在调用 Refresh 之前,字段集不会更改。

这只能在 Power BI Desktop 中实现。 发布后,无法在 Power BI 服务中调用此类 Refresh 来反映级别更改。
默认筛选器 BEX 查询可以包括默认筛选器,这些筛选器将由 SAP Bex Analyzer 自动应用。 这些不会公开,因此默认情况下,Power Query 中的等效用法不会应用相同的筛选器。
隐藏的键数字 BEX 查询可以控制关键数字的可见性,隐藏的关键数字不会显示在 SAP BEx Analyzer 中。 这不会通过公共 API 来反映,因此此类隐藏的关键数字仍将出现在字段列表中。 但是,它们在 Power Query 中可以处于隐藏状态。
数字格式 Power Query 中不会自动反映任何数字格式(小数位数、小数点等)。 但是,随后可以在 Power Query 中控制此类格式。
层次结构版本控制 SAP BW 允许维护层次结构的不同版本,例如 2007 年与 2008 年的成本中心层次结构。 Power Query 中仅提供最新版本,因为公共 API 不会公开有关版本的信息。
时间相关层次结构 使用 Power Query 时,将在当前日期评估时间相关层次结构。
币种转换 SAP BW 基于多维数据集中保留的汇率支持币种转换。 公共 API 不会公开此类功能,因此 Power Query 中不提供这些功能。
排序顺序 可以在 SAP 中定义特征的排序顺序(按文本或按键)。 Power Query 中不会反映此排序顺序。 例如,月份可能显示为 “April”、“Aug”等。

无法在 Power Query 中更改此排序顺序。
技术名称 在导航器中,可以使用“显示选项”选择器显示特征/度量名称(说明)和技术名称。 字段列表包含特征/度量名称(说明)。
最终用户语言设置 用于连接到 SAP BW 的区域设置设置为连接详细信息的一部分,并且不会反映最终报表使用者的区域设置。
文本变量 SAP BW 允许字段名称包含变量的占位符(例如,“$YEAR$ 实际值”),这些变量随后将被替换为所选值。 例如,如果为该变量选择 2016 年,则在 BEx 工具中该字段显示为“2016 实际值”。

Power Query 中的列名称不会因变量值而更改,因此将显示为“$YEAR$ 实际值”。 但是,随后可以在 Power Query 中更改列名称。
客户退出变量 公共 API 不会公开客户退出变量,因此 Power Query 不支持这些变量。

性能注意事项

下表提供了可提升 SAP BW 数据加载和刷新性能的建议摘要列表。

建议 说明
限制特征和属性(特性)选择 将数据从 SAP BW 加载到 Power Query 中所需的时间会随数据集的大小增加而增加,即平展结果集中的列数和行数。 要减少列数,请仅在导航器中选择最终希望在报表或仪表板中看到的特征和属性。
使用参数 使用筛选器/参数有助于减小结果集的大小,从而显著减少查询运行时间。

当用于有许多成员(例如客户、材料或文档编号)的大型维度时,参数特别有用。
限制关键数字数 从 BEx 查询/BW 模型中选择许多关键数字时,可能会在查询执行期间产生显著的性能影响,因为需要花时间为单位加载元数据。 仅包括 Power Query 中需要的关键数字。
将非常大的查询拆分为多个较小的查询 对于针对 InfoCubes 或 BEx 查询的非常大的查询,拆分查询可能会很有帮助。 例如,一个查询可能获取关键数字,而另一个查询(或其他几个查询)则获取特征数据。 可以在 Power Query 中联接单个查询结果。
避免使用虚拟提供程序(MultiProviders 或 InfoSets) 虚拟提供程序类似于没有持久性存储的结构。 它们在许多场景中都非常有用,但可能会显示查询性能较慢,因为它们代表实际数据之上的附加层。
避免在 BEx 查询中使用导航属性 与将相同对象用作特征的查询相比,使用导航属性的查询必须运行额外的联接才能获得值。
使用 RSRT 监视运行缓慢的查询并进行故障排除 SAP 管理员可以使用 SAP BW 中的查询监视器(事务 RSRT)来分析 SAP BW 查询的性能问题。 有关详细信息,请参阅 SAP 说明 1591837。
避免使用受限关键数字和计算得出的关键数字 两者都在查询执行期间计算,并可能会降低查询性能。
考虑使用增量刷新来提高性能 Power BI 每次刷新都会刷新整个数据集。 如果要处理大量数据,则每次刷新时都刷新整个数据集可能不会获得最佳性能。 在此场景中,可以使用增量刷新,以便仅刷新数据子集。 有关更多详细信息,请转到 Power BI 中的增量刷新

与 Analysis for Office (AFO) 的比较

Analysis for Office (AFO) 工具与 Power Query SAP Business Warehouse 连接器之间存在根本性差异,因此数据输出可能会有所不同。 AFO 不使用 MDX,而是使用 SAP 开发的专有协议,该协议不可供第三方使用,例如 Power Query SAP Business Warehouse 连接器。 SAP 仅认证使用 MDX 接口的连接器。 AFO 使用多维查询策略,该策略以不同的方式导航数据,而 Power Query SAP Business Warehouse 连接器需要平展数据,以便将其表示为表。 因此,即使是相同的数据,也会查询、表示并最终以不同的方式输出。

另请参阅