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

① 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 的連結服務。

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

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

    Screenshot of the SAP HANA connector.

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

    Screenshot of linked service configuration for 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 (預設值)、PhysicalPartitionsOfTableSapHanaDynamicRange。 可在從 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 平行複製資料。 您可以在複製活動的 [來源] 資料表上找到資料分割選項。

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。

請遵循必要條件,先設定自我裝載 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"
        }
    }
}

查閱活動屬性

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

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