共用方式為


使用 Azure Data Factory 或 Synapse Analytics,透過 Open Hub 從 SAP Business Warehouse 複製資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

此文章概述如何使用 Azure Data Factory 和 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 版或更新版本 (位於 2015 年之後發行的最新 SAP 支援套件堆疊中)。 此連接器不支援 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 -> Cube。

SAP BW Open Hub Destination (OHD) 會定義轉送 SAP 資料的目標。 SAP 資料傳輸程序 (DTP) 所支援的任何物件皆可作為 Open Hub 資料來源,例如 DSO、InfoCube、DataSource 等等。Open Hub Destination 類型是轉送的資料儲存所在之處,可以是資料庫資料表 (本機或遠端) 和一般檔案。 此 SAP BW Open Hub 連接器支援從 BW 中的 OHD 本機資料表複製資料。 如果您使用其他類型,您可以使用其他連接器直接連線到資料庫或檔案系統。

SAP BW Open Hub

差異擷取流程

SAP BW Open Hub 連接器提供兩個選用屬性:excludeLastRequestbaseRequestId,可用來處理來自 Open Hub 的差異負載。

  • excludeLastRequestId:是否要排除最後一個要求的記錄。 預設值為 True。
  • baseRequestId:差異載入的要求識別碼。 設定之後,將只會擷取 requestId 大於此屬性值的資料。

整體而言,從 SAP InfoProviders 擷取包含兩個步驟:

  1. SAP BW 資料傳輸流程 (DTP) 此步驟會將資料從 SAP BW InfoProvider 複製到 SAP BW Open Hub 資料表

  2. 資料複製 在此步驟中,連接器會讀取 Open Hub 資料表

Delta extraction flow

在第一個步驟中,會執行 DTP。 每次執行都會建立新的 SAP 要求識別碼。 要求識別碼會儲存在 Open Hub 資料表中,然後由連接器用來識別差異。 這兩個步驟會以非同步方式執行:DTP 是由 SAP 觸發,而資料複製則是透過服務觸發。

根據預設,服務不會從 Open Hub 資料表讀取最新差異 (選項 [排除最後要求] 的值為 true)。 因此,服務中的資料不是 100% 都保持在與 Open Hub 資料表中資料相同的最新狀態 (缺少最後差異)。 傳回時,此程序可確保非同步擷取不會遺漏任何資料列。 即使服務讀取 Open Hub 資料表時,DTP 仍在寫入相同的資料表,此程序仍可正常運作。

您通常會將服務上次執行的最大複製要求識別碼儲存在暫存資料存放區中 (例如上圖中的 Azure Blob)。 因此,服務不會在後續執行中再次讀取相同的要求。 同時請注意,資料不會從 Open Hub 資料表自動刪除。

為了能妥善處理差異,不允許同一個 Open Hub 資料表中有來自不同 DTP 的要求識別碼。 因此,您不得為每一個 Open Hub Destination (OHD) 建立一個以上 DTP。 必須從相同的 InfoProvider 進行完整和差異擷取時,您應該為相同的 InfoProvider 建立兩個 OHD。

必要條件

若要使用此 SAP Business Warehouse Open Hub 連接器,您必須:

  • 設定 3.13 版或更新版本的「自我裝載 Integration Runtime。 如需詳細資料,請參閱自我裝載 Integration Runtime 一文。

  • 從 SAP 的網站下載 64 位元 SAP .NET Connector 3.0,並將其安裝在自我裝載的 IR 機器上。 安裝時,請在選擇性的設定步驟視窗中確定您已選取 [將組件安裝到 GAC] 選項,如下圖所示。

    Install SAP .NET Connector

  • 在 BW 連接器中使用的 SAP 使用者必須具有下列權限:

    • RFC 和 SAP BW 的授權。
    • 「執行」授權物件 "S_SDSAUTH" 活動的權限。
  • 勾選 [技術金鑰] 選項,將 SAP Open Hub Destination 類型建立為 [資料庫資料表]。 此外也建議您將 [從資料表中刪除資料] 保留為未勾選,但這並非必要動作。 使用 DTP (直接執行或整合到現有的程序鏈結中) 將資料從您所選擇的來源物件 (例如 Cube) 移至 Open Hub Destination 資料表。

