Delen via


Gegevens kopiëren van SAP HANA met behulp van Azure Data Factory of Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u de kopieeractiviteit in Azure Data Factory- en Synapse Analytics-pijplijnen gebruikt om gegevens te kopiëren uit een SAP HANA-database. Het is gebaseerd op het artikel over het overzicht van kopieeractiviteiten met een algemeen overzicht van de kopieeractiviteit.

Tip

Zie het technisch document over SAP-gegevensintegratie met gedetailleerde inleiding over elke SAP-connector, vergelijking en richtlijnen voor algemene ondersteuning voor het scenario voor SAP-gegevensintegratie.

Ondersteunde mogelijkheden

Deze SAP HANA-connector wordt ondersteund voor de volgende mogelijkheden:

Ondersteunde mogelijkheden IR
Copy-activiteit (bron/sink) (2)
Activiteit Lookup (2)

(1) Azure Integration Runtime (2) Zelf-hostende Integration Runtime

Zie de tabel Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen/sinks door de kopieeractiviteit.

Deze SAP HANA-connector ondersteunt met name:

  • Gegevens kopiëren uit elke versie van de SAP HANA-database.
  • Gegevens kopiëren uit HANA-informatiemodellen (zoals analyse- en berekeningsweergaven) en rij-/kolomtabellen.
  • Gegevens kopiëren met basis- of Windows-verificatie.
  • Parallel kopiëren vanuit een SAP HANA-bron. Zie de sectie Parallel HANA van SAP HANA voor meer informatie.

Tip

Als u gegevens wilt kopiëren naar het SAP HANA-gegevensarchief, gebruikt u de algemene ODBC-connector. Zie de sectie SAP HANA-sink met details. Houd er rekening mee dat de gekoppelde services voor SAP HANA-connector en ODBC-connector verschillend zijn en dus niet opnieuw kunnen worden gebruikt.

Vereisten

Als u deze SAP HANA-connector wilt gebruiken, moet u het volgende doen:

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde service maken voor SAP HANA met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde service te maken naar SAP HANA in de gebruikersinterface van Azure Portal.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar SAP en selecteer de SAP HANA-connector.

    Schermopname van de SAP HANA-connector.

  3. Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.

    Schermopname van de configuratie van de gekoppelde service voor SAP HANA.

Configuratiedetails van connector

De volgende secties bevatten details over eigenschappen die worden gebruikt voor het definiëren van Data Factory-entiteiten die specifiek zijn voor SAP HANA-connector.

Eigenschappen van gekoppelde service

De volgende eigenschappen worden ondersteund voor de gekoppelde SAP HANA-service:

Eigenschappen Beschrijving Vereist
type De typeeigenschap moet worden ingesteld op: SapHana Ja
connectionString Geef informatie op die nodig is om verbinding te maken met SAP HANA met behulp van basisverificatie of Windows-verificatie. Raadpleeg de volgende voorbeelden.
In verbindingsreeks is server/poort verplicht (standaardpoort 30015) en is gebruikersnaam en wachtwoord verplicht bij het gebruik van basisverificatie. Raadpleeg de eigenschappen van SAP HANA ODBC-verbinding voor aanvullende geavanceerde instellingen
U kunt ook een wachtwoord in Azure Key Vault plaatsen en de wachtwoordconfiguratie uit de verbindingsreeks halen. Raadpleeg het artikel Store-referenties in Azure Key Vault voor meer informatie.
Ja
gebruikersnaam Geef de gebruikersnaam op bij het gebruik van Windows-verificatie. Voorbeeld: user@domain.com Nee
password Geef het wachtwoord op voor het gebruikersaccount. Markeer dit veld als SecureString om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in Azure Key Vault. Nee
connectVia De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. Een zelf-hostende Integration Runtime is vereist, zoals vermeld in vereisten. Ja

Voorbeeld: basisverificatie gebruiken

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

Voorbeeld: Windows-verificatie gebruiken

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

Als u een gekoppelde SAP HANA-service met de volgende nettolading gebruikt, wordt deze nog steeds ondersteund, terwijl u wordt aangeraden de nieuwe service in de toekomst te gebruiken.

Voorbeeld:

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

Eigenschappen van gegevensset

Zie het artikel gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets . Deze sectie bevat een lijst met eigenschappen die worden ondersteund door sap HANA-gegevensset.

