Copier des données de SAP HANA à l’aide d’Azure Data Factory ou de Synapse Analytics

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article décrit comment utiliser l’activité de copie dans des pipelines Azure Data Factory et Synapse Analytics pour copier des données à partir d’une base de données SAP HANA. Il s’appuie sur l’article Vue d’ensemble de l’activité de copie.

Conseil

Pour en savoir plus sur la prise en charge générale de l’intégration de données SAP, consultez le livre blanc Intégration de données SAP offrant une présentation détaillée sur chaque connecteur SAP, une comparaison et des conseils.

Fonctionnalités prises en charge

Ce connecteur SAP HANA est pris en charge pour les activités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/récepteur) 0
Activité de recherche 0

① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé

Pour obtenir la liste des banques de données prises en charge en tant que sources ou récepteurs pour l’activité de copie, consultez le tableau banques de données prises en charge.

Plus précisément, ce connecteur SAP HANA prend en charge ce qui suit :

  • Copie de données de toute version de base de données SAP HANA.
  • Copie de données de modèles d’informations HANA (tels que les vues Analyse et Calcul) et de tables Ligne/Colonne.
  • Copie des données avec l’authentification De base ou Windows.
  • Copie en parallèle à partir d’une source SAP HANA. Pour plus d’informations, consultez la section Copie en parallèle à partir de SAP HANA.

Conseil

Pour copier des données vers une banque de données SAP HANA, utilisez le connecteur ODBC générique. Pour plus de détails, voir Récepteur SAP HANA. Notez que les services liés pour les connecteurs SAP HANA et ODBC sont de types différents et qu’ils ne peuvent donc pas être réutilisées.

Prérequis

Pour utiliser ce connecteur SAP HANA, vous devez :

  • Configurer un Runtime d’intégration autohébergé. Pour plus d’informations, consultez l’article Runtime d’intégration autohébergé.
  • Installer le pilote ODBC de SAP HANA sur l’ordinateur exécutant le runtime d’intégration. Vous pouvez télécharger le pilote ODBC SAP HANA à partir du Centre de téléchargement de logiciels SAP. Faites une recherche avec le mot-clé SAP HANA CLIENT for Windows.

Prise en main

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié à SAP HANA à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié à SAP HANA dans l’interface utilisateur du portail Azure.

  1. Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :

  2. Recherchez SAP et sélectionnez le connecteur SAP HANA.

    Screenshot of the SAP HANA connector.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Screenshot of linked service configuration for SAP HANA.

Informations de configuration des connecteurs

Les sections suivantes fournissent des détails sur les propriétés utilisées pour définir les entités Data Factory spécifiques du connecteur SAP HANA.

Propriétés du service lié

Les propriétés prises en charge pour le service lié SAP HANA sont les suivantes :

Propriété Description Obligatoire
type La propriété type doit être définie sur : SapHana Oui
connectionString Spécifiez les informations nécessaires pour établir une connexion au SAP HANA à l’aide de l’authentification SQL ou de l’authentification Windows. Consultez les exemples suivants.
Dans la chaîne de connexion, la définition du serveur/port est obligatoire (le port par défaut est 30015), et le nom d’utilisateur et le mot de passe sont obligatoires lors de l’utilisation de l’authentification de base. Pour plus de paramètres avancés, voir Propriétés de la connexion ODBC à SAP HANA.
Vous pouvez également définir un mot de passe dans Azure Key Vault et extraire la configuration du mot de passe de la chaîne de connexion. Pour plus d’informations, consultez l'article Stocker des informations d’identification dans Azure Key Vault.
Oui
userName Si vous utilisez l’authentification Windows, spécifiez un nom d’utilisateur. Exemple : user@domain.com Non
mot de passe Spécifiez le mot de passe du compte d'utilisateur. Marquez ce champ en tant que SecureString afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. Non
connectVia Runtime d’intégration à utiliser pour la connexion à la banque de données. Un Runtime d’intégration autohébergé est nécessaire comme indiqué dans Prérequis. Oui

Exemple : utiliser l’authentification de base

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

Exemple : utiliser l’authentification 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"
        }
    }
}

Si vous utilisiez le service lié SAP HANA avec la charge utile suivante, il reste pris en charge tel quel, mais nous vous suggérons d’utiliser le nouveau à l’avenir.

Exemple :

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

