我不是专家,但是 BW 人员向我解释了区别,您可以同时使用两者,但是使用 OpenHub,您可以在 BW 查询上运行提取,而无需 BW 人员参与,但性能不会伟大的。使用 MDX,我相信需要在 BW 上进行额外的开发,但性能会更好。
另外请记住,当我运行这些查询时,我发现很难将其并行化,虽然 Microsoft 文档没有提供一个很好的示例,但我发现无论我推送到 BW 的内容是作为单个查询发送的。
另外,我最近的用例是从 SAP BW 中的表与多维数据集中获取数据,因此这可能有效。
我按照"SAP Table" connector 列出的说明进行操作
要使此过程正常运行,您需要一个自托管的 IR(在您的笔记本电脑上或连接到 ADF 的 VM 上),并且您需要安装以下驱动程序:
要获得这些驱动程序,您可能需要联系您的 Basis 团队。他们还需要创建一个接口角色(尤其是如果这是您第一次建立此连接并且您希望服务帐户被其他进程重用)。
在所有这些之后,您还需要将 RFC 授权添加到此接口。以下是对我有用的。 Microsoft 网站确实给出了建议的 RFC 授权,但这些几乎都是管理员级别的,我们的 Basis 团队基本上不想这样做:
S_RFC:
FUGR - RFC1、SYST、SYSU
FUNC - RFCPING、RFC_FUNCTION_SEARCH
ACTVT – 16
除上述之外,我们还必须运行一些测试,发现根据您要从中提取数据的表的数量,他们可能需要添加额外的授权,以便您只能从该表中读取。
上述流程是我遵循的流程,因此您的流程可能看起来有些不同,但要完成这项工作,您需要:自托管 IR、安装在这些 IR 上的 SAP 驱动程序、允许您访问 BW 系统 ID 的防火墙规则、接口由 Basis 创建,然后是 RFC 授权。
我在 microsoft github 文档上提出了一个关于不正确的 RFC 授权列表的问题:https://github.com/MicrosoftDocs/azure-docs/issues/60637
还请记住,ADF 提取数据的方式首先向 BW 发送查询,然后 BW 在其末端创建一个文件来收集该信息,然后将该文件发送回自托管 IR,然后写入数据通过 ADF 进入存储帐户。可能发生的情况是,如果文件太大,则管道可能会失败,但这不是因为 ADF,而是因为 BW 方面的限制。
希望我的经验可以帮助其他陷入困境的人:)