从 HubSpot 实体中读取
先决条件
您要从中读取内容的 HubSpot 对象。您将需要联系人或任务等对象名称。下表显示了同步源支持的实体。
同步源支持的实体
| 实体 | API 版本 | 可以筛选 | 支持限制 | 支持排序依据 | 支持选择* | 支持分区 |
|---|---|---|---|---|---|---|
| 市场活动 | v1 | 否 | 是 | 否 | 是 | 否 |
| 公司 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 联系人 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 联系人列表 | v1 | 否 | 是 | 否 | 是 | 否 |
| 交易 | v3 | 支持 | 是 | 是 | 是 | 是 |
| CRM 管道(交易管道) | v1 | 否 | 否 | 否 | 是 | 否 |
| 电子邮件事件 | v1 | 否 | 是 | 否 | 是 | 否 |
| Calls | v3 | 支持 | 是 | 是 | 是 | 是 |
| 备注 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 电子邮件 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 会议 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 任务 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 邮政邮件 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 自定义对象 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 表单 | v2 | 否 | 否 | 否 | 是 | 否 |
| 所有者 | v3 | 否 | 是 | 否 | 是 | 否 |
| 产品 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 工单 | v3 | 支持 | 是 | 是 | 是 | 是 |
| 工作流 | v3 | 否 | 否 | 否 | 是 | 否 |
| Associations | v4 | 是 | 否 | 否 | 是 | 否 |
| 关联标签 | v4 | 否 | 否 | 否 | 是 | 否 |
示例:
hubspot_read = glueContext.create_dynamic_frame.from_options( connection_type="hubspot", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "contact", "API_VERSION": "v3" }
异步源支持的实体
| 实体 | API 版本 | 可以筛选 | 支持限制 | 支持排序依据 | 支持选择* | 支持分区 |
|---|---|---|---|---|---|---|
| 公司 | v3 | 是 | 否 | 是 | 是 | 否 |
| 联系人 | v3 | 是 | 否 | 是 | 是 | 否 |
| 交易 | v3 | 是 | 否 | 是 | 是 | 否 |
| Calls | v3 | 是 | 否 | 是 | 是 | 否 |
| 备注 | v3 | 是 | 否 | 是 | 是 | 否 |
| 电子邮件 | v3 | 是 | 否 | 是 | 是 | 否 |
| 会议 | v3 | 是 | 否 | 是 | 是 | 否 |
| 任务 | v3 | 是 | 否 | 是 | 是 | 否 |
| 邮政邮件 | v3 | 是 | 否 | 是 | 是 | 否 |
| 自定义对象 | v3 | 是 | 否 | 是 | 是 | 否 |
| 产品 | v3 | 是 | 否 | 是 | 是 | 否 |
| 工单 | v3 | 是 | 否 | 是 | 是 | 否 |
示例:
hubspot_read = glueContext.create_dynamic_frame.from_options( connection_type="hubspot", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "contact", "API_VERSION": "v3", "TRANSFER_MODE": "ASYNC" }
HubSpot 实体和字段详细信息:
HubSpot API v4:
| 实体 | API 版本 | 字段 | 数据类型 | 支持的运算符 |
|---|---|---|---|---|
| 关联标签 | v4 | category | 字符串 | 不适用 |
| typeId | 整数 | 不适用 | ||
| label | 字符串 | 不适用 | ||
| Associations | from | 结构体 | 不适用 | |
| id | 字符串 | "=" | ||
| 到 | 列表 | 不适用 |
注意
对于 Associations 对象,要获取两个对象之间的关联,您需要在创建 AWS Glue 作业时通过强制筛选器提供“from Id”(第一个对象的 ID)。在这种情况下,如果要获取多个 from ID 的关联,则必须在 where 子句中提供多个 ID。例如:要获取联系人 ID“1”和“151”的 Associations,您需要提供筛选器 where id=1 AND id=151。
HubSpot API v3:
| 实体 | 字段 | 数据类型 | 支持的运算符 |
|---|---|---|---|
| 所有者 | firstName | 字符串 | 不适用 |
| lastName | 字符串 | 不适用 | |
| createdAt | 日期时间 | 不适用 | |
| archived | 布尔值 | 不适用 | |
| teams | 列表 | 不适用 | |
| id | 字符串 | 不适用 | |
| userId | 整数 | 不适用 | |
| 电子邮件 | 字符串 | 不适用 | |
| updatedAt | 日期时间 | 不适用 | |
| 工作流 | 名称 | 字符串 | 不适用 |
| id | 整数 | 不适用 | |
| type | 字符串 | 不适用 | |
| 已启用 | 布尔值 | 不适用 | |
| insertedAt | 长整型 | 不适用 | |
| updatedAt | 长整型 | 不适用 | |
| contactListIds | 结构体 | 不适用 | |
| personaTagIds | 列表 | 不适用 |
对于以下实体,HubSpot 提供用于动态获取元数据的端点,以便在每个实体的数据类型级别捕获运算符支持。
注意
DML_STATUS 是在运行时添加到每条记录上的虚拟字段,用于在同步模式下确定字段状态(CREATED/UPDATED)。异步模式下不支持 CONTAINS/LIKE 运算符。
| 实体 | 数据类型 | 支持的运算符 |
|---|---|---|
| 联系人 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 公司 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 交易 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 工单 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 产品 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 自定义对象 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| Call | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 电子邮件 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 会议 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 注意 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| Task | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 | |
| 邮政邮件 | 整数 | "=, !=, <, >, >=, <=" |
| 长整型 | "=, !=, <, >, >=, <=" | |
| 字符串 | "=, !=, LIKE" | |
| 日期 | 不适用 | |
| 日期时间 | "between" | |
| 布尔值 | "=" | |
| 列表 | 不适用 | |
| 结构体 | 不适用 |
HubSpot API v2:
| 实体 | 字段 | 数据类型 | 支持的运算符 |
|---|---|---|---|
| 表单 | portalId | 整数 | 不适用 |
| guid | 字符串 | 不适用 | |
| 名称 | 字符串 | 不适用 | |
| method | 字符串 | 不适用 | |
| cssClass | 字符串 | 不适用 | |
| 重定向 | 字符串 | 不适用 | |
| submitText | 字符串 | 不适用 | |
| notifyRecipients | 字符串 | 不适用 | |
| createdAt | 长整型 | 不适用 | |
| updatedAt | 长整型 | 不适用 | |
| ignoreCurrentValues | 布尔值 | 不适用 | |
| deletable | 布尔值 | 不适用 | |
| inlineMessage | 布尔值 | 不适用 | |
| captchaEnabled | 布尔值 | 不适用 | |
| cloneable | 布尔值 | 不适用 | |
| formFieldGroups | 列表 | 不适用 | |
| editable | 布尔值 | 不适用 | |
| deletedAt | 整数 | 不适用 | |
| themeName | 字符串 | 不适用 | |
| parentId | 整数 | 不适用 | |
| style | 字符串 | 不适用 | |
| isPublished | 布尔值 | 不适用 | |
| publishAt | 整数 | 不适用 | |
| unpublishAt | 整数 | 不适用 | |
| publishedAt | 整数 | 不适用 | |
| kickbackEmailWorkflowId | 字符串 | 不适用 | |
| kickbackEmailsJson | 整数 | 不适用 | |
| customUid | 字符串 | 不适用 | |
| createMarketableContact | 布尔值 | 不适用 | |
| editVersion | 整数 | 不适用 | |
| thankYouMessageJson | 字符串 | 不适用 | |
| themeColor | 字符串 | 不适用 | |
| alwaysCreateNewCompany | 布尔值 | 不适用 | |
| internalUpdatedAt | 长整型 | 不适用 | |
| businessUnitId | 整数 | 不适用 | |
| portableKey | 字符串 | 不适用 | |
| paymentSessionTemplateIds | 列表 | 不适用 | |
| selectedExternalOptions | 列表 | 不适用 |
HubSpot API v1:
| 实体 | 字段 | 数据类型 | 支持的运算符 |
|---|---|---|---|
| 活动 | id | 整数 | 不适用 |
| appId | 整数 | 不适用 | |
| appName | 字符串 | 不适用 | |
| lastUpdatedTime | 长整型 | 不适用 | |
| Contact_List | dynamic | 布尔值 | 不适用 |
| 名称 | 字符串 | 不适用 | |
| portalId | 整数 | 不适用 | |
| createdAt | 长整型 | 不适用 | |
| listId | 整数 | 不适用 | |
| updatedAt | 长整型 | 不适用 | |
| ListType | 字符串 | 不适用 | |
| filters | 列表 | 不适用 | |
| authorId | 整数 | 不适用 | |
| metaData | 结构体 | 不适用 | |
| archived | 布尔值 | 不适用 | |
| ilsFilterBranch | 字符串 | 不适用 | |
| filterIds | 列表 | 不适用 | |
| limitExempt | 布尔值 | 不适用 | |
| 内部 | 布尔值 | 不适用 | |
| readOnly | 布尔值 | 不适用 | |
| parentId | 整数 | 不适用 | |
| Email_Event | id | 字符串 | 不适用 |
| type | 字符串 | 不适用 | |
| recipient | 字符串 | 不适用 | |
| portalId | 整数 | 不适用 | |
| appId | 整数 | 不适用 | |
| appName | 字符串 | 不适用 | |
| emailCampaignId | 长整型 | 不适用 | |
| attempt | 整数 | 不适用 | |
| created | 长整型 | 不适用 | |
| sentBy | 结构体 | 不适用 | |
| smtpId | 字符串 | 不适用 | |
| 响应 | 字符串 | 不适用 | |
| subject | 字符串 | 不适用 | |
| cc | 列表 | 不适用 | |
| bcc | 列表 | 不适用 | |
| replyTo | 列表 | 不适用 | |
| from | 字符串 | 不适用 | |
| dropReason | 字符串 | 不适用 | |
| dropMessage | 字符串 | 不适用 | |
| 浏览器 | 结构体 | 不适用 | |
| userAgent | 字符串 | 不适用 | |
| duration | 长整型 | 不适用 | |
| location | 结构体 | 不适用 | |
| filteredEvent | 布尔值 | 不适用 | |
| deviceType | 字符串 | 不适用 | |
| suppressedReason | 字符串 | 不适用 | |
| suppressedMessage | 字符串 | 不适用 | |
| CRM_Pipeline | pipelineId | 字符串 | 不适用 |
| createdAt | 长整型 | 不适用 | |
| updatedAt | 长整型 | 不适用 | |
| objectType | 字符串 | 不适用 | |
| label | 字符串 | 不适用 | |
| displayOrder | 整数 | 不适用 | |
| active | 布尔值 | 不适用 | |
| 阶段 | 列表 | 不适用 | |
| objectTypeId | 字符串 | 不适用 | |
| 默认值 | 布尔值 | 不适用 |
对查询进行分区
如果您想在 Spark 中利用并发,可以提供其他 Spark 选项:PARTITION_FIELD、LOWER_BOUND、UPPER_BOUND 和 NUM_PARTITIONS。使用这些参数,原始查询将被拆分为 NUM_PARTITIONS 个子查询,这些子查询可以由 Spark 任务同时执行。
PARTITION_FIELD:用于对查询进行分区的字段的名称。LOWER_BOUND:所选分区字段的包含下限值。对于日期时间字段,我们接受 ISO 格式的值。
有效值示例:
“2024-01-01T10:00:00.115Z"UPPER_BOUND:所选分区字段的排除上限值。NUM_PARTITIONS:分区的数量。
下表描述实体分区字段支持详细信息:
| 实体名称 | 分区字段 | 数据类型 |
|---|---|---|
| contact | hs_object_id | 长整型 |
| createdate, lastmodifieddate | 日期时间 | |
| company | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| deal | hs_object_id | 长整型 |
| createdate, hs_createdate, hs_lastmodifieddate | 日期时间 | |
| ticket | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| 产品 | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| custom_object | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| call | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| 电子邮件 | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| 会议 | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| note | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| task | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 | |
| postal_mail | hs_object_id | 长整型 |
| createdate, hs_lastmodifieddate | 日期时间 |
示例:
hubspot_read = glueContext.create_dynamic_frame.from_options( connection_type="hubspot", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "company", "API_VERSION": "v3", "PARTITION_FIELD": "hs_object_id" "LOWER_BOUND": "50" "UPPER_BOUND": "16726619290" "NUM_PARTITIONS": "10" }