Propriétés du jeu de données

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article sur les jeux de données. Cette section fournit la liste des propriétés prises en charge par le jeu de données SAP HANA.

Pour copier des données à partir de SAP HANA, les propriétés prises en charge sont les suivantes :

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur : SapHanaTable Oui
schéma Nom du schéma dans la base de données SAP HANA. Non (si « query » dans la source de l’activité est spécifié)
table Nom de la table dans la base de données SAP HANA. Non (si « query » dans la source de l’activité est spécifié)

Exemple :

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

Si vous utilisiez un dataset typé RelationalTable, il reste pris en charge tel quel, mais nous vous suggérons d’utiliser désormais le nouveau dataset.

Propriétés de l’activité de copie

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par la source SAP HANA.

SAP HANA en tant que source

Conseil

Pour ingérer efficacement des données à partir de SAP HANA à l’aide du partitionnement des données, consultez la section Copie en parallèle à partir de SAP HANA.

Pour copier des données à partir de SAP HANA, les propriétés prises en charge dans la section source de l’activité de copie sont les suivantes :

Propriété Description Obligatoire
type La propriété type de la source d’activité de copie doit être définie sur : SapHanaSource Oui
query Spécifie la requête SQL pour lire les données de l’instance SAP HANA. Oui
partitionOptions Spécifie les options de partitionnement des données utilisées pour ingérer des données à partir de SAP HANA. Pour plus d’informations, consultez la section Copie en parallèle à partir de SAP HANA.
Les valeurs autorisées sont : None (valeur par défaut), PhysicalPartitionsOfTable et SapHanaDynamicRange. Pour plus d’informations, consultez la section Copie en parallèle à partir de SAP HANA. PhysicalPartitionsOfTable peut être utilisé lors de la copie de données à partir d’une table, mais pas à partir d’une requête.
Lorsqu’une option de partition est activée (donc, autre que None), le degré de parallélisme pour charger simultanément des données à partir de SAP HANA est contrôlé par le paramètre parallelCopies de l’activité de copie.
False
partitionSettings Spécifiez le groupe de paramètres pour le partitionnement des données.
S’applique lorsque de l’option de partition est SapHanaDynamicRange.
False
partitionColumnName Spécifiez le nom de la colonne source qu’utilisera la partition pour la copie en parallèle. S’il n’est pas spécifié, l’index ou la clé primaire de la table seront automatiquement détectés et utilisés en tant que colonne de partition.
S’applique lorsque l’option de partitionnement est SapHanaDynamicRange. Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfHanaDynamicRangePartitionCondition dans la clause WHERE. Consultez l’exemple de la section Copie en parallèle à partir de SAP HANA.
Oui, lors de l’utilisation de la partition SapHanaDynamicRange. 
packetSize Spécifie la taille de paquet réseau (en kilo-octets) pour fractionner les données en plusieurs blocs. Si vous avez une grande quantité de données à copier, une augmentation de la taille de paquet peut accélérer la vitesse de lecture à partir de SAP HANA. Il est recommandé de tester les performances lors de l’ajustement de la taille de paquet. Non.
La valeur par défaut est 2048 (2 Mo).

Exemple :

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

Si vous utilisiez un source de données typée RelationalSource, elle reste pris en charge telle quelle, mais nous vous suggérons d’utiliser désormais la nouvelle source.

Copie en parallèle à partir de SAP HANA

Le connecteur SAP HANA propose un partitionnement de données intégré pour copier des données en parallèle à partir de SAP HANA. Vous trouverez des options de partitionnement de données dans la table Source de l’activité de copie.

Screenshot of partition options

Lorsque vous activez la copie partitionnée, le service exécute des requêtes en parallèle sur votre source SAP HANA pour récupérer des données par partition. Le degré de parallélisme est contrôlé via le paramètre parallelCopies sur l’activité de copie. Par exemple, si vous définissez parallelCopies sur la valeur quatre, le service génère et exécute simultanément quatre requêtes selon l’option de partition et les paramètres que vous avez spécifiés, chacune récupérant une partie des données de SAP HANA.

Il vous est recommandé d’activer la copie en parallèle avec partitionnement des données notamment lorsque vous ingérez une grande quantité de données à partir de SAP HANA. Voici quelques suggestions de configurations pour différents scénarios. Lors de la copie de données dans un magasin de données basé sur un fichier, il est recommandé d’écrire les données dans un dossier sous la forme de plusieurs fichiers (spécifiez uniquement le nom du dossier). Les performances seront meilleures qu’avec l’écriture de données dans un seul fichier.

