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) | ② |
Activité de recherche | ② |
① 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 :
- L’outil Copier des données
- Le portail Azure
- Le kit SDK .NET
- Le kit SDK Python
- Azure PowerShell
- L’API REST
- Le modèle Azure Resource Manager
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.
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 :
Recherchez SAP et sélectionnez le connecteur SAP HANA.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
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.
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.
Contenu connexe
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.