Als u gegevens uit SAP HANA wilt kopiëren, worden de volgende eigenschappen ondersteund:

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de gegevensset moet worden ingesteld op: SapHanaTable Ja
schema Naam van het schema in de SAP HANA-database. Nee (als 'query' in de activiteitsbron is opgegeven)
table Naam van de tabel in de SAP HANA-database. Nee (als 'query' in de activiteitsbron is opgegeven)

Voorbeeld:

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

Als u RelationalTable getypte gegevensset gebruikt, wordt deze nog steeds ondersteund terwijl u wordt aangeraden de nieuwe gegevensset te gebruiken.

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van activiteiten. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door sap HANA-bron.

SAP HANA als bron

Tip

Als u gegevens efficiënt van SAP HANA wilt opnemen met behulp van gegevenspartitionering, vindt u meer informatie uit de sectie Parallel kopiëren van SAP HANA .

Als u gegevens van SAP HANA wilt kopiëren, worden de volgende eigenschappen ondersteund in de sectie bron van kopieeractiviteit:

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de bron van de kopieeractiviteit moet worden ingesteld op: SapHanaSource Ja
query Hiermee geeft u de SQL-query op voor het lezen van gegevens uit het SAP HANA-exemplaar. Ja
partitionOptions Hiermee geeft u de opties voor gegevenspartitionering op die worden gebruikt voor het opnemen van gegevens uit SAP HANA. Meer informatie over parallel kopiëren vanuit de sectie SAP HANA .
Toegestane waarden zijn: Geen (standaard), PhysicalPartitionsOfTable, SapHanaDynamicRange. Meer informatie over parallel kopiëren vanuit de sectie SAP HANA . PhysicalPartitionsOfTable kan alleen worden gebruikt bij het kopiëren van gegevens uit een tabel, maar geen query.
Wanneer een partitieoptie is ingeschakeld (dat wil niet None), wordt de mate van parallelle uitvoering om gegevens van SAP HANA gelijktijdig te laden, bepaald door de parallelCopies instelling voor de kopieeractiviteit.
Vals
partitionSettings Geef de groep van de instellingen voor gegevenspartitionering op.
Toepassen wanneer de partitieoptie is SapHanaDynamicRange.
Vals
partitionColumnName Geef de naam op van de bronkolom die wordt gebruikt door de partitie voor parallelle kopie. Als deze niet is opgegeven, wordt de index of de primaire sleutel van de tabel automatisch gedetecteerd en gebruikt als partitiekolom.
Toepassen wanneer de partitieoptie is SapHanaDynamicRange. Als u een query gebruikt om de brongegevens op te halen, koppelt u deze ?AdfHanaDynamicRangePartitionCondition in WHERE-component. Zie het voorbeeld in de sectie Parallel KOPIËREN van SAP HANA .
Ja wanneer u partitie gebruikt SapHanaDynamicRange . 
packetSize Hiermee geeft u de netwerkpakketgrootte (in Kilobytes) om gegevens te splitsen in meerdere blokken. Als u een grote hoeveelheid gegevens hebt om te kopiëren, kan het vergroten van de leessnelheid van SAP HANA in de meeste gevallen toenemen. Prestatietests worden aanbevolen bij het aanpassen van de pakketgrootte. Nee
De standaardwaarde is 2048 (2 MB).

Voorbeeld:

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

Als u RelationalSource getypte kopieerbron gebruikt, wordt deze nog steeds ondersteund terwijl u wordt aangeraden de nieuwe bron te gebruiken.

Parallelle kopie van SAP HANA

De SAP HANA-connector biedt ingebouwde gegevenspartitionering om gegevens parallel van SAP HANA te kopiëren. U vindt opties voor gegevenspartitionering in de brontabel van de kopieeractiviteit.

Schermopname van partitieopties

Wanneer u gepartitioneerde kopieën inschakelt, voert de service parallelle query's uit op uw SAP HANA-bron om gegevens op partities op te halen. De parallelle graad wordt bepaald door de parallelCopies instelling voor de kopieeractiviteit. Als u bijvoorbeeld instelt op parallelCopies vier, genereert de service gelijktijdig vier query's op basis van de opgegeven partitieoptie en -instellingen en haalt elke query een deel van de gegevens op uit uw SAP HANA.

