Partager via


Copier des données de Xero à 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, la business intelligence et le reporting. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article explique comment utiliser l’activité de copie dans le pipeline Azure Data Factory ou Synapse Analytics pour copier des données de Xero. Il s’appuie sur l’article Vue d’ensemble de l’activité de copie.

Remarque

Le connecteur Xero nécessite une authentification OAuth et n’est pas destiné à une utilisation de serveur à serveur.

Important

Le connecteur Xero version 2.0 offre une prise en charge native améliorée de Xero. Si vous utilisez le connecteur Xero version 1.0 dans votre solution, mettez à niveau le connecteur Xero avant le 31 mars 2026. Pour plus de détails sur les différences entre la version 2.0 et la version 1.0, reportez-vous à cette section.

Fonctionnalités prises en charge

Ce connecteur Xero est pris en charge pour les fonctionnalités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/-) (1) (2)
Activité de recherche (1) (2)

① 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, consultez la table Magasins de données pris en charge.

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

  • Authentification OAuth 2.0
  • Toutes les tables Xero (points de terminaison d’API) à l’exception de « Reports ».
  • Versions Windows dans cet article.

Remarque

En raison de la fin de l’authentification OAuth 1.0 dans Xero, mettez à niveau vers le type d’authentification OAuth 2.0 si vous utilisez actuellement le type d’authentification OAuth 1.0.

Prise en main

Pour effectuer l’activité de copie avec un pipeline, vous pouvez utiliser l’un des outils ou kits sdk suivants :

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

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

  1. 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 :

  2. Recherchez Xero et sélectionnez le connecteur Xero.

    Sélectionnez le connecteur Xero.

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

    Configurez un service lié à Xero.

Détails de configuration du connecteur

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

Propriétés du service lié

Le connecteur Xero prend désormais en charge la version 2.0. Reportez-vous à cette section pour mettre à niveau votre version de connecteur Xero à partir de la version 1.0. Pour plus d’informations sur la propriété, consultez les sections correspondantes.

Version 2.0

Le service lié Xero prend en charge les propriétés suivantes lors de l’application de la version 2.0 :

Propriété Description Obligatoire
type La propriété de type doit être définie sur Xero Oui
version Version que vous spécifiez. La valeur est 2.0. Oui
host Le point de terminaison du serveur Xero (api.xero.com). Oui
clientId Spécifiez l’ID client de votre application Xero.
Marquez ce champ en tant que SecureString afin de le stocker de façon sécurisée, ou référencez un secret stocké dans Azure Key Vault.
Oui
Secret du client Spécifiez la clé secrète client pour votre application Xero.
Marquez ce champ en tant que SecureString afin de le stocker de façon sécurisée, ou référencez un secret stocké dans Azure Key Vault.
Oui
tenantId L’ID de locataire associé à votre application Xero. S’applique à l’authentification OAuth 2.0.
Découvrez comment obtenir l’ID de locataire dans la section Check the tenants you’re authorized to access.
Oui
refreshToken Le jeton d’actualisation OAuth 2.0 est associé à l’application Xero et utilisé pour actualiser le jeton d’accès ; celui-ci expire après 30 minutes. Découvrez comment fonctionne le flux d’autorisation Xero et comment obtenir le jeton d'actualisation dans cet article. Pour obtenir un jeton d’actualisation, vous devez demander l’étendue offline_access.
Limitation connue : notez que Xero réinitialise le jeton d’actualisation après utilisation. Pour une charge de travail opérationnalisée, avant chaque exécution de l’activité de copie, vous devez définir un jeton d’actualisation valide pour l’utilisation du service.
Marquez ce champ en tant que SecureString afin de le stocker de façon sécurisée, ou référencez un secret stocké dans Azure Key Vault.
Oui
connectVia Le runtime d’intégration à utiliser pour se connecter à la banque de données. Si aucune valeur n’est spécifiée, la propriété utilise le runtime d’intégration Azure par défaut. Vous pouvez utiliser le runtime d’intégration auto-hébergé et sa version doit être 5.61 ou ultérieure. Non

Exemple :

