Compartilhar via

使用 Azure 数据工厂或 Synapse Analytics 通过 Open Hub 从 SAP Business Warehouse 复制数据

适用于:Azure 数据工厂 Azure Synapse Analytics

本文概述如何在 Azure 数据工厂和 Synapse Analytics 管道中使用复制活动,通过 Open Hub 从 SAP Business Warehouse (BW) 复制数据。 它建立在提供复制活动总体概述的复制活动概述文章之上。

提示

若要了解对 SAP 数据集成方案的总体支持,请参阅 SAP 数据集成白皮书,其中包含有关每个 SAP 连接器的详细介绍、比较和指导。

支持的功能

此 SAP Business Warehouse Open Hub 连接器支持以下功能:

支持的功能 IR
复制活动(源/-)
查找活动

① Azure 集成运行时 ② 自承载集成运行时

有关复制活动支持作为源/接收端的数据存储列表,请参阅支持的数据存储表。

具体而言,此 SAP Business Warehouse Open Hub 连接器支持:

  • SAP Business Warehouse 7.01 或更高版本(位于最新的 SAP 支持包堆栈中,该堆栈是 2015 年以后发布的) 。 此连接器不支持 SAP BW/4HANA。
  • 通过 Open Hub Destination 本地表复制数据,该表下方可能是 DSO、InfoCube、MultiProvider、DataSource 等。
  • 使用基本身份验证复制数据。
  • 连接到 SAP 应用程序服务器或 SAP 消息服务器。
  • 通过 RFC 检索数据。

SAP BW Open Hub 集成

可以通过 SAP BW Open Hub Service 从 SAP BW 高效地提取数据。 下图显示了用户在 SAP 系统中的一个典型流程,其中的数据流动方向为:SAP ECC -> PSA -> DSO -> 多维数据集。

SAP BW Open Hub Destination (OHD) 定义 SAP 数据的中继目标。 可以使用 SAP 数据传输过程 (DTP) 支持的任何对象(例如,DSO、InfoCube、DataSource 等)作为 Open Hub 数据源。Open Hub Destination 类型是存储中继数据的地方,可以是数据库表(本地或远程)和平面文件。 此 SAP BW Open Hub 连接器支持从 BW 中的 OHD 本地表复制数据。 如果使用其他类型,则可使用其他连接器直接连接到数据库或文件系统。

SAP BW 开放中心

增量提取流

SAP BW Open Hub 连接器提供两个可选属性:excludeLastRequestbaseRequestId,可用于处理来自 Open Hub 的增量负载。

  • excludeLastRequestId:是否排除最后一个请求的记录。 默认值为 true。
  • baseRequestId:用于增量加载的请求 ID。 设置以后,只会检索 requestId 大于此属性的值的数据。

总之,从 SAP InfoProviders 提取包含两个步骤:

  1. SAP BW 数据传输过程 (DTP) :此步骤将数据从 SAP BW InfoProvider 复制到 SAP BW Open Hub 表

  2. 数据复制 在此步骤中,连接器读取 Open Hub 表

增量提取流

在第一步中,执行 DTP。 每执行一次都会创建新的 SAP 请求 ID。 此请求 ID 存储在 Open Hub 表中,然后连接器用它来标识增量。 这两个步骤以异步方式运行:DTP 由 SAP 触发,数据复制通过服务触发。

默认情况下,该服务不会从 Open Hub 表中读取最新的增量(“排除最近一次请求”选项为 true)。 在此,服务中的数据不是 100% 与 Open Hub 表中的数据一致(缺少最后一个增量)。 因此,此过程确保因异步提取而不会导致任何行丢失。 即使在服务读取 Open Hub 表,而 DTP 仍在对同一表进行写入时,性能也非常出色。

通常,您会将服务上次运行时复制最多的请求 ID 存储在一个暂存数据存储中(例如上述示意图中的 Azure Blob)。 因此,该服务不会在后续运行中再次读取同一请求。 同时请注意,数据不会自动从 Open Hub 表中删除。

为了进行正常的增量处理,不允许将来自不同 DTP 的请求 ID 置于同一 Open Hub 表中。 因此,不得为单个 Open Hub 目标 (OHD) 创建多个 DTP。 需要从同一个 InfoProvider 进行全量提取和增量提取时,应为该 InfoProvider 创建两个 OHD。

先决条件

若要使用此 SAP Business Warehouse Open Hub 连接器,需要:

  • 设置 3.13 或更高版本的自承载集成运行时。 有关详细信息,请参阅自承载集成运行时文章。

  • 从 SAP 的网站下载 64 位 SAP .NET Connector 3.0 ,将其安装在自承载 IR 计算机上。 安装时,请在可选的安装步骤窗口中确保选择“将程序集安装到 GAC”选项,如下图所示。

    安装 SAP .NET Connector

  • 在 BW 连接器中使用的 SAP 用户需要有以下权限:

    • RFC 和 SAP BW 的授权。
    • 授权对象“S_SDSAUTH”的“执行”活动的权限。
  • 将 SAP Open Hub Destination 类型创建为“数据库表”(勾选“技术密钥”选项)。 另外还建议取消选中“从表中删除数据”,虽然这不是必需的操作。 使用 DTP(直接执行或集成到现有进程链中)将数据从所选源对象(例如多维数据集)传输到 Open Hub Destination 表。

入门

提示

有关使用 SAP BW Open Hub 连接器的演练,请参阅从 SAP Business Warehouse (BW) 加载数据

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

