

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 à Domo
<a name="connecting-to-data-domo"></a>

Domo est un outil de tableau de bord cloud. Avec la plateforme d’applications d’entreprise de Domo, les bases dont vous avez besoin pour étendre Domo sont en place, afin que vous puissiez créer vos solutions personnalisées plus rapidement.

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

# AWS Glue support pour Domo
<a name="domo-support"></a>

AWS Glue supporte Domo 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 Domo.

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

**Versions de l’API Domo prises en charge**  
Les versions d’API Domo suivantes sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="domo-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 de Domo
<a name="domo-configuring"></a>

Avant de pouvoir transférer des AWS Glue données depuis Domo vers des destinations prises en charge, vous devez satisfaire aux exigences suivantes :

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

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Domo activé pour accéder à l’API.
+ Vous avez une application dans votre compte de développeur Domo qui fournit les informations d'identification du client qui permettent d' AWS Glue accéder à vos données en toute sécurité lorsqu'il passe des appels authentifiés vers votre compte. Pour de plus amples informations, veuillez consulter [Création d’une application pour développeurs Domo](#domo-configuring-creating-developer-app).

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Domo.

## Création d’une application pour développeurs Domo
<a name="domo-configuring-creating-developer-app"></a>

Pour obtenir l’ID client et le secret client, vous devez créer un compte développeur.

1. Accédez à la [page de connexion du développeur Domo](https://developer.domo.com/manage-clients).

1. Choisissez **Login (Connexion)**.

1. Indiquez le nom de domaine et cliquez sur **Continuer**.

1. Passez la souris sur **Mon compte** et choisissez **Nouveau client**.

1. Indiquez le nom et la description, sélectionnez la portée (« données ») et choisissez **Créer**.

1. Récupérez l’**ID client** et le **secret client** générés auprès du nouveau client créé.

# Configuration de connexions Domo
<a name="domo-configuring-connections"></a>

Domo prend en charge le type de subvention CLIENT\$1CREDENTIALS pour. OAuth2
+ Ce type de subvention est considéré comme bidimensionnel OAuth car seule l'application cliente s'authentifie auprès du serveur, sans aucune implication de l'utilisateur.
+ Les utilisateurs peuvent choisir de créer leur propre application connectée dans Domo et de fournir leur propre identifiant client et leur propre secret client lors de la création de connexions via la AWS Glue console.
+ Pour consulter la documentation publique de Domo sur la création d'une application connectée pour le OAuth flux de code d'autorisation, consultez [OAuth Authentification](https://developer.domo.com/portal/1845fc11bbe5d-api-authentication).

Pour configurer une connexion Domo :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le jeton d’accès à l’application connectée, `client_id` et `client_secret`.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

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

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

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

   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’entités Domo
<a name="domo-reading-from-entities"></a>

**Prérequis**

Un objet Domo à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet, tel que le jeu de données ou les politiques d’autorisation des données. Le tableau suivant présente les entités prises en charge.

**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 | 
| --- | --- | --- | --- | --- | --- | 
| Ensemble de données | Oui | Oui | Oui | Oui | Oui | 
| Politiques d’autorisation des données | Non | Non | Non | Oui | Non | 

**Exemple :**

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1"
    }
```

## Détails des entités et des champs Domo
<a name="domo-reading-from-entities-field-details"></a>

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/domo-reading-from-entities.html)

Pour l’entité suivante, Domo fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique, afin que la prise en charge des opérateurs soit capturée au niveau du type de données pour l’entité.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/domo-reading-from-entities.html)

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

**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 DateTime champ, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2023-01-15T11:18:39.205Z"
  ```

  Pour le champ Date, nous acceptons la valeur au format ISO.

  Exemple de valeur valide :

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.

  Exemple de valeur valide :

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS` : le nombre de partitions.

Les détails relatifs à la prise en charge des champs de partitionnement par entité sont présentés dans le tableau suivant :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/domo-reading-from-entities.html)

Exemple :

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "permissionTime"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

**Partitionnement basé sur les enregistrements**

Vous pouvez indiquer l’option Spark supplémentaire `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ce paramètre, 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.

Dans le partitionnement basé sur les enregistrements, le nombre total d’enregistrements présents est demandé par Domo, puis divisé par le nombre `NUM_PARTITIONS` fourni. Le nombre d’enregistrements qui en résulte est ensuite extrait simultanément par chaque sous-requête.

Exemple :

```
Domo_read = glueContext.create_dynamic_frame.from_options(
    connection_type="domo",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "dataset",
        "API_VERSION": "v1",
        "NUM_PARTITIONS": "2"
    }
```

# Options de connexion Domo
<a name="domo-connection-options"></a>

Les options de connexion pour Domo sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Domo.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Domo que vous souhaitez utiliser.
+ `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.

# Restrictions de Domo
<a name="domo-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Domo :
+ En raison d’une limitation du kit SDK, le filtrage ne fonctionne pas comme prévu pour les champs interrogeables commençant par « \$1 » (par exemple : \$1BATCH\$1ID).
+ En raison d’une restriction de l’API, le filtrage fonctionne à la date antérieure à la date que vous avez indiquée. Cela affecte également l’extraction incrémentielle. Pour contourner cette limitation, sélectionnez une date en fonction de votre fuseau horaire par rapport à l’UTC, afin d’obtenir les données correspondant à la date requise.