

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Connessione a Domo
<a name="connecting-to-data-domo"></a>

Domo è uno strumento che funziona come un pannello di controllo basato sul cloud. La piattaforma applicativa aziendale di Domo pone le basi necessarie per estendere lo strumento, in modo da poter creare soluzioni personalizzate più velocemente.

**Topics**
+ [AWS Glue supporto per Domo](domo-support.md)
+ [Policy contenenti le operazioni API per creare e utilizzare le connessioni](domo-configuring-iam-permissions.md)
+ [Configurazione di Domo](domo-configuring.md)
+ [Configurazione delle connessioni Domo](domo-configuring-connections.md)
+ [Lettura dalle entità di Domo](domo-reading-from-entities.md)
+ [Opzioni di connessione di Domo](domo-connection-options.md)
+ [Limitazioni di Domo](domo-connection-limitations.md)

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

AWS Glue supporta Domo come segue:

**Supportato come origine?**  
Sì. È possibile utilizzare i job AWS Glue ETL per interrogare i dati da Domo.

**Supportato come destinazione?**  
No.

**Versioni delle API Domo supportate**  
Sono supportate le seguenti versioni delle API Domo:
+ v1

# Policy contenenti le operazioni API per creare e utilizzare le connessioni
<a name="domo-configuring-iam-permissions"></a>

La seguente policy di esempio descrive le autorizzazioni AWS IAM richieste per la creazione e l'utilizzo delle connessioni. Se si sta creando un nuovo ruolo, creare una policy che contenga quanto segue:

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

****  

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

------

In alternativa, se non desideri utilizzare il metodo precedente, utilizza le seguenti policy IAM gestite:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Garantisce l'accesso alle risorse che AWS Glue i vari processi richiedono per l'esecuzione per conto dell'utente. Queste risorse includono AWS Glue Amazon S3, IAM, CloudWatch Logs e Amazon. EC2 Se segui la convenzione di denominazione delle risorse specificata in questa politica, AWS Glue i processi dispongono delle autorizzazioni richieste. Questa policy è in genere collegata ai ruoli specificati quando si definiscono crawler, processi ed endpoint di sviluppo.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Concede l'accesso completo alle AWS Glue risorse quando un'identità a cui è allegata la policy utilizza la AWS console di gestione. Se si segue la convenzione per la denominazione per le risorse specificate nella policy, gli utenti hanno la piena funzionalità della console. Questa policy è in genere associata agli utenti della AWS Glue console.

# Configurazione di Domo
<a name="domo-configuring"></a>

Prima di poterli utilizzare AWS Glue per trasferire dati da Domo alle destinazioni supportate, devi soddisfare questi requisiti:

## Requisiti minimi
<a name="domo-configuring-min-requirements"></a>

