Condividi tramite


Copiare dati da SAP HANA usando Azure Data Factory o Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory e Synapse Analytics per copiare dati da un database SAP HANA. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.

Suggerimento

Per informazioni sul supporto generale per lo scenario di integrazione dei dati SAP, vedere white paper sull'integrazione dei dati SAP con introduzione dettagliata su ogni connettore SAP, confronto e materiale sussidiario.

Funzionalità supportate

Questo connettore SAP HANA è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività di copia (origine/sink)
Attività Lookup

(1) Runtime di integrazione di Azure (2) Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati come origini/sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.

In particolare, il connettore SAP HANA supporta:

  • La copia di dati da qualsiasi versione del database SAP HANA.
  • Copia di dati da modelli di informazioni HANA (ad esempio viste analitiche e di calcolo) e tabelle riga/colonna.
  • La copia di dati usando l'autenticazione Di base o Windows.
  • Copia parallela da un'origine SAP HANA. Per informazioni dettagliate, vedere la sezione Copia parallela da SAP HANA .

Suggerimento

Per copiare dati in un archivio dati SAP HANA, usare il connettore ODBC generico. Vedere la sezione sink di SAP HANA con i dettagli. Si noti che i servizi collegati per i connettori SAP HANA e ODBC sono associati a tipi diversi e pertanto non possono essere riusati.

Prerequisiti

Per usare questo connettore SAP HANA, è necessario:

  • Configurare un runtime di integrazione self-hosted. Per i dettagli, vedere l'articolo Runtime di integrazione self-hosted.
  • Installare il driver ODBC di SAP HANA nel computer del runtime di integrazione. È possibile scaricare il driver ODBC di SAP HANA dall'area per il download di software SAP. Per cercare il driver, usare la parola chiave SAP HANA CLIENT for Windows.

Introduzione

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Creare un servizio collegato a SAP HANA usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a SAP HANA nell'interfaccia utente di portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare SAP e selezionare il connettore SAP HANA.

    Screenshot of the SAP HANA connector.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot of linked service configuration for SAP HANA.

Dettagli di configurazione di Connessione or

Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità di Data Factory specifiche per il connettore SAP HANA.

Proprietà del servizio collegato

Per il servizio collegato di SAP HANA sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
Tipo La proprietà type deve essere impostata su: SapHana
connectionString Specificare le informazioni necessarie per connettersi a SAP HANA usando l'autenticazione di base o autenticazione di Windows. Vedere gli esempi seguenti.
In stringa di connessione, server/porta è obbligatorio (la porta predefinita è 30015) e il nome utente e la password sono obbligatori quando si usa l'autenticazione di base. Per altre impostazioni avanzate, vedere Proprietà di SAP HANA ODBC Connessione ion
È anche possibile inserire la password in Azure Key Vault ed estrarre la configurazione della password dal stringa di connessione. Fare riferimento all'articolo Archiviare le credenziali in Azure Key Vault con altri dettagli.
userName Specificare il nome utente quando si usa autenticazione di Windows. Esempio: user@domain.com No
password Specifica la password per l'account utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro o fare riferimento a un segreto archiviato in Azure Key Vault. No
connectVia Il runtime di integrazione da usare per la connessione all'archivio dati. È necessario un runtime di integrazione self-hosted come indicato in Prerequisiti.

Esempio: usare l'autenticazione di base

{
    "name": "SapHanaLinkedService",
    "properties": {
        "type": "SapHana",
        "typeProperties": {
            "connectionString": "SERVERNODE=<server>:<port (optional)>;UID=<userName>;PWD=<Password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: usare autenticazione di 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"
        }
    }
}

Se si usa il servizio collegato SAP HANA con il payload seguente, è ancora supportato così come è, mentre si consiglia di usare quello nuovo in futuro.

Esempio:

{
    "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"
        }
    }
}

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione di set di dati, vedere l'articolo sui set di dati. Questa sezione presenta un elenco delle proprietà supportate dal set di dati SAP HANA.