{
    "name": "XeroLinkedService",
    "properties": {
        "type": "Xero",
        "typeProperties": {
            "host": "api.xero.com",
            "clientId": "<client ID>",
            "clientSecret": "<client secret>",
            "tenantId": "<tenant ID>", 
            "refreshToken": {
                "type": "SecureString",
                "value": "<refresh token>"
            },
            "authenticationType":"OAuth_2.0", 
            "version": "2.0"         
        }
    }
}

Version 1.0

Le service lié Xero prend en charge les propriétés suivantes lors de l’application de la version 1.0 :

Propriété Description Obligatoire
type La propriété de type doit être définie sur Xero Oui
connectionProperties Un groupe de propriétés qui définit la façon de se connecter à Xero. Oui
Sous connectionProperties :
host Le point de terminaison du serveur Xero (api.xero.com). Oui
authenticationType Les valeurs autorisées sont OAuth_2.0 et OAuth_1.0. Oui
consumerKey Pour OAuth 2.0, spécifiez l'ID client de votre application Xero.
Pour OAuth 1.0, spécifiez la clé de consommateur associée à l’application Xero.
Marquez ce champ en tant que SecureString afin de le stocker de façon sécurisée, ou référencez un secret stocké dans Azure Key Vault.
Oui
privateKey Pour OAuth 2.0, spécifiez la clé secrète client pour votre application Xero.
Pour OAuth 1.0, spécifiez la clé privée provenant du fichier .pem qui a été généré pour votre application privée Xero. Remarque : Pour générer privatekey.pem avec un nombre de bits de 512 avec openssl genrsa -out privatekey.pem 512, la valeur 1024 n’est pas prise en charge. Inclut tout le texte du fichier .pem, y compris les fins de ligne Unix (\n), voir l’exemple ci-dessous.

Marquez ce champ en tant que SecureString afin de le stocker de façon sécurisée, ou référencez un secret stocké dans Azure Key Vault.
Oui
tenantId L’ID de locataire associé à votre application Xero. S’applique à l’authentification OAuth 2.0.
Découvrez comment obtenir l’ID de locataire dans la section Check the tenants you’re authorized to access.
Oui pour l’authentification OAuth 2.0
refreshToken S’applique à l’authentification OAuth 2.0.
Le jeton d’actualisation OAuth 2.0 est associé à l’application Xero et utilisé pour actualiser le jeton d’accès ; celui-ci expire après 30 minutes. Découvrez comment fonctionne le flux d’autorisation Xero et comment obtenir le jeton d'actualisation dans cet article. Pour obtenir un jeton d’actualisation, vous devez demander l’étendue offline_access.
Limitation connue : notez que Xero réinitialise le jeton d’actualisation après utilisation. Pour une charge de travail opérationnalisée, avant chaque exécution de l’activité de copie, vous devez définir un jeton d’actualisation valide pour l’utilisation du service.
Marquez ce champ en tant que SecureString afin de le stocker de façon sécurisée, ou référencez un secret stocké dans Azure Key Vault.
Oui pour l’authentification OAuth 2.0
useEncryptedEndpoints Indique si les points de terminaison de la source de données sont chiffrés suivant le protocole HTTPS. La valeur par défaut est true. Non
useHostVerification Indique si le nom d’hôte est requis dans le certificat de serveur et doit correspondre au nom d’hôte du serveur lors de la connexion via le protocole TLS. La valeur par défaut est true. Non
usePeerVerification Indique s’il faut vérifier l’identité du serveur en cas de connexion TLS. La valeur par défaut est true. Non

Exemple : Authentification OAuth 2.0

{
    "name": "XeroLinkedService",
    "properties": {
        "type": "Xero",
        "typeProperties": {
            "connectionProperties": { 
                "host": "api.xero.com",
                "authenticationType":"OAuth_2.0", 
                "consumerKey": {
                    "type": "SecureString",
                    "value": "<client ID>"
                },
                "privateKey": {
                    "type": "SecureString",
                    "value": "<client secret>"
                },
                "tenantId": "<tenant ID>", 
                "refreshToken": {
                    "type": "SecureString",
                    "value": "<refresh token>"
                }, 
                "useEncryptedEndpoints": true, 
                "useHostVerification": true, 
                "usePeerVerification": true
            }            
        }
    }
}

Exemple : Authentification OAuth 1.0

