

# 从 Salesforce Marketing Cloud 实体中读取
<a name="salesforce-marketing-cloud-reading-from-entities"></a>

**先决条件**

您要从中读取内容的 Salesforce Marketing Cloud 对象。您将需要 `Activity` 或 `Campaigns` 等对象名称。下表显示支持的实体。

**源支持的实体**：


| 实体 | 接口 | 可以筛选 | 支持限制 | 支持排序依据 | 支持 SELECT \$1 | 支持分区 | 
| --- | --- | --- | --- | --- | --- | --- | 
| 事件通知回调 | REST | 否 | 否 | 否 | 是 | 否 | 
| 种子列表 | REST | 否 | 是 | 否 | 是 | 否 | 
| 设置 | REST | 支持 | 是 | 否 | 是 | 否 | 
| 域验证 | REST | 支持 | 是 | 是 | 是 | 否 | 
| 对象嵌套标签 | REST | 是 | 否 | 否 | 是 | 否 | 
| 联系人 | REST | 否 | 是 | 否 | 是 | 否 | 
| 事件通知订阅 | REST | 否 | 否 | 否 | 是 | 否 | 
| 消息收发 | REST | 否 | 是 | 否 | 是 | 否 | 
| 活动 | SOAP | 否 | 否 | 否 | 是 | 是 | 
| 退回事件 | SOAP | 否 | 否 | 否 | 是 | 是 | 
| 单击事件 | SOAP | 否 | 否 | 否 | 是 | 是 | 
| 内容区域 | SOAP | 否 | 否 | 否 | 是 | 是 | 
| 数据扩展 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 电子邮件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 转发的电子邮件事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 转发电子邮件选择加入事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 链接 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 链接发送 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 列表 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 列出订阅用户 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 未发送的事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 公开事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 发送 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 已发送事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 订阅者 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 调查事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 取消订阅事件 | SOAP | 否 | 是 | 否 | 是 | 是 | 
| 审计事件 | REST | 否 | 是 | 是 | 是 | 否 | 
| 市场活动 | REST | 否 | 是 | 是 | 是 | 否 | 
| 交互 | REST | 否 | 是 | 是 | 是 | 否 | 
| 内容素材 | REST | 否 | 是 | 是 | 是 | 否 | 

**REST 的示例**：

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Campaigns",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://**********************.rest.marketingcloudapis.com"
    }
)
```

**SOAP 的示例**：

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Activity",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://**********************.soap.marketingcloudapis.com"
    }
)
```

**Salesforce Marketing Cloud 实体和字段详细信息**：

下表描述 Salesforce Marketing Cloud 实体。REST 实体具有静态元数据，而 SOAP 实体具有动态元数据。

**具有静态元数据的 REST 实体**：

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

**具有动态元数据的 SOAP 实体**：

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

## 对查询进行分区
<a name="salesforce-marketing-cloud-reading-partitioning-queries"></a>

在 Salesforce Marketing Cloud 中，整数和日期时间数据类型字段支持基于字段的分区。

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

  对于时间戳字段，我们接受 Spark SQL 查询中使用的 Spark 时间戳格式。

  有效值示例：

  ```
  “2024-05-07T02:03:00.00Z"
  ```
+ `UPPER_BOUND`：所选分区字段的**排除**上限值。
+ `NUM_PARTITIONS`：分区的数量。

示例：

```
salesforcemarketingcloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="salesforcemarketingcloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "ListSubscriber",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "CreatedDate",
        "LOWER_BOUND": "2023-09-07T02:03:00.000Z",
        "UPPER_BOUND": "2024-05-07T02:03:00.000Z",
        "NUM_PARTITIONS": "10"
    }
)
```