

# 从 Asana 实体读取内容
<a name="asana-reading-from-entities"></a>

 **先决条件** 

要从中读取内容的 Asana 对象。请参阅下面的支持的实体表，查看可用的实体。

 **源支持的实体** 


| 实体 | 可以筛选 | 支持限制 | 支持排序依据 | 支持 Select \$1 | 支持分区 | 
| --- | --- | --- | --- | --- | --- | 
|  Workspace  | 否 | 是 | 否 | 是 | 否 | 
| Tag | 否 | 是 | 否 | 是 | 否 | 
| 用户 | 否 | 是 | 否 | 是 | 否 | 
|  项目组合  | 否 | 是 | 否 | 是 | 否 | 
| Team | 否 | 是 | 否 | 是 | 否 | 
| Project | 支持 | 是 | 否 | 是 | 否 | 
| 板块 | 否 | 是 | 否 | 是 | 否 | 
| 任务  | 是 | 否 | 否 | 是 | 是 | 
| Goal | 支持 | 是 | 否 | 是 | 否 | 
|  AuditLogEvent  | 支持 | 是 | 否 | 是 | 否 | 
|  状态更新  | 支持 | 是 | 否 | 是 | 否 | 
|  自定义字段  | 否 | 是 | 否 | 是 | 否 | 
|  项目简介  | 是 | 否 | 否 | 是 | 是 | 

 **示例** 

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

 **Asana 实体和字段详细信息** 
+ [Workspace](https://developers.asana.com/docs/workspaces)
+ [Tag](https://developers.asana.com/docs/tags)
+ [User](https://developers.asana.com/docs/users)
+ [Portfolio](https://developers.asana.com/docs/portfolios)
+ [Team](https://developers.asana.com/docs/teams)
+ [Project](https://developers.asana.com/docs/get-all-projects-in-a-workspace)
+ [Section](https://developers.asana.com/docs/get-sections-in-a-project)
+ [Task](https://developers.asana.com/docs/search-tasks-in-a-workspace) 
+ [Goal](https://developers.asana.com/docs/get-goals)
+ [AuditLogEvent](https://developers.asana.com/docs/audit-log-api)
+ [Status Update](https://developers.asana.com/reference/status-updates)
+ [Custom Field](https://developers.asana.com/reference/custom-fields)
+ [Project Brief](https://developers.asana.com/reference/project-briefs)

 **对查询进行分区** 

如果您想在 Spark 中利用并发，可以提供附加 Spark 选项 `PARTITION_FIELD`、`LOWER_BOUND`、`UPPER_BOUND` 和 `NUM_PARTITIONS`。使用这些参数，原始查询将被拆分为 `NUM_PARTITIONS` 个子查询，这些子查询可以由 Spark 任务同时执行。
+ `PARTITION_FIELD`：用于对查询进行分区的字段的名称。
+ `LOWER_BOUND`：所选分区字段的包含下限值。

  对于日期，我们接受 Spark SQL 查询中使用的 Spark 日期格式。有效值示例：`2024-06-07T13:30:00.134Z`。
+ `UPPER_BOUND`：所选分区字段的排除上限值。
+ `NUM_PARTITIONS`：分区的数量。

 基于实体的分区字段支持详细信息如下表中所示。


| 实体名称 | 分区字段 | 数据类型 | 
| --- | --- | --- | 
| Task |  created\$1at  | 日期时间 | 
| Task |  modified\$1at  | 日期时间 | 

 **示例** 

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