Copier des données depuis et vers le stockage Table Azure à l’aide d’Azure Data Factory 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 explique comment utiliser l'activité de copie dans les pipelines Azure Data Factory et Synapse Analytics pour copier des données depuis et vers le stockage Azure Table. Il s’appuie sur l’article Vue d’ensemble de l’activité de copie.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Fonctionnalités prises en charge

Ce connecteur de stockage de table Azure est pris en charge pour les fonctionnalités suivantes :

Fonctionnalités prises en charge IR Point de terminaison privé managé
Activité de copie (source/récepteur) ✓ Exclure le compte de stockage V1
Activité de recherche ✓ Exclure le compte de stockage V1

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

Vous pouvez copier des données depuis n’importe quelle banque de données source prise en charge vers le stockage Table. Vous pouvez également copier des données depuis le stockage Table vers n’importe quelle banque de données réceptrice prise en charge. Pour obtenir la liste des banques de données prises en charge en tant que sources ou récepteurs par l’activité de copie, consultez le tableau banques de données prises en charge.

Plus précisément, ce connecteur Table Azure prend en charge la copie de données à l’aide des authentifications par clé de compte et par signature d’accès partagé de service.

Bien démarrer

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é Stockage Table Azure à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié Stockage Table Azure 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 Table Azure et sélectionnez le connecteur Stockage Table Azure.

    Screenshot of the Azure Table storage connector.

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

    Screenshot of configuration for an Azure Table storage linked service.

Informations de configuration des connecteurs

Les sections suivantes fournissent des informations détaillées sur les propriétés utilisées pour définir les entités spécifiques de Stockage Table Azure.

Propriétés du service lié

Utiliser une clé de compte

Vous pouvez créer un service lié Stockage Azure à l’aide de la clé de compte. Le service dispose ainsi d’un accès global au stockage. Les propriétés suivantes sont prises en charge.

Propriété Description Obligatoire
type La propriété de type doit être définie sur AzureTableStorage. Oui
connectionString Spécifiez les informations requises pour la connexion au stockage pour la propriété connectionString.
Vous pouvez également définir une clé de compte dans Azure Key Vault et extraire la configuration accountKey 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 Le runtime d’intégration à utiliser pour se connecter à la banque de données. Vous pouvez utiliser Azure Integration Runtime ou Integration Runtime auto-hébergé (si votre magasin de données se trouve dans un réseau privé). À défaut de spécification, le runtime d’intégration Azure par défaut est utilisé. Non

Notes

Si vous utilisiez le service lié de type « AzureStorage », il est toujours pris en charge en tant que tel, même si vous serez invité à utiliser ce nouveau service lié de type « AzureTableStorage » à l’avenir.

Exemple :

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple : stockage de la clé de compte dans Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
            "accountKey": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Utiliser l’authentification avec une signature d’accès partagé

Vous pouvez également créer un service lié de stockage à l’aide d’une signature d’accès partagé. Ainsi, le service dispose d’un accès restreint ou limité dans le temps à tout ou partie des ressources dans le stockage.

Une signature d'accès partagé fournit un accès délégué aux ressources de votre compte de stockage. Vous pouvez l’utiliser pour octroyer à un client des autorisations d’accès limité à des objets de votre compte de stockage pendant une période donnée et avec un ensemble défini d’autorisations. Vous n’êtes pas obligé de partager vos clés d’accès de compte. La signature d’accès partagé est un URI qui englobe dans ses paramètres de requête toutes les informations nécessaires pour obtenir un accès authentifié à une ressource de stockage. Pour accéder aux ressources de stockage avec la signature d’accès partagé, il suffit au client de transmettre cette dernière à la méthode ou au constructeur approprié. Pour plus d’informations sur les signatures d’accès partagé, consultez Signatures d’accès partagé : Comprendre le modèle de signature d’accès partagé.

Notes

Les signatures d’accès partagé de service et les signatures d’accès partagé de compte sont désormais prises en charge. Pour plus d’informations sur les signatures d’accès partagé, consultez Accorder un accès limité aux ressources du Stockage Azure à l’aide des signatures d’accès partagé (SAP).

Conseil

Pour générer une signature d’accès partagé de service pour votre compte de stockage, vous pouvez exécuter les commandes PowerShell suivantes. Remplacez les espaces réservés et octroyez l’autorisation nécessaire. $context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey> New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri

Pour utiliser l’authentification par signature d’accès partagé, les propriétés suivantes sont prises en charge.