U wordt aangeraden parallelle kopieën met gegevenspartitionering in te schakelen, met name wanneer u grote hoeveelheden gegevens uit uw SAP HANA opneemt. Hier volgen voorgestelde configuraties voor verschillende scenario's. Wanneer u gegevens kopieert naar een bestandsgegevensarchief, is het raadzaam om naar een map te schrijven als meerdere bestanden (alleen mapnaam opgeven), in welk geval de prestaties beter zijn dan schrijven naar één bestand.

Scenario Voorgestelde instellingen
Volledige belasting van grote tabel. Partitieoptie: fysieke partities van de tabel.

Tijdens de uitvoering detecteert de service automatisch het fysieke partitietype van de opgegeven SAP HANA-tabel en kiest de bijbehorende partitiestrategie:
- Bereikpartitionering: haal de partitiekolom en partitiebereiken op die zijn gedefinieerd voor de tabel en kopieer vervolgens de gegevens per bereik.
- Hash partitionering: gebruik hashpartitiesleutel als partitiekolom, partitioneer en kopieer de gegevens op basis van bereiken die door de service worden berekend.
- Round Robin Partitioning of No Partitioning: Gebruik de primaire sleutel als partitiekolom, partitioneer en kopieer de gegevens op basis van bereiken die door de service worden berekend.
Laad een grote hoeveelheid gegevens met behulp van een aangepaste query. Partitieoptie: partitie dynamisch bereik.
Query: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>.
Partitiekolom: Geef de kolom op die wordt gebruikt om een dynamische bereikpartitie toe te passen.

Tijdens de uitvoering berekent de service eerst de waardebereiken van de opgegeven partitiekolom, door de rijen gelijkmatig te verdelen in een aantal buckets op basis van het aantal afzonderlijke partitiekolomwaarden, de instelling voor parallelle kopie, en vervolgens vervangt ?AdfHanaDynamicRangePartitionCondition door het filteren van het waardebereik van de partitiekolom voor elke partitie en verzendt naar SAP HANA.

Als u meerdere kolommen wilt gebruiken als partitiekolom, kunt u de waarden van elke kolom samenvoegen als één kolom in de query en deze opgeven als de partitiekolom, zoals SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition.

Voorbeeld: query's uitvoeren met fysieke partities van een tabel

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

Voorbeeld: query met partitie dynamisch bereik

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

Toewijzing van gegevenstypen voor SAP HANA

Bij het kopiëren van gegevens uit SAP HANA worden de volgende toewijzingen gebruikt van SAP HANA-gegevenstypen naar tussentijdse gegevenstypen die intern in de service worden gebruikt. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.

SAP HANA-gegevenstype Tussentijdse servicegegevenstype
ALFANUM String
BIGINT Int64
BINARY Byte[]
BINTEXT String
BLOB Byte[]
BOOL Byte
CLOB String
DATUM Datum en tijd
DECIMAL Decimal
DOUBLE Dubbel
FLOAT Dubbel
GEHEEL GETAL Int32
NCLOB String
NVARCHAR String
WERKELIJK Eén
SECONDDATE Datum en tijd
SHORTTEXT String
SMALLDECIMAL Decimal
SMALLINT Int16
STGEOMETRYTYPE Byte[]
STPOINTTYPE Byte[]
SMS String
TIME TimeSpan
TINYINT Byte
VARCHAR String
TIMESTAMP Datum en tijd
VARBINARY Byte[]

SAP HANA-sink

Momenteel wordt de SAP HANA-connector niet ondersteund als sink, terwijl u een algemene ODBC-connector met SAP HANA-stuurprogramma kunt gebruiken om gegevens naar SAP HANA te schrijven.

Volg de vereisten voor het instellen van zelf-hostende Integration Runtime en installeer eerst het SAP HANA ODBC-stuurprogramma. Maak een gekoppelde ODBC-service om verbinding te maken met uw SAP HANA-gegevensarchief, zoals wordt weergegeven in het volgende voorbeeld, en maak vervolgens een gegevensset en kopieeractiviteitsink met het ODBC-type dienovereenkomstig. Meer informatie vindt u in het artikel over odbc-connectors .

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

Eigenschappen van opzoekactiviteit

Als u meer wilt weten over de eigenschappen, controleert u de lookup-activiteit.

Zie ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de kopieeractiviteit.