I requisiti minimi sono i seguenti:
+ Hai un account Domo abilitato per l'accesso alle API.
+ Nel tuo account sviluppatore Domo hai un'app che fornisce le credenziali del client che AWS Glue utilizza per accedere ai tuoi dati in modo sicuro quando effettua chiamate autenticate al tuo account. Per ulteriori informazioni, consulta [Creazione di un'app per sviluppatori Domo](#domo-configuring-creating-developer-app).

Se soddisfi questi requisiti, sei pronto per AWS Glue connetterti al tuo account Domo.

## Creazione di un'app per sviluppatori Domo
<a name="domo-configuring-creating-developer-app"></a>

Per ottenere l'ID client e il segreto client devi creare un account sviluppatore.

1. Vai alla [pagina di accesso per gli sviluppatori di Domo.](https://developer.domo.com/manage-clients)

1. Selezionare **Login (Accesso)**.

1. Fornisci il nome dominio e fai clic su **Continua**.

1. Passa con il mouse su **Il mio account** e seleziona **Nuovo client**.

1. Fornisci il nome e la descrizione, seleziona l'ambito ("dati") e scegli **Crea**.

1. Recupera l'**ID client** e il **Segreto client** generati dal nuovo client creato.

# Configurazione delle connessioni Domo
<a name="domo-configuring-connections"></a>

Domo supporta il tipo di concessione CLIENT\$1CREDENTIALS per. OAuth2
+ Questo tipo di concessione è considerato a due vie in OAuth quanto solo l'applicazione client si autentica sul server, senza alcun coinvolgimento dell'utente.
+ Gli utenti possono scegliere di creare la propria app connessa in Domo e fornire il proprio ID client e il segreto del client durante la creazione di connessioni tramite la console. AWS Glue 
+ [Per la documentazione pubblica di Domo sulla creazione di un'app connessa per il OAuth flusso del codice di autorizzazione, vedi OAuth Autenticazione.](https://developer.domo.com/portal/1845fc11bbe5d-api-authentication)

Per configurare una connessione Domo:

1. In AWS Secrets Manager, crea un segreto con i seguenti dettagli:

   1. Per l'app connessa gestita dal cliente, il segreto deve contenere il token di accesso all'app connessa, `client_secret`, e `client_id`.

   1. Nota: devi creare un segreto per le tue connessioni in AWS Glue.

1. In AWS Glue Glue Studio, crea una connessione in **Connessioni dati** seguendo i passaggi seguenti:

   1. In **Connessioni**, scegli **Crea connessione**.

   1. Quando si seleziona una **Origine dati**, selezionare Domo.

   1. Seleziona il ruolo AWS IAM che AWS Glue può assumere e dispone delle autorizzazioni per le seguenti azioni:

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

****  

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

------

   1. Seleziona quello `secretName` che desideri utilizzare per questa connessione per AWS Glue inserire i token.

   1. Selezionare le opzioni di rete se si desidera utilizzare la propria rete.

1. Concedi il permesso di lettura `secretName` al ruolo IAM associato al tuo AWS Glue lavoro.

# Lettura dalle entità di Domo
<a name="domo-reading-from-entities"></a>

**Prerequisito**

Un oggetto di Domo da cui si desidera leggere. Sarà necessario il nome dell'oggetto, ad esempio Set di dati o Policy relative alle autorizzazioni sui dati. Nella tabella seguente sono illustrate le entità supportate.

**Entità supportate come origine**:


| Entità | Può essere filtrato | Supporta limite | Supporta Ordina per | Supporta Seleziona \$1 | Supporta il partizionamento | 
| --- | --- | --- | --- | --- | --- | 
| Set di dati | Sì  | Sì | Sì | Sì | Sì | 
| Policy relative alle autorizzazioni sui dati | No | No | No | Sì | No | 

**Esempio**:

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

## Dettagli dell'entità e del campo di Domo
<a name="domo-reading-from-entities-field-details"></a>

Entità con metadati statici:

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

Per la seguente entità, Domo fornisce endpoint per recuperare i metadati in modo dinamico, cosicché il supporto dell'operatore venga acquisito a livello di tipo di dati per l'entità.

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

## Query di partizionamento
<a name="domo-reading-from-partitioning"></a>

**Partizionamento basato sul campo**

Puoi fornire le opzioni Spark aggiuntive `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se desideri utilizzare la concorrenza in Spark. Con questi parametri, la query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.
+ `PARTITION_FIELD`: il nome del campo da utilizzare per partizionare la query.
+ `LOWER_BOUND`: un valore limite inferiore **inclusivo** del campo di partizione scelto.

  Per il DateTime campo, accettiamo il valore in formato ISO.

  Esempio di valore valido:

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

  Per il campo Data, accettiamo il valore in formato ISO.

  Esempio di valore valido:

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND`: un valore limite superiore **esclusivo** del campo di partizione scelto.

  Esempio di valore valido:

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS`: il numero di partizioni.

I dettagli di supporto del campo di partizionamento per entità sono riportati nella tabella seguente:

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

Esempio:

```
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"
    }
```

**Partizionamento basato su record**

È possibile fornire l'opzione Spark aggiuntiva `NUM_PARTITIONS` se si desidera utilizzare la simultaneità in Spark. Con questo parametro, la query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.

Nel partizionamento basato su record, Domo esegue query sul numero totale di record presenti e lo divide per il numero `NUM_PARTITIONS` fornito. Il numero di record risultante viene quindi recuperato contemporaneamente da ciascuna sotto-query.

Esempio:

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

# Opzioni di connessione di Domo
<a name="domo-connection-options"></a>

Di seguito sono riportate le opzioni di connessione per Domo:
+ `ENTITY_NAME`(String): (obbligatorio) utilizzato per la lettura. Il nome del tuo oggetto in Domo.
+ `API_VERSION`(String): (obbligatorio) utilizzato per la lettura. Versione dell'API Rest di Domo da utilizzare.
+ `SELECTED_FIELDS`(List<String>): predefinito: vuoto (SELECT \$1). Utilizzato per la lettura. Colonne da selezionare per l'oggetto.
+ `FILTER_PREDICATE`(Stringa): predefinito: vuoto. Utilizzato per la lettura. Dev'essere in formato Spark SQL.
+ `QUERY`(Stringa): predefinito: vuoto. Utilizzato per la lettura. Query Spark SQL completa.
+ `PARTITION_FIELD`(Stringa): utilizzato per la lettura. Campo da utilizzare per partizionare la query.
+ `LOWER_BOUND`(Stringa): utilizzato per la lettura. Un valore limite inferiore inclusivo del campo di partizione scelto.
+ `UPPER_BOUND`(Stringa): utilizzato per la lettura. Un valore limite superiore esclusivo del campo di partizione scelto. 
+ `NUM_PARTITIONS`(Numero intero): predefinito: 1. Utilizzato per la lettura. Numero di partizioni da leggere.

# Limitazioni di Domo
<a name="domo-connection-limitations"></a>

Di seguito sono riportate le limitazioni o le note relative a Domo:
+ A causa di una limitazione dell'SDK, il filtro non funziona come previsto per i campi interrogabili che iniziano con il simbolo '\$1' (ad esempio: \$1BATCH\$1ID).
+ A causa di una limitazione dell'API, il filtro funziona sulla data precedente alla data fornita. Ciò influisce anche sul pull incrementale. Per superare questa limitazione e ottenere i dati relativi alla data richiesta, seleziona una data in base al tuo fuso orario rispetto all'UTC.