

# Cómo leer de las entidades de Asana
<a name="asana-reading-from-entities"></a>

 **Requisitos previos** 

Un objeto de Asana del que le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades admitidas para el origen** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
|  Espacio de trabajo  | No | Sí | No | Sí | No | 
| Tag | No | Sí | No | Sí | No | 
| Usuario | No | Sí | No | Sí | No | 
|  Portfolio  | No | Sí | No | Sí | No | 
| Equipo | No | Sí | No | Sí | No | 
| Proyecto | Sí | Sí | No | Sí | No | 
| Sección | No | Sí | No | Sí | No | 
| Tarea  | Sí | No | No | Sí | Sí | 
| Objetivo | Sí | Sí | No | Sí | No | 
|  AuditLogEvent  | Sí | Sí | No | Sí | No | 
|  Actualización de estado  | Sí | Sí | No | Sí | No | 
|  Campo personalizado  | No | Sí | No | Sí | No | 
|  Breve descripción del proyecto  | Sí | No | No | Sí | Sí | 

 **Ejemplo** 

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Asana",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "task/workspace:xxxx",
        "API_VERSION": "1.0",
        "PARTITION_FIELD": "created_at",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```

 **Detalles de entidades y campos de Asana** 
+ [Espacio de trabajo](https://developers.asana.com/docs/workspaces)
+ [Tag](https://developers.asana.com/docs/tags)
+ [Usuario](https://developers.asana.com/docs/users)
+ [Portafolio](https://developers.asana.com/docs/portfolios)
+ [Equipo](https://developers.asana.com/docs/teams)
+ [Proyecto](https://developers.asana.com/docs/get-all-projects-in-a-workspace)
+ [Sección](https://developers.asana.com/docs/get-sections-in-a-project)
+ [Tarea](https://developers.asana.com/docs/search-tasks-in-a-workspace) 
+ [Objetivo](https://developers.asana.com/docs/get-goals)
+ [AuditLogEvent](https://developers.asana.com/docs/audit-log-api)
+ [Actualización de estado](https://developers.asana.com/reference/status-updates)
+ [Campo personalizado](https://developers.asana.com/reference/custom-fields)
+ [Breve descripción del proyecto](https://developers.asana.com/reference/project-briefs)

 **Consultas de partición** 

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere usar 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 usará para particionar la consulta. 
+ `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

  Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `2024-06-07T13:30:00.134Z`. 
+ `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+ `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se capturaron en la siguiente tabla. 


| Nombre de la entidad | Campo de partición | Tipo de datos | 
| --- | --- | --- | 
| Tarea |  created\$1at  | DateTime | 
| Tarea |  modified\$1at  | DateTime | 

 **Ejemplo** 

```
read_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Asana",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "task/workspace:xxxx",
        "API_VERSION": "1.0",
        "PARTITION_FIELD": "created_at",
        "LOWER_BOUND": "2024-02-05T14:09:30.115Z",
        "UPPER_BOUND": "2024-06-07T13:30:00.134Z",
        "NUM_PARTITIONS": "3"
    }
```