Per copiare dati da SAP HANA, sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
Tipo La proprietà type del set di dati deve essere impostata su: SapHanaTable
schema Nome dello schema nel database SAP HANA. No (se nell'origine dell'attività è specificato "query")
table Nome della tabella nel database SAP HANA. No (se nell'origine dell'attività è specificato "query")

Esempio:

{
    "name": "SAPHANADataset",
    "properties": {
        "type": "SapHanaTable",
        "typeProperties": {
            "schema": "<schema name>",
            "table": "<table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<SAP HANA linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Il set di dati tipizzato RelationalTable è ancora supportato senza modifiche, ma è consigliato l'uso del nuovo per il futuro.

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dall'origine SAP HANA.

SAP HANA come origine

Suggerimento

Per inserire i dati da SAP HANA in modo efficiente usando il partizionamento dei dati, vedere la sezione Copia parallela da SAP HANA .

Per copiare dati da SAP HANA, nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
Tipo La proprietà type dell'origine dell'attività di copia deve essere impostata su: SapHanaSource
query Specifica la query SQL che consente di leggere i dati dall'istanza di SAP HANA.
partitionOptions Specifica le opzioni di partizionamento dei dati usate per inserire dati da SAP HANA. Per altre informazioni, vedere La sezione Copia parallela da SAP HANA .
I valori consentiti sono: Nessuno (impostazione predefinita), PhysicalPartitionsOfTable, SapHanaDynamicRange. Per altre informazioni, vedere La sezione Copia parallela da SAP HANA . PhysicalPartitionsOfTable può essere usato solo quando si copiano dati da una tabella ma non si esegue una query.
Quando un'opzione di partizione è abilitata ( ovvero , non None), il grado di parallelismo per caricare simultaneamente i dati da SAP HANA è controllato dall'impostazione nell'attività parallelCopies di copia.
False
partitionSettings Specifica il gruppo di impostazioni per il partizionamento dei dati.
Si applica quando l'opzione di partizione è SapHanaDynamicRange.
False
partitionColumnName Specificare il nome della colonna di origine che verrà usata dalla partizione per la copia parallela. Se non specificato, l'indice o la chiave primaria della tabella vengono rilevati automaticamente e usati come colonna di partizione.
Si applica quando l'opzione di partizione è SapHanaDynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfHanaDynamicRangePartitionCondition nella clausola WHERE. Vedere l'esempio nella sezione Copia parallela da SAP HANA .
Sì quando si usa la SapHanaDynamicRange partizione. 
packetSize Specifica le dimensioni dei pacchetti di rete (in Kilobyte) per suddividere i dati in più blocchi. Se si dispone di grandi quantità di dati da copiare, l'aumento delle dimensioni dei pacchetti può aumentare la velocità di lettura da SAP HANA nella maggior parte dei casi. Quando si modificano le dimensioni del pacchetto, è consigliabile eseguire test delle prestazioni. Nr.
Il valore predefinito è 2048 (2 MB).

Esempio:

"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>"
            }
        }
    }
]

Se si usa l'origine RelationalSource copia tipizzata, è ancora supportata così come è, mentre si consiglia di usare quella nuova in futuro.

Copia parallela da SAP HANA

Il connettore SAP HANA fornisce il partizionamento dei dati predefinito per copiare i dati da SAP HANA in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella tabella Origine dell'attività di copia.

Screenshot of partition options

Quando si abilita la copia partizionata, il servizio esegue query parallele sull'origine SAP HANA per recuperare i dati in base alle partizioni. Il grado di parallelismo è controllato dall'impostazione parallelCopies sull'attività di copia. Ad esempio, se si imposta parallelCopies su quattro, il servizio genera e esegue simultaneamente quattro query in base all'opzione e alle impostazioni di partizione specificate e ogni query recupera una parte di dati da SAP HANA.

