使用 Azure Data Factory 或 Azure Synapse Analytics 從 SAP 資料表複製資料
適用于: Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版 !
本文概述如何使用 Azure Data Factory 和 Azure Synapse Analytics 管線中的複製活動,從 SAP 資料表複製資料。 如需詳細資訊,請參閱 複製活動概觀 。
提示
若要瞭解 SAP 資料整合案例的整體支援,請參閱 使用 Azure Data Factory 白皮書 進行 SAP 資料整合,以及每個 SAP 連接器的詳細簡介、比較和指引。
支援的功能
下列功能支援此 SAP 資料表連接器:
支援的功能 | IR |
---|---|
複製活動 (source/-) | ② |
查閱活動 | ② |
(1) Azure 整合執行時間 (2) 自我裝載整合執行時間
如需複製活動支援做為來源或接收的資料存放區清單,請參閱 支援的資料存放區 資料表。
具體而言,此 SAP 資料表連接器支援:
在下列專案中從 SAP 資料表複製資料:
- SAP ERP Central Component (SAP ECC) 7.01 版或更新版本(在 2015 年之後發行的最新 SAP 支援套件堆疊中)。
- SAP Business Warehouse (SAP BW) 7.01 版或更新版本(在 2015 年之後發行的最新 SAP 支援套件堆疊中)。
- SAP S/4HANA。
- SAP Business Suite 7.01 版或更新版本中的其他產品(在 2015 年之後發行的最新 SAP 支援套件堆疊中)。
從 SAP 透明資料表、集區資料表、叢集資料表和檢視表複製資料。
如果已設定 SNC,請使用基本驗證或安全網路通訊 (SNC) 複製資料。
連線至 SAP 應用程式伺服器或 SAP 訊息伺服器。
透過預設或自訂 RFC 擷取資料。
7.01 版或更新版本是指 SAP NetWeaver 版本,而不是 SAP ECC 版本。 例如,SAP ECC 6.0 EHP 7 一般有 NetWeaver 版本 > =7.4。 如果您不確定您的環境,以下是從 SAP 系統確認版本的步驟:
- 使用 SAP GUI 連線到 SAP 系統。
- 移至 [系統 - > 狀態 ]。
- 檢查SAP_BASIS的版本,確定其等於或大於 701。
必要條件
若要使用此 SAP 資料表連接器,您需要:
設定自我裝載整合執行時間(3.17 版或更新版本)。 如需詳細資訊,請參閱 建立及設定自我裝載整合執行時間 。
從 SAP 網站下載適用于 Microsoft .NET 3.0 的 64 位 SAP 連線or,並將其安裝在自我裝載整合執行時間電腦上。 在安裝期間,請確定您在 [選擇性安裝步驟 ] 視窗中選取 [將元件安裝至 GAC ] 選項 。
在 SAP 資料表連接器中使用的 SAP 使用者必須具有下列許可權:
- 使用遠端函式呼叫 (RFC) 目的地的授權。
- S_SDSAUTH授權物件的 Execute 活動許可權。 您可以在多數授權物件上參考 SAP 附注460089。 基礎 NCo 連接器需要某些 RFC,例如RFC_FUNCTION_SEARCH。
開始使用
若要使用管線執行複製活動,您可以使用下列其中一個工具或 SDK:
- 複製資料工具
- Azure 入口網站
- The .NET SDK
- The Python SDK
- Azure PowerShell
- The REST API
- Azure Resource Manager 範本
使用 UI 建立 SAP 資料表的連結服務
使用下列步驟,在 Azure 入口網站 UI 中建立 SAP 資料表的連結服務。
流覽至 Azure Data Factory 或 Synapse 工作區中的 [管理] 索引標籤,然後選取 [連結服務],然後按一下 [新增]:
搜尋 SAP 並選取 SAP 資料表連接器。
設定服務詳細資料、測試連線,並建立新的連結服務。
連線or 組態詳細資料
下列各節提供屬性的相關詳細資料,這些屬性是用來定義 SAP 資料表連接器專屬的實體。
連結的服務屬性
SAP BW Open Hub 連結服務支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type |
type 屬性必須設為 SapTable 。 |
Yes |
server |
SAP 實例所在的伺服器名稱。 用來連線到 SAP 應用程式伺服器。 |
No |
systemNumber |
SAP 系統的系統編號。 用來連線到 SAP 應用程式伺服器。 允許的值:以字串表示的兩位數十進位數。 |
No |
messageServer |
SAP 訊息伺服器的主機名稱。 用來連線到 SAP 訊息伺服器。 |
No |
messageServerService |
訊息伺服器的服務名稱或埠號碼。 用來連線到 SAP 訊息伺服器。 |
No |
systemId |
資料表所在 SAP 系統的識別碼。 用來連線到 SAP 訊息伺服器。 |
No |
logonGroup |
SAP 系統的登入群組。 用來連線到 SAP 訊息伺服器。 |
No |
clientId |
SAP 系統中用戶端的識別碼。 允許的值:以字串表示的三位數十進位數。 |
Yes |
language |
SAP 系統使用的語言。 預設值為 EN 。 |
No |
userName |
可存取 SAP 伺服器的使用者名稱。 | Yes |
password |
使用者的密碼。 將此欄位標示為 SecureString 類型以安全地儲存,或 參考儲存在 Azure 金鑰保存庫 中的秘密。 |
Yes |
sncMode |
用來存取資料表所在 SAP 伺服器的 SNC 啟用指示器。 如果您想要使用 SNC 連線到 SAP 伺服器,請使用 。 允許的值為 0 (off、 default) 或 1 (on)。 |
No |
sncMyName |
啟動器的 SNC 名稱,用來存取資料表所在的 SAP 伺服器。 在 開啟時 sncMode 適用。 |
No |
sncPartnerName |
通訊夥伴的 SNC 名稱,可存取資料表所在的 SAP 伺服器。 在 開啟時 sncMode 適用。 |
No |
sncLibraryPath |
外部安全性產品的程式庫,可存取資料表所在的 SAP 伺服器。 在 開啟時 sncMode 適用。 |
No |
sncQop |
要套用的 SNC 保護品質等級。 當 為 [開啟] 時 sncMode 適用。 允許的值為 1 (驗證)、(完整性)、 2 3 (隱私權)、 8 (預設值)、 9 (最大值)。 |
No |
connectVia |
要用來連接到資料存放區的整合執行時間 。 需要自我裝載整合執行時間,如必要條件 稍早 所述。 | Yes |
範例 1:連線至 SAP 應用程式伺服器
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"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"
}
}
}
範例 2:連線至 SAP 訊息伺服器
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"messageServer": "<message server name>",
"messageServerService": "<service name or port>",
"systemId": "<system ID>",
"logonGroup": "<logon group>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
範例 3:使用 SNC 連線
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
},
"sncMode": 1,
"sncMyName": "<SNC myname>",
"sncPartnerName": "<SNC partner name>",
"sncLibraryPath": "<SNC library path>",
"sncQop": "8"
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
資料集屬性
如需定義資料集之區段和屬性的完整清單,請參閱 資料集 。 下一節提供 SAP 資料表資料集所支援的屬性清單。
若要從 SAP BW Open Hub 連結服務複製資料,支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type |
type 屬性必須設為 SapTableResource 。 |
Yes |
tableName |
要從中複製資料的 SAP 資料表名稱。 | Yes |
範例
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
複製活動屬性
如需定義活動的區段和屬性的完整清單,請參閱 管線 。 下一節提供 SAP 資料表來源所支援的屬性清單。
SAP 資料表作為來源
若要從 SAP 資料表複製資料,支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type |
type 屬性必須設為 SapTableSource 。 |
Yes |
rowCount |
要擷取的資料列數目。 | No |
rfcTableFields |
要從 SAP 資料表複製的欄位(資料行)。 例如: column0, column1 。 |
No |
rfcTableOptions |
篩選 SAP 資料表中資料列的選項。 例如: COLUMN0 EQ 'SOMEVALUE' 。 請參閱本文稍後的 SAP 查詢運算子資料表。 |
No |
customRfcReadTableFunctionModule |
自訂 RFC 函式模組,可用來從 SAP 資料表讀取資料。 您可以使用自訂 RFC 函式模組來定義如何從 SAP 系統擷取資料並傳回至服務。 自訂函式模組必須實作介面(匯入、匯出、資料表), /SAPDS/RFC_READ_TABLE2 類似于 ,這是服務所使用的預設介面。 |
No |
partitionOption |
要從 SAP 資料表讀取的資料分割機制。 支援的選項包括:
|
No |
partitionColumnName |
用來分割資料的資料行名稱。 | No |
partitionUpperBound |
中所 partitionColumnName 指定資料行的最大值,將用來繼續資料分割。 |
No |
partitionLowerBound |
中所 partitionColumnName 指定資料行的最小值,將用來繼續資料分割。 (注意: partitionLowerBound 當分割區選項為 PartitionOnInt 時,不能是 「0」 |
No |
maxPartitionsNumber |
要分割資料的資料分割數目上限。 預設值是 1。 | No |
sapDataColumnDelimiter |
做為傳遞至 SAP RFC 之分隔符號的單一字元,用來分割輸出資料。 | No |
提示
如果您的 SAP 資料表有大量資料,例如數十億個數據列,請使用 partitionOption
和 partitionSetting
將資料分割成較小的分割區。 在此情況下,每個分割區都會讀取資料,而且每個資料分割都會透過單一 RFC 呼叫從 SAP 伺服器擷取。
以 partitionOption
範例為例 partitionOnInt
,每個分割區中的資料列數目是使用此公式計算的:(介於 和 partitionLowerBound
之間 maxPartitionsNumber
的總 partitionUpperBound
資料列數。
若要平行載入資料分割以加速複製,平行度是由複製活動上的設定所 parallelCopies
控制。 例如,如果您設定 parallelCopies
為 4,服務會根據指定的分割區選項和設定,同時產生並執行四個查詢,而每個查詢都會從 SAP 資料表擷取部分資料。 我們強烈建議建立 maxPartitionsNumber
屬性值的 parallelCopies
倍數。 將資料複製到檔案型資料存放區時,也會重新命令將資料夾寫入為多個檔案(僅指定資料夾名稱),在此情況下效能優於寫入單一檔案。
提示
BASXML
預設會針對服務內的這個 SAP 資料表連接器啟用 。
在 中 rfcTableOptions
,您可以使用下列常見的 SAP 查詢運算子來篩選資料列:
運算子 | 描述 |
---|---|
EQ |
等於 |
NE |
不等於 |
LT |
小於 |
LE |
小於或等於 |
GT |
大於 |
GE |
大於或等於 |
IN |
和 in 一樣 TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
和 in 一樣 LIKE 'Emma%' |
範例
"activities":[
{
"name": "CopyFromSAPTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP table input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapTableSource",
"partitionOption": "PartitionOnInt",
"partitionSettings": {
"partitionColumnName": "<partition column name>",
"partitionUpperBound": "2000",
"partitionLowerBound": "1",
"maxPartitionsNumber": 500
}
},
"sink": {
"type": "<sink type>"
},
"parallelCopies": 4
}
}
]
聯結 SAP 資料表
目前 SAP 資料表連接器僅支援一個具有預設函式模組的單一資料表。 若要取得多個資料表的聯結資料,您可以遵循下列步驟,利用 SAP 資料表連接器中的 customRfcReadTableFunctionModule 屬性:
- 撰寫自訂函式模組 ,其可將查詢當作 OPTIONS,並套用您自己的邏輯來擷取資料。
- 針對 「自訂函式模組」,輸入自訂函式模組的名稱。
- 針對 「RFC 資料表選項」,指定要饋送至函式模組的資料表聯結語句,例如 「
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0」。
範例如下:
提示
您也可以考慮在 VIEW 中匯總聯結的資料,這是 SAP 資料表連接器所支援。 您也可以嘗試擷取相關資料表以上線到 Azure(例如Azure 儲存體、Azure SQL 資料庫),然後使用資料流程繼續進行進一步的聯結或篩選。
建立自訂函式模組
針對 SAP 資料表,我們目前支援 複製來源中的 customRfcReadTableFunctionModule 屬性,這可讓您利用自己的邏輯和處理資料。
作為快速指引,以下是開始使用「自訂函式模組」的一些需求:
定義:
將資料匯出至下列其中一個資料表:
以下是 SAP 資料表連接器如何與自訂函式模組搭配運作的圖例:
透過 SAP NCO 建置與 SAP 伺服器的連線。
使用下列設定的參數叫用 「自訂函式模組」:
- QUERY_TABLE:您在 SAP 資料表資料集中設定的資料表名稱;
- 分隔符號:您在 SAP 資料表來源中設定的分隔符號;
- ROWCOUNT/Option/Fields:您在資料表來源中設定的 Rowcount/Aggregated Option/Fields。
取得結果,並以下列方式剖析資料:
剖析 Fields 資料表中的值以取得架構。
取得輸出資料表的值,以查看哪些資料表包含這些值。
取得OUT_TABLE中的值、剖析資料,然後將它寫入接收中。
SAP 資料表的資料類型對應
當您從 SAP 資料表複製資料時,下列對應會從 SAP 資料表資料類型使用到服務中使用的過渡資料類型。 若要瞭解複製活動如何將來源架構和資料類型對應至接收,請參閱 架構和資料類型對應 。
SAP ABAP 類型 | 服務過渡期資料類型 |
---|---|
C (字串) |
String |
I (整數) |
Int32 |
F (浮點數) |
Double |
D (日期) |
String |
T (時間) |
String |
P (BCD Packed, Currency, Decimal, Qty) |
Decimal |
N (數值) |
String |
X (二進位和原始) |
String |
查閱活動屬性
若要瞭解屬性的詳細資料,請檢查 查閱活動 。
相關內容
如需複製活動支援作為來源和接收的資料存放區清單,請參閱 支援的資料存放區 。