{
    "name": "XeroLinkedService",
    "properties": {
        "type": "Xero",
        "typeProperties": {
            "connectionProperties": {
                "host": "api.xero.com", 
                "authenticationType":"OAuth_1.0", 
                "consumerKey": {
                    "type": "SecureString",
                    "value": "<consumer key>"
                },
                "privateKey": {
                    "type": "SecureString",
                    "value": "<private key>"
                }, 
                "useEncryptedEndpoints": true,
                "useHostVerification": true,
                "usePeerVerification": true
            }
        }
    }
}

Exemple de valeur de clé privée :

Inclut tout le texte du fichier .pem, y compris les fins de ligne Unix (\n).

"-----BEGIN RSA PRIVATE KEY-----\nMII***************************************************P\nbu****************************************************s\nU/****************************************************B\nA*****************************************************W\njH****************************************************e\nsx*****************************************************l\nq******************************************************X\nh*****************************************************i\nd*****************************************************s\nA*****************************************************dsfb\nN*****************************************************M\np*****************************************************Ly\nK*****************************************************Y=\n-----END RSA PRIVATE KEY-----"

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 Xero.

Pour copier des données de Xero, affectez la valeur XeroObject à la propriété de type du jeu de données. 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 : XeroObject Oui
table Nom de la table. Les noms de table utilisent le nom de l’objet, par exemple : Accounts. Cette propriété est uniquement prise en charge dans la version 2.0. Oui
tableName Nom de la table. Les noms de tables utilisent des noms d’objets avec un préfixe, par exemple "Global"."Accounts". Cette propriété est uniquement prise en charge dans la version 1.0. Non (si « query » est spécifié dans la source de l'activité)

Exemple

{
    "name": "XeroDataset",
    "properties": {
        "type": "XeroObject",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Xero linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Le connecteur version 2.0 prend en charge les tables Xero suivantes :

  • Accounts
  • Bank_Transaction_Line_Items
  • Transferts_bancaires
  • Budgets
  • Contacts_Addresses
  • Contact_Group_Contacts
  • Contacts_Phones
  • Éléments de ligne de note de crédit
  • Suivi_des_éléments_de_ligne_des_notes_de_crédit
  • Devises
  • Éléments_de_Ligne_Facture
  • Invoice_Line_Items_Tracking
  • Objets
  • Journaux
  • Lignes_du_Journal
  • Journal_Line_Tracking_Categories
  • Manual_Journals
  • Manual_Journal_Lines
  • Organisations
  • Éléments_de_Ligne_de_Prépaiement
  • Projets
  • Utilisateurs du Projet
  • Articles_de_la_ligne_de_commande_d'achat
  • Taux_d'imposition
  • Tracking_Categories
  • Options_Catégories_de_Suivi
  • Users

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 Xero.

Xero en tant que source

Pour copier des données de Xero, définissez le type de source dans l’activité de copie sur XeroSource. 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é de type de la source d’activité de copie doit être définie sur XeroSource Oui
query Utiliser la requête SQL personnalisée pour lire les données. Par exemple : "SELECT * FROM Contacts". Non (si « tableName » est spécifié dans dataset)

Remarque

query n’est pas pris en charge dans la version 2.0.

Exemple :

"activities":[
    {
        "name": "CopyFromXero",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Xero input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "XeroSource",
                "query": "SELECT * FROM Contacts"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Notez ce qui suit lors de la spécification de la requête Xero :

  • Les tables comportant des éléments complexes sont réparties dans plusieurs tables. Par exemple, les transactions bancaires ont une structure de données complexe « LineItems », les données de transaction bancaire sont donc mappées à la table Bank_Transaction et Bank_Transaction_Line_Items, avec Bank_Transaction_ID en tant que clé étrangère pour les relier.

  • Les données de Xero sont disponibles via les deux schémas : Minimal (par défaut) et Complete. Le schéma complet contient des tables d’appel requises qui nécessitent des données supplémentaires (par exemple, la colonne ID) avant d’effectuer la requête souhaitée.

Les tables suivantes contiennent les mêmes informations dans le schéma Minimal et le schéma Complet. Pour réduire le nombre d’appels d’API, utilisez un schéma Minimal (par défaut).

  • Bank_Transactions
  • Contact_Groups
  • Contacts
  • Contacts_Sales_Tracking_Categories
  • Contacts_Phones
  • Contacts_Addresses
  • Contacts_Purchases_Tracking_Categories
  • Credit_Notes
  • Credit_Notes_Allocations
  • Expense_Claims
  • Expense_Claim_Validation_Errors
  • Factures
  • Invoices_Credit_Notes
  • Invoices_ paiement anticipé
  • Invoices_Overpayments
  • Manual_Journals
  • Overpayments
  • Overpayments_Allocations
  • Prepayments
  • Prepayments_Allocations
  • Receipts
  • Receipt_Validation_Errors
  • Tracking_Categories

Les tables suivantes peuvent uniquement être interrogées avec un schéma complet :

  • Complete.Bank_Transaction_Line_Items
  • Complete.Bank_Transaction_Line_Item_Tracking
  • Complete.Contact_Group_Contacts
  • Complete.Contacts_Contact_ Persons
  • Complete.Credit_Note_Line_Items
  • Complete.Credit_Notes_Line_Items_Tracking
  • Complete.Expense_Claim_ Payments
  • Complete.Expense_Claim_Receipts
  • Complete.Invoice_Line_Items
  • Complete.Invoices_Line_Items_Tracking
  • Complete.Manual_Journal_Lines
  • Complete.Manual_Journal_Line_Tracking
  • Complete.Overpayment_Line_Items
  • Complete.Overpayment_Line_Items_Tracking
  • Complete.Prepayment_Line_Items
  • Complete.Prepayment_Line_Item_Tracking
  • Complete.Receipt_Line_Items
  • Complete.Receipt_Line_Item_Tracking
  • Complete.Tracking_Category_Options

Mappage de type de données pour Xero

Lorsque vous copiez des données à partir de Xero, les mappages suivants s’appliquent des types de données de Xero aux types de données internes utilisés par 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.

Type de données Xero Type de données de service intermédiaire (pour la version 2.0) Type de données de service intermédiaire (pour la version 1.0)
Chaîne Chaîne Chaîne
Date Chaîne Date
Date et heure Chaîne Chaîne
Booléen Booléen Booléen
Nombre (standard) Int32 Int32
Nombre (large) Int64 Int64

Propriétés de l’activité Lookup

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

Cycle de vie et mise à niveau du connecteur Xero

Le tableau suivant présente l’étape de mise en production et les journaux des modifications pour différentes versions du connecteur Xero :

Version Phase de mise en production Journal des modifications
Version 1.0 Fin du support annoncé /
Version 2.0 Version en disponibilité générale disponible • Dans le service lié, consumerKey est remplacé par clientId, et privateKey est remplacé par clientSecret.

• Utilisez table plutôt que tableName dans les jeux de données.

• La valeur pour table est le nom de l’objet, par exemple : Accounts.

• La version du runtime d’intégration auto-hébergée doit être 5.61 ou ultérieure.

• La date est lue en tant que type de données String.

• Prendre en charge des tables Xero spécifiques. Pour la liste de tables prise en charge, accédez aux propriétés du jeu de données.

useEncryptedEndpoints, useHostVerificationusePeerVerification ne sont pas pris en charge dans le service lié.

query n’est pas pris en charge.

• L’authentification OAuth 1.0 n’est pas prise en charge.

Mettre à niveau le connecteur Xero de la version 1.0 vers la version 2.0

  1. Dans la page Modifier le service lié , sélectionnez la version 2.0 et configurez le service lié en faisant référence aux propriétés du service lié version 2.0.

  2. Le mappage de type de données pour le service lié Xero version 2.0 est différent de celui de la version 1.0. Pour en savoir plus sur le mappage de type de données le plus récent, consultez Mappage de type de données pour Xero.

  3. Si vous utilisez le runtime d’intégration auto-hébergé, sa version doit être 5.61 ou ultérieure.

  4. Utilisez table au lieu de tableName dans la version 2.0. Pour obtenir la configuration détaillée, accédez aux propriétés du jeu de données.

  5. query est uniquement pris en charge dans la version 1.0. Vous devez utiliser table au lieu de query dans la version 2.0.

  6. Notez que la version 2.0 prend en charge des tables Xero spécifiques. Pour la liste de tables prise en charge, accédez aux propriétés du jeu de données.

Consultez les banques de données prises en charge pour obtenir la liste des banques de données prises en charge par l’activité de copie.