以下部分提供了有关定义特定于 SAP Business Warehouse Open Hub 连接器实体的属性的详细信息。

链接的服务属性

SAP Business Warehouse Open Hub 链接服务支持以下属性:

属性 描述 必填
类型 type 属性必须设置为:SapOpenHub
服务器 SAP BW 实例所驻留的服务器的名称。
系统编号 SAP BW 系统的系统编号。
允许值:用字符串表示的两位十进制数。
消息服务器 SAP 消息服务器的主机名。
用于连接到 SAP 消息服务器。
消息服务器服务 消息服务器的服务名称或端口号。
用于连接到 SAP 消息服务器。
systemId 表所在的 SAP 系统的 ID。
用于连接到 SAP 消息服务器。
logonGroup SAP 系统的登录组。
用于连接到 SAP 消息服务器。
clientId SAP W 系统中的客户端 ID。
允许值:用字符串表示的三位十进制数。
语言 SAP 系统使用的语言。 否(默认值为 EN
userName 有权访问 SAP 服务器的用户名。
密码 用户密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure Key Vault 中的机密
connectVia 用于连接到数据存储的集成运行时。 如先决条件中所述,需要自承载集成运行时。

示例:

{
    "name": "SapBwOpenHubLinkedService",
    "properties": {
        "type": "SapOpenHub",
        "typeProperties": {
            "server": "<server name>",
            "systemNumber": "<system number>",
            "clientId": "<client id>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供 SAP BW Open Hub 数据集支持的属性列表。

若要从/向 SAP BW Open Hub 复制数据,请将数据集的 type 属性设置为 SapOpenHubTable。 支持以下属性。

属性 描述 必填
类型 type 属性必须设置为 SapOpenHubTable
openHubDestinationName 要从中复制数据的 Open Hub Destination 的名称。

如果在数据集中设置了 excludeLastRequestbaseRequestId,则仍按原样支持该数据集,但建议你以后在活动源中使用新模型。

示例:

{
    "name": "SAPBWOpenHubDataset",
    "properties": {
        "type": "SapOpenHubTable",
        "typeProperties": {
            "openHubDestinationName": "<open hub destination name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<SAP BW Open Hub linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 SAP BW Open Hub 源支持的属性列表。

将 SAP BW Open Hub 作为源

若要从 SAP BW Open Hub 复制数据,复制活动的 source 节支持以下属性:

属性 描述 必填
类型 复制活动源的 type 属性必须设置为 SapOpenHubSource
排除最后一个请求 是否排除最后一次请求的记录。 否(默认为 true
baseRequestId 增量加载请求的ID。 设置以后,只会检索 requestId 大于此属性的值的数据。
customRfcReadTableFunctionModule(自定义Rfc读取表功能模块) 可用于从 SAP 表读取数据的自定义 RFC 函数模块。
可以使用自定义 RFC 函数模块来定义如何从 SAP 系统检索数据并将其返回到服务。 必须为自定义函数模块实现一个接口(导入、导出、表),类似于服务使用的默认接口 /SAPDS/RFC_READ_TABLE2
sapDataColumnDelimiter 单个字符,将用作传递给 SAP RFC 的分隔符,以用于拆分输出数据。

提示

如果 Open Hub 表只包含通过单个请求 ID 生成的数据(例如,始终进行完全加载并覆盖表中的现有数据,或者只在测试时运行 DTP 一次),则请记住取消选中“excludeLastRequest”选项,以便复制数据。

若要加快数据加载速度,可以在复制活动上设置 parallelCopies,以并行方式从 SAP BW Open Hub 加载数据。 例如,如果将 parallelCopies 设置为 4,则该服务会同时执行四个 RFC 调用,并且每个 RFC 调用都会从 SAP BW Open Hub 表中检索部分数据,该表按 DTP 请求 ID 和包 ID 进行分区。 这适用于唯一 DTP 请求 ID + 包 ID 的数目大于 parallelCopies 值的情况。 将数据复制到基于文件的数据存储中时,还建议将数据作为多个文件写入文件夹(仅指定文件夹名称),在这种情况下,性能优于写入单个文件。

示例:

"activities":[
    {
        "name": "CopyFromSAPBWOpenHub",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SAP BW Open Hub input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SapOpenHubSource",
                "excludeLastRequest": true
            },
            "sink": {
                "type": "<sink type>"
            },
            "parallelCopies": 4
        }
    }
]

SAP BW Open Hub 的数据类型映射

从 SAP BW Open Hub 复制数据时,以下映射用于从 SAP BW 数据类型映射到在服务内部使用的临时数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

SAP ABAP 类型 临时服务数据类型
C (字符串) 字符串
I (整数) Int32
F (浮点) 双精度
D (日期) 字符串
T (时间) 字符串
P(BCD 打包,货币,十进制,数量) 十进制
N (Numc) 字符串
X(二进制,原始) 字符串

查找活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

故障排除提示

症状:如果在 HANA 上运行 SAP BW 并观察到使用复制活动仅复制了数据子集(100 万行),则可能的原因是在 DTP 中启用了“SAP HANA 执行”选项,在这种情况下,该服务只能检索第一批数据。

解决方法: 请在 DTP 中禁用“SAP HANA 执行”选项,重新处理数据,然后再次尝试执行复制活动。

有关复制活动支持的源和接收器数据存储列表,请参阅支持的数据存储