Propriété Description Obligatoire
type La propriété de type doit être définie sur AzureTableStorage. Oui
sasUri Spécifiez l’URI SAS de l’URI de signature d’accès partagé dans la table.
Marquez ce champ en tant que SecureString afin de le stocker en toute sécurité. Vous pouvez également placer un jeton SAS dans Azure Key Vault pour activer la rotation automatique et supprimer la partie du jeton. Pour plus d’informations, reportez-vous aux exemples suivants et à l’article Stocker des informations d’identification dans Azure Key Vault.
Oui
connectVia Le runtime d’intégration à utiliser pour se connecter à la banque de données. Vous pouvez utiliser Azure Integration Runtime ou Integration Runtime auto-hébergé (si votre banque de données se trouve dans un réseau privé). À défaut de spécification, le runtime d’intégration Azure par défaut est utilisé. Non

Notes

Si vous utilisiez le service lié de type « AzureStorage », il est toujours pris en charge en tant que tel, même si vous serez invité à utiliser ce nouveau service lié de type « AzureTableStorage » à l’avenir.

Exemple :

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&amp;st=<start time>&amp;se=<expire time>&amp;sr=<resource>&amp;sp=<permissions>&amp;sip=<ip range>&amp;spr=<protocol>&amp;sig=<signature>>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple : stockage de la clé de compte dans Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
            },
            "sasToken": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Lorsque vous créez un URI de signature d’accès partagé, prenez en compte les points suivants :

  • Définissez des autorisations de lecture/écriture appropriées sur les objets en fonction de l’utilisation du service lié (lecture, écriture, lecture/écriture).
  • Définissez le paramètre Heure d’expiration correctement. Assurez-vous que l’accès aux objets du stockage n’expire pas pendant la période active du pipeline.
  • L’URI doit être créé au niveau table approprié en fonction des besoins.

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 Jeux de données. Cette section fournit la liste des propriétés prises en charge par le jeu de données Table Azure.

Pour copier des données vers et depuis Table Azure, définissez la propriété de type du jeu de données sur AzureTable . Les propriétés suivantes sont prises en charge.

Propriété Description Obligatoire
type La propriété de type du jeu de données doit être définie sur AzureTable. Oui
tableName Le nom de la table dans l’instance de base de données de stockage Table à laquelle le service lié fait référence. Oui

Exemple :

