使用 Azure Data Factory 或 Synapse Analytics 從 SAP HANA 複製資料
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文概述如何使用 Azure Data Factory 和 Synapse Analytics 管線中的複製活動,從 SAP HANA 資料庫複製資料。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。
提示
若要了解 SAP 資料整合案例的整體支援,請參閱 SAP 資料整合白皮書,其中提供每個 SAP 連接器、比較和指導的詳細簡介。
支援的功能
此 SAP HANA 連接器支援下列功能:
支援的功能 | IR |
---|---|
複製活動 (來源/接收) | 5 |
查閱活動 | 5 |
① Azure 整合執行階段 ② 自我裝載整合執行階段
如需複製活動所支援作為來源/接收器的資料存放區清單,請參閱支援的資料存放區表格。
具體而言,這個 SAP HANA 連接器支援:
- 從任何版本的 SAP HANA 資料庫複製資料。
- 從 HANA 資訊模型 (例如「分析」和「計算」檢視) 和資料列/資料行資料表複製資料。
- 使用 Basic (基本) 或 Windows 驗證來複製資料。
- 從 SAP HANA 來源平行複製。 如需詳細資訊,請參閱從 SAP HANA 平行複製一節。
提示
若要將資料複製到 SAP HANA 資料存放區,請使用一般 ODBC 連接器。 如需詳細資料,請參閱 SAP HANA 接收器一節。 請注意,SAP HANA 連接器和 ODBC 連接器的已連接服務具有不同的類型,因此無法重複使用。
必要條件
若要使用這個 SAP HANA 接收器,您必須:
- 設定一個「自我裝載 Integration Runtime」。 如需詳細資料,請參閱自我裝載 Integration Runtime 一文。
- 在 Integration Runtime 電腦上安裝 SAP HANA ODBC 驅動程式。 您可以從 SAP 軟體下載中心下載 SAP Hana ODBC 驅動程式。 使用關鍵字 SAP HANA CLIENT for Windows 搜尋。
開始使用
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立針對 SAP HANA 的連結服務
使用下列步驟,在 Azure 入口網站 UI 中建立針對 SAP HANA 的連結服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 SAP 並選取 SAP HANA 連接器。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供屬性的相關詳細資料,這些屬性是用來定義 SAP HANA 連接器專屬的 Data Factory 實體。
連結服務屬性
以下是針對 SAP HANA 已連結服務支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 類型屬性必須設定為:SapHana | Yes |
connectionString | 使用基本驗證或 Windows 驗證,指定連線到 SAP HANA 所需的資訊。 請參考下列範例。 在連接字串中,伺服器/連接埠為必要 (預設連接埠是 30015),而使用基本驗證時,使用者名稱和密碼為必要。 如需其他進階設定,請參閱 SAP HANA ODBC 連接屬性 您也可以將密碼放在 Azure Key Vault 中,並從連接字串中提取密碼組態。 如需詳細資訊,請參閱在 Azure Key Vault 中儲存認證一文。 |
Yes |
userName | 當您使用 Windows 驗證時,請指定使用者名稱。 範例: user@domain.com |
No |
password | 指定使用者帳戶的密碼。 將此欄位標記為 SecureString 以便安全儲存,或參考 Azure Key Vault 中儲存的祕密。 | No |
connectVia | 用於連線到資料存放區的 Integration Runtime。 如必要條件所述,必須要有一個「自我裝載 Integration Runtime」。 | Yes |
範例:使用基本驗證
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;UID=<userName>;PWD=<Password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
範例:使用 Windows 驗證
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"connectionString": "SERVERNODE=<server>:<port (optional)>;",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
如果您使用具有以下承載的 SAP HANA 連結服務,其仍然如同現狀受支援,但建議您使用新版本。
範例:
{
"name": "SapHanaLinkedService",
"properties": {
"type": "SapHana",
"typeProperties": {
"server": "<server>:<port (optional)>",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
資料集屬性
如需可用來定義資料集的區段和屬性完整清單,請參閱資料集一文。 本節提供 SAP HANA 資料集所支援的屬性清單。
若要從 SAP HANA 複製資料,以下是支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的 type 屬性必須設定為 SapHanaTable | Yes |
schema | SAP HANA 資料庫中的架構名稱。 | 否 (如果已指定活動來源中的「查詢」) |
table | SAP HANA 資料庫中的表格名稱。 | 否 (如果已指定活動來源中的「查詢」) |
範例:
{
"name": "SAPHANADataset",
"properties": {
"type": "SapHanaTable",
"typeProperties": {
"schema": "<schema name>",
"table": "<table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP HANA linked service name>",
"type": "LinkedServiceReference"
}
}
}
如果您使用 RelationalTable
具型別資料集,雖然仍照現狀支援,但建議您往後使用新的版本。
複製活動屬性
如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 SAP HANA 來源所支援的屬性清單。
SAP HANA 作為來源
提示
若要使用資料分割有效率地從 SAP HANA 內嵌資料,請在從 SAP HANA 平行複製一節深入了解。
若要從 SAP HANA 複製資料,複製活動的 [source] 區段中支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設為:[SapHanaSource] | Yes |
query | 指定 SQL 查詢從 SAP HANA 執行個體讀取資料。 | Yes |
partitionOptions | 指定用來從 SAP HANA 內嵌資料的資料分割選項。 可在從 SAP HANA 平行複製一節中深入瞭解。 允許的值為:None (預設值)、PhysicalPartitionsOfTable、SapHanaDynamicRange。 可在從 SAP HANA 平行複製一節中深入瞭解。 PhysicalPartitionsOfTable 只能在從資料表複製資料但無法查詢時使用。 啟用分割選項後 (亦即不是 None ),從 SAP HANA 同時載入資料的平行程度,由複製活動的 parallelCopies 設定所控制。 |
False |
partitionSettings | 指定資料分割的設定群組。 當分割選項是 SapHanaDynamicRange 時套用。 |
False |
partitionColumnName | 指定來源資料行的名稱,供平行複製的範圍分割使用。 如果未指定,則會自動偵測資料表的索引或主索引鍵作為分割資料行。 當分割選項是 SapHanaDynamicRange 時套用。 如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfHanaDynamicRangePartitionCondition 。 請參閱從 SAP HANA 平行複製一節中的範例。 |
使用 SapHanaDynamicRange 分割區時是。 |
packetSize | 指定網路封包大小 (以 KB 為單位),將資料分割成多個區塊。 如果您有大量資料要複製,在大部分情況下,增加封包大小可能會增加從 SAP HANA 的讀取速度。 調整封包大小時,建議使用效能測試。 | 否。 預設值為 2048 (2MB)。 |
範例:
"activities":[
{
"name": "CopyFromSAPHANA",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP HANA input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapHanaSource",
"query": "<SQL query for SAP HANA>"
},
"sink": {
"type": "<sink type>"
}
}
}
]
如果您使用 RelationalSource
型別複製來源,雖然仍照現狀支援,但建議您往後使用新的版本。
從 SAP HANA 平行複製
SAP HANA 連接器提供內建的資料分割,以從 SAP HANA 平行複製資料。 您可以在複製活動的 [來源] 資料表上找到資料分割選項。
當您啟用分割複本時,服務會平行查詢 SAP HANA 來源,以依分割區來擷取資料。 平行程度由複製活動的 parallelCopies
設定所控制。 例如,如果您將 parallelCopies
設定為 4,服務會根據您指定的資料分割選項和設定,同時產生並執行四個查詢,而每個查詢會從 SAP HANA 取出一部分資料。
建議您啟用平行複製與資料分割,特別是從 SAP HANA 內嵌大量資料時。 以下針對各種情節的建議設定。 將資料複製到以檔案為基礎的資料存放區時,建議分成多個檔案來寫入資料夾 (僅指定資料夾名稱),這樣效能會比寫入單一檔案更好。
案例 | 建議的設定 |
---|---|
從大型資料表完整載入。 | 分割選項:資料表的實體分割區。 在執行期間,服務會自動偵測指定 SAP HANA 資料表的實體分割區類型,然後選擇對應的分割策略: - 範圍分割:取得為資料表定義的分割資料行和分割範圍,然後依範圍複製資料。 - 雜湊分割:使用雜湊分割索引鍵作為分割區資料行,然後根據服務計算的範圍來分割和複製資料。 - 迴圈配置分割或無分割:使用主鍵做為分割資料行,然後根據服務計算的範圍來分割和複製資料。 |
使用自訂查詢載入大量資料。 | 分割選項:動態範圍分割。 查詢: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause> 。分割資料行:指定用於套用動態範圍分割的資料行。 在執行期間,服務會先計算指定分割資料行的值範圍,方法是根據平行複製設定的相異分割資料行值數目,將資料列平均分散到數個貯體中,然後將 ?AdfHanaDynamicRangePartitionCondition 取代為篩選每個分割的分割資料行值範圍,並傳送至 SAP HANA。如果您想要使用多個資料行作為分割資料行,您可以將每個資料行的值串連為查詢中的一個資料行,並將其指定為分割資料行,例如 SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition 。 |
範例:使用資料表的實體分割進行查詢
"source": {
"type": "SapHanaSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
範例:使用動態範圍分割進行查詢
"source": {
"type": "SapHanaSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "SapHanaDynamicRange",
"partitionSettings": {
"partitionColumnName": "<Partition_column_name>"
}
}
SAP HANA 的資料類型對應
從 SAP HANA 複製資料時,會使用下列從 SAP HANA 資料類型到服務中內部使用過渡期資料類型的對應。 請參閱結構描述和資料類型對應,以了解複製活動如何將來源結構描述和資料類型對應至接收器。
SAP HANA 資料類型 | 過渡期服務資料類型 |
---|---|
ALPHANUM | String |
bigint | Int64 |
BINARY | Byte[] |
BINTEXT | String |
BLOB | Byte[] |
BOOL | Byte |
CLOB | String |
日期 | Datetime |
DECIMAL | Decimal |
DOUBLE | Double |
FLOAT | Double |
INTEGER | Int32 |
NCLOB | String |
NVARCHAR | String |
REAL | Single |
SECONDDATE | Datetime |
SHORTTEXT | String |
SMALLDECIMAL | Decimal |
SMALLINT | Int16 |
STGEOMETRYTYPE | Byte[] |
STPOINTTYPE | Byte[] |
TEXT | String |
TIME | TimeSpan |
TINYINT | Byte |
VARCHAR | String |
timestamp | Datetime |
VARBINARY | Byte[] |
SAP HANA 接收器
目前不支援使用 SAP HANA 連接器作為接收器,但您可以使用一般 ODBC 連接器搭配 SAP HANA 驅動程式將資料寫入 SAP HANA。
請遵循必要條件,先設定自我裝載 Integration Runtime 並安裝 SAP HANA ODBC 驅動程式。 建立 ODBC 連結服務以連線到 SAP HANA 資料存放區,如下列範例所示,然後據以建立資料集並複製具有 ODBC 類型的活動接收器。 從 ODBC 連接器一文深入瞭解。
{
"name": "SAPHANAViaODBCLinkedService",
"properties": {
"type": "Odbc",
"typeProperties": {
"connectionString": "Driver={HDBODBC};servernode=<HANA server>.clouddatahub-int.net:30015",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
查閱活動屬性
若要了解屬性的詳細資料,請參閱查閱活動。
相關內容
如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。