

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 à Pipedrive
<a name="connecting-to-pipedrive"></a>

 Pipedrive est un CRM de pipeline de vente conçu pour aider les petites entreprises à gérer les prospects, à suivre les activités commerciales et à conclure davantage de ventes. Pipedrive permet aux équipes commerciales des petites entreprises de rationaliser les processus et de consolider les données de vente dans un seul outil de vente CRM unifié. Si vous êtes un utilisateur de Pipedrive, vous pouvez vous connecter AWS Glue à votre compte Pipedrive. Vous pouvez ensuite utiliser Pipedrive comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données entre Pipedrive et des AWS services ou d'autres applications prises en charge. 

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

# AWS Glue support pour Pipedrive
<a name="pipedrive-support"></a>

AWS Glue prend en charge Pipedrive comme suit :

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

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

**Versions de l’API Pipedrive prises en charge**  
 v1. 

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

 L'exemple de politique suivant décrit les AWS autorisations 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": "*"
    }
  ]
}
```

------

Vous pouvez également utiliser les politiques IAM gérées suivantes pour autoriser l’accès :
+  [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 de Pipedrive
<a name="pipedrive-configuring"></a>

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

## Configuration requise
<a name="pipedrive-configuring-min-requirements"></a>
+  Vous disposez d’un compte Pipedrive. 
+  Votre compte Pipedrive est activé pour accéder à l’API. 

 Si vous répondez à ces exigences, vous êtes prêt à vous connecter AWS Glue à votre compte Pipedrive. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Pipedrive. 

# Configuration des connexions Pipedrive
<a name="pipedrive-configuring-connections"></a>

 Pipedrive prend en charge le type de subvention AUTHORIZATION\$1CODE pour. OAuth2 
+  Ce type de subvention est considéré comme « à trois étapes » OAuth car il repose sur la redirection des utilisateurs vers le serveur d'autorisation tiers pour authentifier l'utilisateur. Il est utilisé lors de la création de connexions via la AWS Glue console. L'utilisateur qui crée une connexion peut par défaut s'appuyer sur une application connectée qu'il AWS Glue possède et dans laquelle il n'a pas besoin de fournir d'informations OAuth connexes, à l'exception de l'instanceurl de Pipedrive. La AWS Glue console redirigera l'utilisateur vers Pipedrive où il devra se connecter et accorder AWS Glue les autorisations demandées pour accéder à son instance Pipedrive. 
+  Les utilisateurs doivent choisir de créer leur propre application connectée dans Pipedrive 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 vers Pipedrive pour se connecter et autoriser l'accès AWS Glue à leurs ressources. 
+  Ce type d’autorisation donne lieu à un jeton d’actualisation et à un jeton d’accès. Le jeton d’accès est actif pendant une heure et pourra être actualisé automatiquement sans interaction de l’utilisateur à l’aide du jeton d’actualisation. 
+  Pour plus d'informations, consultez [la documentation sur la création d'une application connectée pour le flux AUTHORIZATION\$1CODE OAuth ](https://developers.pipedrive.com/docs/api/v1/Oauth). 

Pour configurer une connexion Pipedrive :

1.  Dans AWS Secrets Manager, créez un secret avec les informations suivantes. Il est nécessaire de créer un secret pour chaque connexion dans AWS Glue. 

   1.  Pour l’application connectée gérée par le client : le secret doit contenir le secret du consommateur de l’application connectée avec USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET comme clé. 

1. Dans AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous : 

   1.  Sous Connexions de données, choisissez **Créer une connexion**. 

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Pipedrive.

   1. Indiquez votre **URL d’instance** Pipedrive.

   1.  Sélectionnez le rôle IAM qui AWS Glue peut assumer les actions suivantes et qui 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.  Fournissez l'application client gérée par l'utilisateur ClientId du Pipedrive auquel vous souhaitez vous connecter. 

   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`. Choisissez **Suivant**. 

