

# Lectura de entidades de Domo
<a name="domo-reading-from-entities"></a>

**Requisito previo**

Un objeto de Domo desde el que desea leer. Necesitará el nombre del objeto, como Conjunto de datos o Políticas de permisos de datos. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \* | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Conjunto de datos | Sí | Sí | Sí | Sí | Sí | 
| Políticas de permisos de datos | No | No | No | Sí | No | 

**Ejemplo:**

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

## Detalles de entidades y campos de Domo
<a name="domo-reading-from-entities-field-details"></a>

Entidades con metadatos estáticos:



- **Políticas de permisos de datos**
  - **Campo:** id / **Tipo de datos::** Largo / **Operadores admitidos:** N/A
  - **Campo:** type / **Tipo de datos::** Cadena / **Operadores admitidos:** N/A
  - **Campo:** nombre / **Tipo de datos::** Cadena / **Operadores admitidos:** N/A
  - **Campo:** filters / **Tipo de datos::** Enumeración / **Operadores admitidos:** N/A
  - **Campo:** usuarios / **Tipo de datos::** Enumeración / **Operadores admitidos:** N/A
  - **Campo:** virtualUsers / **Tipo de datos::** Enumeración / **Operadores admitidos:** N/A
  - **Campo:** grupos / **Tipo de datos::** Enumeración / **Operadores admitidos:** N/A



Para la siguiente entidad, Domo proporciona puntos de conexión para obtener metadatos de forma dinámica, de modo que la compatibilidad del operador se capture a nivel de tipo de datos para la entidad.



- **Conjunto de datos**
  - **Tipo de datos::** Entero / **Operadores admitidos:** =, \!=, <, >, >=, <=
  - **Tipo de datos::** Largo / **Operadores admitidos:** =, \!=, <, >, >=, <=
  - **Tipo de datos::** Cadena / **Operadores admitidos:** =, \!=, CONTAINS
  - **Tipo de datos::** Date / **Operadores admitidos:**  =, >, >=, <, <=, BETWEEN
  - **Tipo de datos::** DateTime / **Operadores admitidos:**  =, >, >=, <, <=, BETWEEN
  - **Tipo de datos::** Booleano / **Operadores admitidos:** =, \!=
  - **Tipo de datos::** Doble / **Operadores admitidos:** =, \!=, <, >, >=, <=
  - **Tipo de datos::** Enumeración / **Operadores admitidos:** N/A
  - **Tipo de datos::** Struct / **Operadores admitidos:** N/A



## Consultas de partición
<a name="domo-reading-from-partitioning"></a>

**Partición basada en campos**

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  Para el campo DateTime, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

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

  En el campo Fecha, aceptamos el valor en formato ISO.

  Ejemplo de valor válido:

  ```
  "2023-01-15"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.

  Ejemplo de valor válido:

  ```
  "2023-02-15T11:18:39.205Z"
  ```
+ `NUM_PARTITIONS`: el número de particiones.

En la siguiente tabla se detalla la compatibilidad de los campos de partición por entidad:



- **Conjunto de datos**
  - **Campos de partición:** Cualquier campo basado en fecha y hora [metadatos dinámicos] / **Tipo de datos::** DateTime
  - **Campos de partición:** Cualquier campo basado en fecha [metadatos dinámicos] / **Tipo de datos::** Date



Ejemplo:

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

**Partición basada en registros**

Puede proporcionar la opción adicional `NUM_PARTITIONS` de Spark si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.

En la partición basada en registros, se consulta el número total de registros presentes en Domo y se divide entre el número de `NUM_PARTITIONS` proporcionado. A continuación, cada subconsulta obtiene simultáneamente el número de registros resultante.

Ejemplo:

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