Scénario Paramètres suggérés
Chargement complet à partir d’une table volumineuse. Option de partition : Partitions physiques de la table.

Pendant l’exécution, le service détecte automatiquement le type de partition physique de la table SAP HANA spécifiée et choisit la stratégie de partition correspondante :
- Partitionnement par plages de valeurs : Récupérez la colonne de partition et les plages de partitions définies pour la table, puis copiez les données par plage.
- Partitionnement de hachage : utilisez la clé de partition par hachage comme colonne de partition, puis partitionnez et copiez les données en fonction des plages calculées par le service.
- Partitionnement par tourniquet ou Aucune partition : utilisez la clé primaire comme colonne de partition, puis partitionnez et copiez les données en fonction des plages calculées par le service.
Chargez une grande quantité de données à l’aide d’une requête personnalisée. Option de partition : Partition dynamique par spécification de plages de valeurs.
Requête: SELECT * FROM <TABLENAME> WHERE ?AdfHanaDynamicRangePartitionCondition AND <your_additional_where_clause>.
Colonne de partition : Spécifiez la colonne utilisée pour appliquer la partition par spécification de plages de valeurs dynamique.

Pendant l’exécution, le service calcule d’abord les plages de valeurs de la colonne de partition spécifiée, en répartissant équitablement les lignes entre les compartiments, en fonction du nombre de valeurs de colonne de partition distinctes et du paramètre de copie en parallèle. Ensuite, il remplace ?AdfHanaDynamicRangePartitionCondition par le filtrage de la plage de valeurs de la colonne de partition pour chaque partition, et envoie les données à SAP HANA.

Si vous souhaitez utiliser plusieurs colonnes pour la colonne de partition, dans la requête, concaténez les valeurs de chaque colonne au sein d’une colonne, et spécifier celle-ci en tant que colonne de partition, comme dans SELECT * FROM (SELECT *, CONCAT(<KeyColumn1>, <KeyColumn2>) AS PARTITIONCOLUMN FROM <TABLENAME>) WHERE ?AdfHanaDynamicRangePartitionCondition.

Exemple : requête avec partitions physiques d’une table

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

Exemple : requête avec partition dynamique par spécification de plages de valeurs

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

Mappage de type de données pour SAP HANA

Lors de la copie de données à partir de SAP HANA, les mappages suivants sont utilisés entre les types de données SAP HANA et les types de données intermédiaires utilisés en interne dans le service. Pour découvrir comment l’activité de copie mappe le schéma et le type de données la source au récepteur, voir Mappages de schémas et de types de données.

Type de données SAP HANA Type de données de service intermédiaire
ALPHANUM String
bigint Int64
BINARY Byte[]
BINTEXT String
BLOB Byte[]
BOOL Byte
CLOB String
DATE DateTime
DECIMAL Decimal
DOUBLE Double
FLOAT Double
INTEGER Int32
NCLOB String
NVARCHAR String
real Unique
SECONDDATE DateTime
SHORTTEXT String
SMALLDECIMAL Decimal
SMALLINT Int16
STGEOMETRYTYPE Byte[]
STPOINTTYPE Byte[]
TEXT String
TEMPS TimeSpan
TINYINT Byte
VARCHAR String
timestamp DateTime
VARBINARY Byte[]

Récepteur SAP HANA

Actuellement, le connecteur SAP HANA n’est pas pris en charge en tant que récepteur, alors que vous pouvez utiliser un connecteur ODBC générique avec le pilote SAP HANA pour écrire des données dans SAP HANA.

Suivez les conditions préalables pour configurer le runtime d'intégration auto-hébergé et installer le pilote ODBC SAP HANA en premier. Créez un service lié ODBC pour vous connecter à votre magasin de données SAP HANA comme indiqué dans l’exemple suivant, puis créez le jeu de données et le récepteur d’activités de copie avec le type ODBC en conséquence. Pour en savoir plus, consultez l’article Connecteur 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"
        }
    }
}

Propriétés de l’activité Lookup

Pour en savoir plus sur les propriétés, consultez Activité Lookup.

Pour obtenir une liste des magasins de données pris en charge comme sources et récepteurs par l’activité de copie, consultez la section sur les magasins de données pris en charge.