

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à QuickBooks
<a name="connecting-to-data-quickbooks"></a>

QuickBooks est une application comptable de premier plan pour les petites et moyennes entreprises. QuickBooks les applications comptables remontent aux années 1980 en tant que l'un des premiers produits d'Intuit. Il s'agissait donc à l'origine d'un logiciel de bureau. Aujourd'hui, QuickBooks propose plusieurs applications comptables et financières commerciales sous forme de logiciels installables et de logiciels SaaS basés sur le cloud. En tant qu' QuickBooks utilisateur, vous pouvez vous connecter AWS Glue à votre QuickBooks compte. Vous pouvez ensuite l'utiliser QuickBooks comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre QuickBooks des AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour QuickBooks](quickbooks-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](quickbooks-configuring-iam-permissions.md)
+ [Configuration QuickBooks](quickbooks-configuring.md)
+ [Configuration des QuickBooks connexions](quickbooks-configuring-connections.md)
+ [Lecture à partir d' QuickBooks entités](quickbooks-reading-from-entities.md)
+ [QuickBooks options de connexion](quickbooks-connection-options.md)
+ [Limitations et remarques relatives au QuickBooks connecteur](quickbooks-connector-limitations.md)

# AWS Glue support pour QuickBooks
<a name="quickbooks-support"></a>

AWS Glue prend en charge QuickBooks les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de QuickBooks.

**Prise en charge en tant que cible ?**  
Non.

**Versions QuickBooks d'API prises en charge**  
Les versions QuickBooks d'API suivantes sont prises en charge :
+ v3

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="quickbooks-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console.

# Configuration QuickBooks
<a name="quickbooks-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis QuickBooks, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="quickbooks-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Tu as un QuickBooks compte.
+ Votre QuickBooks compte est activé pour accéder à l'API.

Pour plus d'informations, consultez les rubriques suivantes de la QuickBooks documentation :
+ [Créer un compte Intuit](https://quickbooks.intuit.com/learn-support/en-us/help-article/account-management/create-intuit-user-account/L62kSFEOM_US_en_US)
+ [Créer et commencer à développer votre application](https://developer.intuit.com/app/developer/qbo/docs/get-started/start-developing-your-app)

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre QuickBooks compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans QuickBooks.

# Configuration des QuickBooks connexions
<a name="quickbooks-configuring-connections"></a>

QuickBooks prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 Le type de subvention détermine le mode de AWS Glue communication avec QuickBooks lequel vous pouvez demander l'accès à vos données.
+ Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers un serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console.
+ Les utilisateurs peuvent toujours choisir de créer leur propre application connectée QuickBooks et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console. Dans ce scénario, ils seront toujours redirigés QuickBooks vers pour se connecter et autoriser AWS Glue l'accès à leurs ressources.
+ Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est de courte durée et peut être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation.
+ Pour consulter QuickBooks la documentation publique sur la création d'une application connectée pour le OAuth flux de code d'autorisation, voir [Configuration OAuth 2.0](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0).

Pour configurer une QuickBooks connexion :

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez QuickBooks.

   1. Fournissez l'URL de l'instance et l'ID d'entreprise de l' QuickBooks instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d' QuickBooks entités
<a name="quickbooks-reading-from-entities"></a>

**Prérequis**

Un QuickBooks objet que vous aimeriez lire.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Compte | Oui | Oui | Oui | Oui | Oui | 
| Bill | Oui | Oui | Oui | Oui | Oui | 
| Company Info | Non | Non | Non | Oui | Non | 
| Client | Oui | Oui | Oui | Oui | Oui | 
| Employee | Oui | Oui | Oui | Oui | Oui | 
| Estimate | Oui | Oui | Oui | Oui | Oui | 
| Invoice | Oui | Oui | Oui | Oui | Oui | 
| Élément | Oui | Oui | Oui | Oui | Oui | 
| Payment | Oui | Oui | Oui | Oui | Oui | 
| Préférences | Non | Non | Non | Oui | Non | 
| Profit and Loss | Oui | Non | Non | Oui | Non | 
| Tax Agency | Oui | Oui | Oui | Oui | Oui | 
| Vendors | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3"
    }
```

**QuickBooks détails de l'entité et du champ** :

Pour plus d’informations sur les entités et de détails sur les champs, consultez :
+ [Compte](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account)
+ [Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/bill)
+ [CompanyInfo](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/companyinfo)
+ [Client](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/customer)
+ [Employee](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/employee)
+ [Estimate](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/estimate)
+ [Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice)
+ [Elément](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/item)
+ [Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/payment)
+ [Préférences](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/preferences)
+ [ProfitAndLoss](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/profitandloss)
+ [TaxAgency](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/taxagency)
+ [Fournisseur](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/vendor)

## Requêtes de partitionnement
<a name="quickbooks-reading-partitioning-queries"></a>

**Partitionnement basé sur les champs** :

Dans QuickBooks, les champs Integer et DateTime datatype prennent en charge le partitionnement basé sur les champs.

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "12345678690123456789",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v3",
        "PARTITION_FIELD": "MetaData_CreateTime"
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z"
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

**Partitionnement basé sur des enregistrements** :

La requête d’origine est divisée en `NUM_PARTITIONS` nombres de sous-requêtes qui peuvent être exécutées simultanément par les tâches Spark :
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
QuickBooks_read = glueContext.create_dynamic_frame.from_options(
    connection_type="quickbooks",
    connection_options={
        "connectionName": "connectionName",
        "REALMID": "1234567890123456789",
        "ENTITY_NAME": "Bill",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# QuickBooks options de connexion
<a name="quickbooks-connection-options"></a>

Les options de connexion suivantes sont disponibles pour QuickBooks :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans QuickBooks.
+ `INSTANCE_URL`(String) - (Obligatoire) Une URL d' QuickBooks instance valide.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. QuickBooks Version de l'API Rest que vous souhaitez utiliser.
+ `REALM_ID`(Chaîne) - Un identifiant identifiant une entreprise QuickBooks en ligne individuelle à laquelle vous envoyez des demandes.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Limitations et remarques relatives au QuickBooks connecteur
<a name="quickbooks-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le QuickBooks connecteur :
+ Dans l’API `taxAgency`, le filtrage Order by ne fonctionne pas comme prévu.