使用 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
複製活動 (來源/接收)
查閱活動

(1) Azure 整合執行時間 (2) 自我裝載整合執行時間

如需複製活動支援做為來源/接收的資料存放區清單,請參閱 支援的資料存放區 資料表。

具體而言,此 SAP HANA 連接器支援:

  • 從任何版本的 SAP HANA 資料庫複製資料。
  • HANA 資訊模型 複製資料(例如分析和計算檢視表)和 資料列/資料行資料表
  • 使用 基本 Windows 驗證來複製資料。
  • 從 SAP HANA 來源平行複製。 如需詳細資訊,請參閱 SAP HANA 的平行複製一節。

提示

若要將資料 複製到 SAP HANA 資料存放區,請使用一般 ODBC 連接器。 如需詳細資料,請參閱 SAP HANA 接收 一節。 請注意,SAP HANA 連接器和 ODBC 連接器的連結服務類型不同,因此無法重複使用。

必要條件

若要使用此 SAP HANA 連接器,您需要:

開始使用

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

使用 UI 建立 SAP HANA 的連結服務

使用下列步驟,在 Azure 入口網站 UI 中建立 SAP HANA 的連結服務。

  1. 流覽至 Azure Data Factory 或 Synapse 工作區中的 [管理] 索引標籤,然後選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 SAP 並選取 SAP HANA 連接器。

    Screenshot of the SAP HANA connector.

  3. 設定服務詳細資料、測試連線,並建立新的連結服務。

    Screenshot of linked service configuration for SAP HANA.

連線or 組態詳細資料

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

連結的服務屬性

SAP HANA 連結服務支援下列屬性:

屬性 描述 必要
type type 屬性必須設定為: SapHana Yes
connectionString 使用 基本驗證 Windows 驗證 指定連線至 SAP HANA 所需的資訊。 請參閱下列範例。
在連接字串中,伺服器/埠是強制性的(預設埠為 30015),而使用基本驗證時,使用者名稱和密碼是必要的。 如需其他進階設定,請參閱 SAP HANA ODBC 連線ion 屬性
您也可以將密碼放入 Azure 金鑰保存庫,並將密碼組態從連接字串提取出來。 如需 詳細資訊, 請參閱在 Azure 金鑰保存庫中儲存認證一文。
Yes
userName 使用 Windows 驗證 時指定使用者名稱。 範例: user@domain.com No
password 指定使用者帳戶的密碼。 將此欄位標示為 SecureString 以安全地儲存,或 參考儲存在 Azure 金鑰保存庫 中的秘密。 No
connectVia 用於連線到資料存放區的 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 資料集的類型屬性必須設定為: 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 複製資料,複製活動 來源 區段中支援下列屬性:

屬性 描述 必要
type 複製活動來源的類型屬性必須設定為: SapHanaSource Yes
query 指定要從 SAP HANA 實例讀取資料的 SQL 查詢。 Yes
partitionOptions 指定用來從 SAP HANA 擷取資料的資料分割選項。 從 SAP HANA 的平行複製一節深入瞭解。
允許值為: None (預設值)、 PhysicalPartitionsOfTable SapHanaDynamicRange 。 從 SAP HANA 的平行複製一節深入瞭解。 PhysicalPartitionsOfTable 只能用於從資料表複製資料,但不能查詢時使用。
啟用資料分割選項時(也就是,不是 None ),從 SAP HANA 同時載入資料的平行處理原則程度是由複製活動上的 設定所 parallelCopies 控制。
partition設定 指定資料分割的設定群組。
當資料分割選項為 SapHanaDynamicRange 時套用。
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 複製資料。 您可以在複製活動的 [源 資料表] 上 找到資料分割選項。

Screenshot of partition options

當您啟用資料分割複製時,服務會針對 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。

請遵循必要條件 來設定自我裝載整合執行時間,並先安裝 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"
        }
    }
}

查閱活動屬性

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

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