1.  Indiquez la valeur **connectionName** et choisissez **Suivant**. 

1.  Sur la page suivante, choisissez **Créer une connexion**. Il vous sera demandé de vous connecter à Pipedrive. Indiquez votre nom d’utilisateur et votre mot de passe, puis choisissez **Se connecter**. 

1.  Une fois connecté, choisissez **Continuer vers l’application**. Votre connexion est maintenant prête à être utilisée. 

1.  Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**. 

# Lecture à partir d’entités Pipedrive
<a name="pipedrive-reading-from-entities"></a>

 **Conditions préalables** 
+  Un objet Pipedrive à partir duquel vous souhaitez lire. Reportez-vous au tableau des entités prises en charge ci-dessous pour vérifier les entités disponibles. 

 **Entités prises en charge** 


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Activités | Oui | Oui | Non | Oui | Oui | 
| Type d'activité | Non | Non | Non | Oui | Non | 
| Call Logs | Non | Non | Non | Oui | Non | 
| Currencies | Oui | Oui | Non | Oui | Non | 
| Deals | Oui | Oui | Oui | Oui | Oui | 
| Leads | Oui | Oui | Oui | Oui | Non | 
| Lead Sources | Non | Oui | Non | Oui | Non | 
| Lead Labels | Non | Non | Non | Non | Non | 
| Remarques | Oui | Oui | Oui | Oui | Oui | 
| Organisation | Oui | Oui | Non | Oui | Oui | 
| Jeux d'autorisations | Oui | Non | Non | Oui | Non | 
| Personnes | Oui | Oui | Oui | Oui | Oui | 
| Pipelines | Non | Oui | Non | Oui | Non | 
| Produits | Oui | Oui | Non | Oui | Oui | 
| Roles | Non | Oui | Non | Oui | Non | 
| Stages | Oui | Oui | Non | Oui | Non | 
| Utilisateurs | Non | Non | Non | Oui | Non | 

 **Exemple** 

```
pipedrive_read= glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1"
    }
```

 **Détails des entités et des champs Pipedrive** 

 Liste des entités : 