È consigliabile abilitare la copia parallela con il partizionamento dei dati, soprattutto quando si inseriscono grandi quantità di dati da SAP HANA. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, è consigliabile scrivere in una cartella come più file (specificare solo il nome della cartella), nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.

Scenario Impostazioni consigliate
Caricamento completo da una tabella di grandi dimensioni. Opzione di partizione: partizioni fisiche della tabella.

Durante l'esecuzione, il servizio rileva automaticamente il tipo di partizione fisica della tabella SAP HANA specificata e sceglie la strategia di partizione corrispondente:
- Partizionamento di intervalli: ottenere la colonna di partizione e gli intervalli di partizioni definiti per la tabella, quindi copiare i dati in base all'intervallo.
- Partizionamento hash: usare la chiave di partizione hash come colonna di partizione, quindi partizionare e copiare i dati in base agli intervalli calcolati dal servizio.
- Partizionamento round robin o nessuna partizione: usare la chiave primaria come colonna di partizione, quindi partizionare e copiare i dati in base agli intervalli calcolati dal servizio.
Caricare grandi quantità di dati tramite una query personalizzata. Opzione di partizione: partizione intervallo dinamico.
Query: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>.
Colonna di partizione: specificare la colonna usata per applicare la partizione dell'intervallo dinamico.

Durante l'esecuzione, il servizio calcola innanzitutto gli intervalli di valori della colonna di partizione specificata, distribuendo uniformemente le righe in un numero di bucket in base al numero di valori distinti della colonna di partizione impostata dall'impostazione di copia parallela, quindi sostituisce ?AdfHanaDynamicRangePartitionCondition con il filtro dell'intervallo di valori della colonna di partizione per ogni partizione e invia a SAP HANA.

Se si desidera usare più colonne come colonna di partizione, è possibile concatenare i valori di ogni colonna come una colonna nella query e specificarla come colonna di partizione, ad esempio SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition.

Esempio: eseguire una query con partizioni fisiche di una tabella

"source": {
    "type": "SapHanaSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Esempio: query con partizione a intervalli dinamici

"source": {
    "type": "SapHanaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "SapHanaDynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<Partition_column_name>"
    }
}

Mapping dei tipi di dati per SAP HANA

Quando si copiano dati da SAP HANA, vengono usati i mapping seguenti dai tipi di dati SAP HANA ai tipi di dati provvisori usati internamente all'interno del servizio. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.

Tipo di dati di SAP HANA Tipo di dati del servizio provvisorio
ALPHANUM Stringa
bigint Int64
BINARY Byte[]
BINTEXT Stringa
BLOB Byte[]
BOOL Byte
CLOB Stringa
DATE Data/Ora
DECIMAL Decimale
DOUBLE Double
FLOAT Double
INTEGER Int32
NCLOB Stringa
NVARCHAR Stringa
REAL Singola
SECONDDATE Data/Ora
SHORTTEXT Stringa
SMALLDECIMAL Decimale
SMALLINT Int16
STGEOMETRYTYPE Byte[]
STPOINTTYPE Byte[]
TEXT Stringa
ORA TimeSpan
TINYINT Byte
VARCHAR Stringa
TIMESTAMP Data/Ora
VARBINARY Byte[]

Sink SAP HANA

Attualmente, il connettore SAP HANA non è supportato come sink, mentre è possibile usare il connettore ODBC generico con il driver SAP HANA per scrivere dati in SAP HANA.

Seguire i prerequisiti per configurare il runtime di integrazione self-hosted e installare prima il driver ODBC di SAP HANA. Creare un servizio collegato ODBC per connettersi all'archivio dati SAP HANA, come illustrato nell'esempio seguente, quindi creare il set di dati e il sink dell'attività di copia con il tipo ODBC di conseguenza. Per altre informazioni, vedere l'articolo connettore 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"
        }
    }
}

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Per un elenco degli archivi dati supportati come origini e sink dall'attività di copia, vedere archivi dati supportati.