開始使用

提示

如需使用 SAP BW Open Hub 連接器的逐步解說,請參閱從 SAP Business Warehouse (BW) 載入資料

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 SAP Business Warehouse Open Hub 連接器專屬的實體。

連結服務屬性

以下是 SAP Business Warehouse Open Hub 連結服務支援的屬性:

屬性 描述 必要
type type 屬性必須設為:SapOpenHub Yes
伺服器 SAP BW 執行個體所在之伺服器的名稱。 Yes
systemNumber SAP BW 系統的系統編號。
允許的值:以字串表示的二位數十進位數字。
Yes
messageServer SAP 訊息伺服器的主機名稱。
用來連線到 SAP 訊息伺服器。
No
messageServerService 訊息伺服器的服務名稱或連接埠號碼。
用來連線到 SAP 訊息伺服器。
No
systemId 資料表所在 SAP 系統的識別碼。
用來連線到 SAP 訊息伺服器。
No
logonGroup SAP 系統的登入群組。
用來連線到 SAP 訊息伺服器。
No
clientId SAP W 系統中用戶端的用戶端識別碼。
允許的值:以字串表示的三位數十進位數字。
Yes
language SAP 系統使用的語言。 否 (預設值為 EN)
userName 能夠存取 SAP 伺服器的使用者名稱。 Yes
password 使用者的密碼。 將此欄位標記為 SecureString 以便安全儲存,或參考 Azure Key Vault 中儲存的祕密 Yes
connectVia 用於連線到資料存放區的 Integration Runtime。 如必要條件所述,必須要有一個「自我裝載 Integration Runtime」。 Yes

範例:

{
    "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 Yes
openHubDestinationName 要從中複製資料的 Open Hub Destination 名稱。 Yes

如果您在資料集中設定 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 複製活動來源的 type 屬性必須設為:SapOpenHubSource Yes
excludeLastRequest 是否要排除最後一個要求的記錄。 否 (預設值為 true)
baseRequestId 差異載入的要求識別碼。 設定之後,將只會擷取 requestId 大於此屬性值的資料。 No
customRfcReadTableFunctionModule 自訂 RFC 函式模組,可用來從 SAP 資料表讀取資料。
您可以使用自訂 RFC 函式模組來定義從 SAP 系統擷取資料並將資料傳回至服務的方式。 自訂函式模組必須實作介面 (匯入、匯出、資料表) 類似於 /SAPDS/RFC_READ_TABLE2,這是服務所使用的預設介面。
No
sapDataColumnDelimiter 已將用做為分隔符號的單一字元,傳遞到 SAP RFC 以分割輸出資料。 No

提示

如果您的 Open Hub 資料表僅包含單一要求識別碼所產生的資料 (例如,您一律執行完整負載並覆寫資料表中的現有資料,或您只在測試時執行 DTP 一次),請務必取消勾選 "excludeLastRequest" 選項,以複製資料。

若要加速資料載入,您可以在複製活動設定 parallelCopies,以便從 SAP BW Open Hub 平行載入資料。 例如,如果您將 parallelCopies 設定為四,服務會同時執行四個 RFC 呼叫,而且每個 RFC 呼叫都會從依照 DTP 要求識別碼和封裝識別碼分割的 SAP BW Open Hub 資料表中擷取一部分的資料。 這適用於唯一 DTP 要求識別碼 + 封裝識別碼的數字大於 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 (字串) String
I (整數) Int32
F (浮點數) Double
D (日期) String
T (時間) String
P (BCD 封裝、貨幣、小數、數量) Decimal
N (Numc) String
X (二進位和原始) String

查閱活動屬性

若要了解屬性的詳細資料,請參閱查閱活動

疑難排解秘訣

症狀:如果您是在 HANA 上執行 SAP BW,而且觀察到複製活動只複製了資料子集 (1 百萬列),可能的原因是您在 DTP 中啟用 [SAP HANA 執行] 選項,在此情況下,服務只能擷取第一批資料。

解決方法:在 DTP 中停用 [SAP HANA 執行] 選項,重新處理資料,然後再次嘗試執行複製活動。

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區