Copier des données de Netezza à l’aide d’Azure Data Factory ou 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 ou Azure Synapse Analytics pour copier des données à partir de Netezza. Il s’appuie sur l’article Activité de copie, qui présente une vue d’ensemble de cette activité.
Conseil
Pour le scénario de migration de données de Netezza vers Azure, consultez Migrer des données depuis le serveur Netezza local vers Azure pour en savoir plus.
Fonctionnalités prises en charge
Ce connecteur Netezza est pris en charge pour les capacités suivantes :
Fonctionnalités prises en charge | IR |
---|---|
Activité de copie (source/-) | ① ② |
Activité de recherche | ① ② |
① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé
Pour obtenir la liste des magasins de données pris en charge en tant que sources et récepteurs pour l’activité de copie, consultez Magasins de données et formats pris en charge.
Ce connecteur Netezza prend en charge :
- La copie parallèle à partir d’une source. Pour en savoir plus, consultez Copie en parallèle à partir de Netezza.
- Le serveur de performance Netezza version 11.
- Versions Windows dans cet article.
Le service fournit un pilote intégré pour permettre la connectivité. Vous n’avez pas besoin d’installer un pilote manuellement pour utiliser ce connecteur.
Prérequis
Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.
Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.
Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.
Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.
Bien démarrer
Vous pouvez créer un pipeline qui utilise une activité de copie à l’aide du SDK .NET, du SDK Python, d’Azure PowerShell, de l’API REST ou du modèle Azure Resource Manager. Pour obtenir des instructions détaillées sur la création d’un pipeline avec une activité de copie, consultez le Didacticiel de l’activité de copie.
Créer un service lié à Netezza à l’aide de l’interface utilisateur
Utilisez les étapes suivantes pour créer un service lié à Netezza dans l’interface utilisateur du portail Azure.
Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse, sélectionnez Services liés, puis cliquez sur Nouveau :
Recherchez Netezza, puis sélectionnez le connecteur Netezza.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
Informations de configuration du connecteur
Les sections suivantes fournissent des informations détaillées sur les propriétés utilisables pour définir les entités propres au connecteur Netezza.
Propriétés du service lié
Les propriétés prises en charge pour le service lié Netezza sont les suivantes :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type doit être définie sur Netezza. | Oui |
connectionString | Chaîne de connexion ODBC permettant de se connecter à Netezza. Vous pouvez également définir un mot de passe dans Azure Key Vault et extraire la configuration pwd de la chaîne de connexion. Pour plus d’informations, reportez-vous aux exemples suivants et à l’article Stocker des informations d’identification dans Azure Key Vault. |
Oui |
connectVia | Runtime d’intégration à utiliser pour la connexion au magasin de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, l’Azure Integration Runtime par défaut est utilisé. | Non |
Voici un exemple de chaîne de connexion typique : Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>
. Le tableau suivant décrit les propriétés que vous pouvez définir :
Propriété | Description | Obligatoire |
---|---|---|
SecurityLevel | Niveau de sécurité que le pilote utilise pour la connexion au magasin de données. Exemple : SecurityLevel=preferredUnSecured . Les valeurs prises en charge sont les suivantes :- Non sécurisé uniquement (onlyUnSecured) : le pilote n’utilise pas SSL. - Non sécurisé préféré (preferredUnSecured) (valeur par défaut) : si le serveur offre un choix, le pilote n’utilise pas SSL. |
Non |
Remarque
Le connecteur ne prend pas en charge le SSLv3 car il est officiellement déconseillé par Netezza.
Exemple
{
"name": "NetezzaLinkedService",
"properties": {
"type": "Netezza",
"typeProperties": {
"connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemple : stockage du mot de passe dans Azure Key Vault
{
"name": "NetezzaLinkedService",
"properties": {
"type": "Netezza",
"typeProperties": {
"connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;",
"pwd": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propriétés du jeu de données
Cette section contient la liste des propriétés prises en charge par le jeu de données Netezza.
Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez Jeux de données.
Pour copier des données à partir de Netezza, définissez la propriété type du jeu de données sur NetezzaTable. 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 : NetezzaTable | Oui |
schéma | Nom du schéma. | Non (si « query » dans la source de l’activité est spécifié) |
table | Nom de la table. | Non (si « query » dans la source de l’activité est spécifié) |
tableName | Nom de la table avec le schéma. Cette propriété est prise en charge pour la compatibilité descendante. Utilisez schema et table pour une nouvelle charge de travail. |
Non (si « query » dans la source de l’activité est spécifié) |
Exemple
{
"name": "NetezzaDataset",
"properties": {
"type": "NetezzaTable",
"linkedServiceName": {
"referenceName": "<Netezza linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {}
}
}
Propriétés de l’activité de copie
Cette section contient la liste des propriétés prises en charge par la source Netezza.
Pour obtenir la liste complète des sections et des propriétés permettant de définir des activités, consultez Pipelines.
Netezza en tant que source
Conseil
Pour charger efficacement des données à partir de Netezza à l'aide du partitionnement des données, consultez la section Copie en parallèle à partir de Netezza.
Pour copier des données à partir de Netezza, définissez le type source de l’activité de copie sur NetezzaSource. 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 NetezzaSource. | Oui |
query | Utiliser la requête SQL personnalisée pour lire les données. Exemple : "SELECT * FROM MyTable" |
Non (si « tableName » est spécifié dans dataset) |
partitionOptions | Spécifie les options de partitionnement des données utilisées pour charger des données à partir de Netezza. Les valeurs autorisées sont : Aucun (par défaut), DataSlice et DynamicRange. Lorsqu’une option de partition est activée (autrement dit, pas None ), le degré de parallélisme pour charger simultanément des données à partir d’une base de données Netezza est contrôlé par le paramètre parallelCopies de l’activité de copie. |
Non |
partitionSettings | Spécifiez le groupe de paramètres pour le partitionnement des données. S’applique lorsque l’option de partitionnement n’est pas None . |
Non |
partitionColumnName | Spécifiez le nom de la colonne source dans type entier qu’utilisera le partitionnement par plages de valeurs pour la copie en parallèle. S’il n’est pas spécifié, la clé primaire de la table est détectée automatiquement et utilisée en tant que colonne de partition. S’applique lorsque l’option de partitionnement est DynamicRange . Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfRangePartitionColumnName dans la clause WHERE. Consultez l’exemple de la section Copie en parallèle à partir de Netezza. |
Non |
partitionUpperBound | Valeur maximale de la colonne de partition à partir de laquelle copier des données. S’applique lorsque de l’option de partition est DynamicRange . Si vous avez recours à une requête pour récupérer des données sources, utilisez ?AdfRangePartitionUpbound dans la clause WHERE. Pour consulter un exemple, voir Copie en parallèle à partir de Netezza. |
Non |
partitionLowerBound | Valeur minimale de la colonne de partition à partir de laquelle copier des données. S’applique lorsque l’option de partitionnement est DynamicRange . Si vous utilisez une requête pour récupérer des données sources, utilisez ?AdfRangePartitionLowbound dans la clause WHERE. Pour consulter un exemple, voir Copie en parallèle à partir de Netezza. |
Non |
Exemple :
"activities":[
{
"name": "CopyFromNetezza",
"type": "Copy",
"inputs": [
{
"referenceName": "<Netezza input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "NetezzaSource",
"query": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Copie en parallèle à partir de Netezza
Le connecteur Netezza de Data Factory propose un partitionnement de données intégré pour copier des données à partir de Netezza, en parallèle. 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 Netezza pour charger des données par partitions. 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 quatre, le service génère et exécute simultanément quatre requêtes basées sur l’option de partition et les paramètres que vous avez spécifiés, chacune récupérant des données à partir de votre base de données Netezza.
Il vous est recommandé d’activer la copie en parallèle avec partitionnement des données notamment lorsque vous chargez une grande quantité de données à partir de votre base de données Netezza. 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 : Tranche de données. Lors de l’exécution, le service partitionne automatiquement les données en fonction des tranches de données intégrées de Netezza et copie les données par partitions. |
Chargez une grande quantité de données à l’aide d’une requête personnalisée. | Option de partition : Tranche de données. Requête: SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause> .Lors de l’exécution, le service remplace ?AdfPartitionCount (par le numéro de copie parallèle défini sur l'activité de copie) et ?AdfDataSliceCondition par la logique de partition de tranche de données, puis l'envoie à Netezza. |
Chargez une grande quantité de données à l’aide d’une requête personnalisée, qui dispose d’une colonne d’entiers avec valeur uniformément distribuée pour le partitionnement par plages de valeurs. | Options de partition : Partition dynamique par spécification de plages de valeurs. Requête: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> .Colonne de partition : Spécifiez la colonne utilisée pour partitionner les données. Vous pouvez procéder au partitionnement par rapport à la colonne avec le type de données entier. Limite supérieure de partition et limite inférieure de partition : Indiquez si vous souhaitez filtrer le contenu par rapport à la colonne de partition pour récupérer uniquement les données entre les plages inférieure et supérieure. Lors de l’exécution, le service remplace ?AdfRangePartitionColumnName , ?AdfRangePartitionUpbound et ?AdfRangePartitionLowbound par le nom réel de la colonne et les plages de valeurs de chaque partition et les envoie à Netezza. Par exemple, si votre colonne de partition « ID » est définie sur une limite inférieure de 1 et une limite supérieure de 80, avec une copie en parallèle définie sur 4, le service récupère les données via 4 partitions. Les ID sont inclus entre [1,20], [21, 40], [41, 60] et [61, 80], respectivement. |
Exemple : requête avec partition tranche de données
"source": {
"type": "NetezzaSource",
"query": "SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>",
"partitionOption": "DataSlice"
}
Exemple : requête avec partition dynamique par spécification de plages de valeurs
"source": {
"type": "NetezzaSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<dynamic_range_partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column>",
"partitionLowerBound": "<lower_value_of_partition_column>"
}
}
Propriétés de l’activité Lookup
Pour en savoir plus sur les propriétés, consultez Activité Lookup.
Contenu connexe
Pour obtenir la liste des magasins de données pris en charge en tant que sources et récepteurs pour l’activité de copie, consultez Magasins de données et formats pris en charge.