{
    "name": "AzureTableDataset",
    "properties":
    {
        "type": "AzureTable",
        "typeProperties": {
            "tableName": "MyTable"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure Table storage linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Inférence de schéma par le service

Pour les magasins de données sans schéma comme Azure Table, le service déduit le schéma de l’une des manières suivantes :

  • Si vous spécifiez le mappage de colonnes dans l’activité de copie, le service utilise la liste de colonnes côté source pour récupérer des données. Dans ce cas, si une ligne ne contient pas de valeur pour une colonne, une valeur null est fournie pour celle-ci.
  • Si vous ne spécifiez pas le mappage de colonnes dans l’activité de copie, le service déduit le schéma à l’aide de la première ligne des données. Dans ce cas, si la première ligne ne contient pas le schéma complet (par exemple, si des colonnes ont la valeur Null), certaines colonnes ne sont pas incluses dans le résultat de l’opération de copie.

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 et le récepteur Table Azure.

Table Azure en tant que type source

Pour copier des données de Table Azure, définissez AzureTableSource comme type de source dans l’activité de copie. Les propriétés suivantes sont prises en charge dans la section source de l’activité de copie.

Propriété Description Obligatoire
type La propriété de type de la source d’activité de copie doit être définie sur AzureTableSource. Oui
AzureTableSourceQuery Utilisez la requête de Table Azure personnalisée pour lire les données.
La requête source est une carte directe à partir de l’option de requête $filter prise en charge par le stockage de tables Azure. Pour en savoir plus sur la syntaxe, consultez ce document, et consultez les exemples dans la section des exemples azureTableSourceQuery suivante.
Non
azureTableSourceIgnoreTableNotFound Indique s’il faut autoriser l’exception de la table qui n’existe pas.
Les valeurs autorisées sont True et False (par défaut).
Non

Exemples azureTableSourceQuery

Notes

L’opération de requête Table Azure expire dans 30 secondes, conformément au service de Table Azure. Découvrez comment optimiser la requête dans l’article Conception pour l’interrogation.

Si vous souhaitez filtrer les données par rapport à une colonne de type DateHeure, reportez-vous à l’exemple suivant :

"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"

Si vous souhaitez filtrer les données par rapport à une colonne de type chaîne, reportez-vous à l’exemple suivant :

"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"

Si vous utilisez le paramètre de pipeline, effectuez un cast de la valeur datetime au format approprié en fonction des exemples précédents.

Table Azure en tant que type récepteur

Pour copier des données vers la Table Azure, définissez le type de récepteur sur AzureTableSink dans l’activité de copie. Les propriétés suivantes sont prises en charge dans la section récepteur de l’activité de copie.

Propriété Description Obligatoire
type La propriété de type du récepteur d’activité de copie doit être définie sur AzureTableSink. Oui
azureTableDefaultPartitionKeyValue La valeur de clé de partition par défaut qui peut être utilisée par le récepteur. Non
azureTablePartitionKeyName Spécifiez le nom de la colonne dont les valeurs sont utilisées comme clés de partition. Si aucune valeur n'est spécifiée, « AzureTableDefaultPartitionKeyValue » est utilisée comme clé de partition. Non
azureTableRowKeyName Spécifiez le nom de la colonne dont les valeurs sont utilisées comme clé de ligne. Si aucune valeur n'est spécifiée, un GUID est utilisé pour chaque ligne. Non
azureTableInsertType Le mode d’insertion des données dans Table Azure. Cette propriété détermine le remplacement ou la fusion des valeurs des lignes existantes dans la table de sortie avec des clés de partition et de ligne correspondantes.

Les valeurs autorisées sont fusionner (par défaut), et remplacer.

Ce paramètre s’applique au niveau ligne et non au niveau table. Ces options ne suppriment pas de lignes dans la table de sortie qui n’existent pas dans l’entrée. Consultez Insert Or Merge Entity (Entité d’insertion ou de fusion) et Insert Or Replace Entity (Entité d’insertion ou de remplacement) pour en savoir plus sur le fonctionnement des paramètres fusionner et remplacer.
Non
writeBatchSize Insère des données dans Table Azure lorsque la valeur de writeBatchSize ou writeBatchTimeout est atteinte.
Les valeurs autorisées sont des nombre entiers (nombre de lignes).
Non (valeur par défaut : 10 000)
writeBatchTimeout Insère des données dans Table Azure lorsque la valeur de writeBatchSize ou writeBatchTimeout est atteinte.
Les valeurs autorisées sont des intervalles de temps. Par exemple : « 00:20:00 » (20 minutes).
Non (la valeur par défaut est 90 secondes, le délai d’expiration par défaut du client de stockage)
 maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées.  Aucune

Exemple :

"activities":[
    {
        "name": "CopyToAzureTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure Table output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureTableSink",
                "azureTablePartitionKeyName": "<column name>",
                "azureTableRowKeyName": "<column name>"
            }
        }
    }
]

azureTablePartitionKeyName

Mappez une colonne source à une colonne de destination à l’aide de la propriété « translator » pour pouvoir utiliser la colonne de destination comme azureTablePartitionKeyName.

Dans l’exemple suivant, la colonne source DivisionID est mappée sur la colonne de destination DivisionID :

"translator": {
    "type": "TabularTranslator",
    "columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}

« DivisionID » est spécifié en tant que clé de partition.

"sink": {
    "type": "AzureTableSink",
    "azureTablePartitionKeyName": "DivisionID"
}

Mappage de type de données pour Table Azure

Lorsque vous copiez des données depuis et vers Azure Table, les mappages suivants sont utilisés entre les types de données Azure Table 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, consultez Mappage de schéma dans l’activité de copie.

Pendant le déplacement de données depuis et vers Table Azure, les mappages suivants définis par Table Azure sont utilisés à partir des types OData Table Azure vers le type .NET et vice versa.

Type de données de Table Azure Type de données de service intermédiaire Détails
Edm.Binary byte[] Tableau d’octets jusqu’à 64 Ko.
Edm.Boolean bool Valeur booléenne.
Edm.DateTime DateTime Valeur de 64 bits exprimée en temps universel coordonné (UTC). La plage DateHeure prise en charge commence à minuit, le 1er janvier 1601 apr. J.-C. (heure UTC). La plage se termine le 31 décembre 9999.
Edm.Double double Valeur à virgule flottante de 64 bits.
Edm.Guid Guid Identificateur global unique de 128 bits.
Edm.Int32 Int32 Nombre entier 32 bits.
Edm.Int64 Int64 Nombre entier 64 bits.
Edm.String String Valeur encodée en UTF-16. Les valeurs de chaîne peuvent aller jusqu’à 64 Ko.

Propriétés de l’activité Lookup

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

Consultez les magasins de données pris en charge pour obtenir la liste des sources et magasins de données pris en charge en tant que récepteurs par l’activité de copie.