

# Leitura de entidades do Asana
<a name="asana-reading-from-entities"></a>

 **Pré-requisitos** 

Um objeto do Asana do qual você deseja ler. Consulte a tabela de entidades compatíveis abaixo para verificar as entidades disponíveis. 

 **Entidades com suporte para a fonte** 


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \* | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Espaço de trabalho | Não | Sim | Não | Sim | Não | 
| Tag | Não | Sim | Não | Sim | Não | 
| Usuário | Não | Sim | Não | Sim | Não | 
| Portfólio | Não | Sim | Não | Sim | Não | 
| Team | Não | Sim | Não | Sim | Não | 
| Projeto | Sim | Sim | Não | Sim | Não | 
| Seção | Não | Sim | Não | Sim | Não | 
| Tarefa  | Sim | Não | Não | Sim | Sim | 
| Objetivo | Sim | Sim | Não | Sim | Não | 
| AuditLogEvent | Sim | Sim | Não | Sim | Não | 
| Atualização de status | Sim | Sim | Não | Sim | Não | 
| Campo personalizado | Não | Sim | Não | Sim | Não | 
| Resumo do projeto | Sim | Não | Não | Sim | Sim | 

 **Exemplo** 

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

 **Detalhes de entidade e campo do Asana** 
+ [Espaço de trabalho](https://developers.asana.com/docs/workspaces)
+ [Etiqueta](https://developers.asana.com/docs/tags)
+ [Usuário](https://developers.asana.com/docs/users)
+ [Portfólio](https://developers.asana.com/docs/portfolios)
+ [Equipe](https://developers.asana.com/docs/teams)
+ [Projeto](https://developers.asana.com/docs/get-all-projects-in-a-workspace)
+ [Seção](https://developers.asana.com/docs/get-sections-in-a-project)
+ [Tarefa](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)
+ [Atualização de status](https://developers.asana.com/reference/status-updates)
+ [Campo personalizado](https://developers.asana.com/reference/custom-fields)
+ [Resumo do projeto](https://developers.asana.com/reference/project-briefs)

 **Particionamento de consultas** 

Podem ser fornecidas as opções adicionais do Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se você quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente. 
+ `PARTITION_FIELD`: o nome do campo a ser usado para particionar a consulta. 
+ `LOWER_BOUND`: um valor limite inferior inclusivo do campo de partição escolhido. 

  Na data, aceitamos o formato de data do Spark usado em consultas SQL do Spark. Exemplo de valores válidos: `2024-06-07T13:30:00.134Z`. 
+ `UPPER_BOUND`: um valor limite superior exclusivo do campo de partição escolhido. 
+ `NUM_PARTITIONS`: número de partições. 

 Os detalhes do suporte do campo de particionamento relativo às entidades são capturados na tabela a seguir. 


| Entity Name | Campo de particionamento | Tipo de dado | 
| --- | --- | --- | 
| Tarefa | created\_at | DateTime | 
| Tarefa | modified\_at | DateTime | 

 **Exemplo** 

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