+  Activités : [https://developers.pipedrive.com/docs/api/v1/Activities](https://developers.pipedrive.com/docs/api/v1/Activities) 
+  Type d'activité : [https://developers.pipedrive.com/docs/api/v1/ActivityTypes](https://developers.pipedrive.com/docs/api/v1/ActivityTypes) 
+  Journaux d'appels : [https://developers.pipedrive.com/docs/api/v1/CallLogs](https://developers.pipedrive.com/docs/api/v1/CallLogs) 
+  Devises : [https://developers.pipedrive.com/docs/api/v1/Currencies](https://developers.pipedrive.com/docs/api/v1/Currencies) 
+  Offres : [https://developers.pipedrive.com/docs/api/v1/Deals](https://developers.pipedrive.com/docs/api/v1/Deals) 
+  Prospects : [https://developers.pipedrive.com/docs/api/v1/Leads](https://developers.pipedrive.com/docs/api/v1/Leads) 
+  Sources de plomb : [https://developers.pipedrive.com/docs/api/v1/LeadSources](https://developers.pipedrive.com/docs/api/v1/LeadSources) 
+  Étiquettes en plomb : [https://developers.pipedrive.com/docs/api/v1/LeadLabels](https://developers.pipedrive.com/docs/api/v1/LeadLabels) 
+  Remarques : [https://developers.pipedrive.com/docs/api/v1/Notes](https://developers.pipedrive.com/docs/api/v1/Notes) 
+  Organisations : [https://developers.pipedrive.com/docs/api/v1/Organizations](https://developers.pipedrive.com/docs/api/v1/Organizations) 
+  Ensembles d'autorisations : [https://developers.pipedrive.com/docs/api/v1/PermissionSets](https://developers.pipedrive.com/docs/api/v1/PermissionSets) 
+  Personnes : [https://developers.pipedrive.com/docs/api/v1/Persons](https://developers.pipedrive.com/docs/api/v1/Persons) 
+  Canalisations : [https://developers.pipedrive.com/docs/api/v1/Pipelines](https://developers.pipedrive.com/docs/api/v1/Pipelines) 
+  Produits : [https://developers.pipedrive.com/docs/api/v1/Products](https://developers.pipedrive.com/docs/api/v1/Products) 
+  Rôles : [https://developers.pipedrive.com/docs/api/v1/Roles](https://developers.pipedrive.com/docs/api/v1/Roles) 
+  Étapes : [https://developers.pipedrive.com/docs/api/v1/Stages](https://developers.pipedrive.com/docs/api/v1/Stages) 
+  Utilisateurs : [https://developers.pipedrive.com/docs/api/v1/Users](https://developers.pipedrive.com/docs/api/v1/Users) 


| Entité | Type de données | Opérateurs pris en charge | 
| --- | --- | --- | 
| Activities, Deals, Notes, Organization, Persons et Products. | Date | '=' | 
|  | Entier | '=' | 
|  | String | '=' | 
|  | Booléen | '=' | 

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

 Dans Pipedrive, un seul champ (due\$1date) de l’entité Activities prend en charge le partitionnement basé sur les champs. Il s’agit d’un champ Date. 

 Les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` peuvent être indiquées 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 Date, nous acceptons le format de date Spark utilisé dans les requêtes SQL Spark. Exemples de valeurs valides : `"2024-02-06"`. 
+  `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi. 
+  `NUM_PARTITIONS` : nombre de partitions. 

 **Exemple** 

```
pipedrive_read = glueContext.create_dynamic_frame.from_options(
    connection_type="PIPEDRIVE",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "activites",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "due_date"
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z"
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# Référence des options de connexion Pipedrive
<a name="pipedrive-connection-options"></a>

Les options de connexion pour Pipedrive sont les suivantes :
+  `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Le nom de votre objet dans Pipedrive. 
+  `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture/l’écriture. Version d’API Rest Pipedrive que vous souhaitez utiliser. Exemple : v1. 
+  `INSTANCE_URL`(Chaîne) - (Obligatoire) URL de l’instance sur laquelle l’utilisateur souhaite exécuter les opérations. Exemple : v1. 
+  `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
<a name="pipedrive-connector-limitations"></a>

Les restrictions du connecteur Pipedrive sont les suivantes :
+ Pipedrive prend en charge le partitionnement basé sur les champs pour une seule entité (Activities).
+ Pipedrive prend en charge le partitionnement basé sur les enregistrements pour les entités Activities, Deals, Notes, Persons, Organizations et Products.
+ Dans l’entité Deals, le champ de statut en tant que filtre renverra tous les enregistrements si une valeur de filtre de valeur non valide est utilisée.
+ Dans l’entité Deals, la commande avec plusieurs champs n’est pas prise en charge.
+ Pour obtenir des données de performance, nous utilisons un AWS compte local. Cependant, en raison de la limitation de l'actualisation locale du jeton d'accès, la AWS Glue tâche de traitement de 1 Go de données échoue. Par conséquent, nous avons optimisé le test de performance avec 179 Mo de données, et les résultats ci-dessus sont basés sur cette optimisation. Néanmoins, nous avons observé qu’avec l’augmentation du nombre de partitions, le point de terminaison SaaS prend plus de temps qu’une partition unique. Nous avons consulté l’équipe d’assistance de Pipedrive à propos de ce comportement, qui nous a informés que Pipedrive limitait silencieusement les demandes et retardait la réponse. Par conséquent, lorsque vous exécutez la AWS Glue tâche avec de grands ensembles de données ou que vous appelez plusieurs fois le même point de terminaison d'API, cela peut entraîner un problème de délai d'attente en raison de l'implémentation de l'API Pipedrive. Cependant, les temps de réponse du connecteur et du shim diminuent comme prévu en raison de l’augmentation du nombre de partitions.