Lectura desde entidades de HubSpot
Requisito previo
Un objeto de HubSpot desde el cual le gustaría leer. Necesitará el nombre del objeto, como contacto o tarea. En la siguiente tabla se muestran las entidades admitidas.
Entidades compatibles como origen:
Entidad | Versión de la API | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar * | Admite particiones |
---|---|---|---|---|---|---|
Campañas | v1 | No | Sí | No | Sí | No |
Empresas | v3 | Sí | Sí | Sí | Sí | Sí |
Contactos | v3 | Sí | Sí | Sí | Sí | Sí |
Listas de contactos | v1 | No | Sí | No | Sí | No |
Acuerdos | v3 | Sí | Sí | Sí | Sí | Sí |
Canalización de CRM (Canalizaciones de acuerdos) | v1 | No | No | No | Sí | No |
Eventos de correo electrónico | v1 | No | Sí | No | Sí | No |
Calls | v3 | Sí | Sí | Sí | Sí | Sí |
Notas | v3 | Sí | Sí | Sí | Sí | Sí |
Correos electrónicos | v3 | Sí | Sí | Sí | Sí | Sí |
Reuniones | v3 | Sí | Sí | Sí | Sí | Sí |
Tareas | v3 | Sí | Sí | Sí | Sí | Sí |
Correos | v3 | Sí | Sí | Sí | Sí | Sí |
Objetos personalizados | v3 | Sí | Sí | Sí | Sí | Sí |
Formularios | v2 | No | No | No | Sí | No |
Propietarios | v3 | No | Sí | No | Sí | No |
Productos | v3 | Sí | Sí | Sí | Sí | Sí |
Tickets | v3 | Sí | Sí | Sí | Sí | Sí |
Flujos de trabajo | v3 | No | No | No | Sí | No |
Associations | v4 | Sí | No | No | Sí | No |
Etiquetas de asociaciones | v4 | No | No | No | Sí | No |
Ejemplo:
hubspot_read = glueContext.create_dynamic_frame.from_options( connection_type="hubspot", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "contact", "API_VERSION": "v3" }
Detalles de la entidad y el campo de HubSpot:
API de HubSpot v4:
Entidad | Versión de la API | Campo | Tipo de datos | Operadores admitidos |
---|---|---|---|---|
Etiqueta de asociación | v4 | categoría | Cadena | N/A |
typeId | Entero | N/A | ||
etiqueta | Cadena | N/A | ||
Associations | desde | Struct | N/A | |
id | Cadena | "=" | ||
a | Enumeración | N/A |
nota
En el caso del objeto Associations
, para buscar asociaciones entre dos objetos, es necesario proporcionar el “ID de origen” (el ID del primer objeto) mediante un filtro obligatorio al crear un trabajo de AWS Glue. En ese caso, si quiere buscar asociaciones para varios ID de origen, tiene que proporcionar varios ID en la cláusula where
. Por ejemplo: para buscar Associations
de los ID de contacto “1” y “151”, debe proporcionar un filtro como where id=1 AND id=151
.
API de HubSpot v3:
Entidad | Campo | Tipo de datos | Operadores admitidos |
---|---|---|---|
Propietario | firstName | Cadena | N/A |
lastName | Cadena | N/A | |
createdAt | DateTime | N/A | |
archived | Booleano | N/A | |
teams | Enumeración | N/A | |
id | Cadena | N/A | |
userId | Entero | N/A | |
Cadena | N/A | ||
updatedAt | DateTime | N/A | |
Flujo de trabajo | name | Cadena | N/A |
id | Entero | N/A | |
type | Cadena | N/A | |
enabled | Booleano | N/A | |
insertedAt | Largo | N/A | |
updatedAt | Largo | N/A | |
contactListIds | Struct | N/A | |
personaTagIds | Enumeración | N/A |
Para las siguientes entidades, HubSpot proporciona puntos de conexión para obtener los metadatos de forma dinámica, de modo que la compatibilidad del operador se capture en el nivel del tipo de datos de cada entidad.
nota
DML_STATUS
es un campo virtual que se agrega a cada registro en tiempo de ejecución para determinar su estado (CREADO/ACTUALIZADO).
Entidad | Tipo de datos | Operadores admitidos |
---|---|---|
Contacto | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Empresa | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Acuerdo | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Ticket | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Producto | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Objeto personalizado | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Llame a | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Correo electrónico | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Reunión | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Nota | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Tarea | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A | |
Correo | Entero | "=, !=, <, >, >=, <=" |
Largo | "=, !=, <, >, >=, <=" | |
Cadena | “=, !=, LIKE” | |
Date | N/A | |
DateTime | “between” | |
Booleano | "=" | |
Enumeración | N/A | |
Struct | N/A |
API de HubSpot v2:
Entidad | Campo | Tipo de datos | Operadores admitidos |
---|---|---|---|
Formulario | portalId | Entero | N/A |
guid | Cadena | N/A | |
name | Cadena | N/A | |
method | Cadena | N/A | |
cssClass | Cadena | N/A | |
redireccionamiento | Cadena | N/A | |
submitText | Cadena | N/A | |
notifyRecipients | Cadena | N/A | |
createdAt | Largo | N/A | |
updatedAt | Largo | N/A | |
ignoreCurrentValues | Booleano | N/A | |
deletable | Booleano | N/A | |
inlineMessage | Booleano | N/A | |
captchaEnabled | Booleano | N/A | |
cloneable | Booleano | N/A | |
formFieldGroups | Enumeración | N/A | |
editable | Booleano | N/A | |
deletedAt | Entero | N/A | |
themeName | Cadena | N/A | |
parentId | Entero | N/A | |
estilo | Cadena | N/A | |
isPublished | Booleano | N/A | |
publishAt | Entero | N/A | |
unpublishAt | Entero | N/A | |
publishedAt | Entero | N/A | |
kickbackEmailWorkflowId | Cadena | N/A | |
kickbackEmailsJson | Entero | N/A | |
customUid | Cadena | N/A | |
createMarketableContact | Booleano | N/A | |
editVersion | Entero | N/A | |
thankYouMessageJson | Cadena | N/A | |
themeColor | Cadena | N/A | |
alwaysCreateNewCompany | Booleano | N/A | |
internalUpdatedAt | Largo | N/A | |
ID de unidad de negocio | Entero | N/A | |
portableKey | Cadena | N/A | |
paymentSessionTemplateIds | Enumeración | N/A | |
selectedExternalOptions | Enumeración | N/A |
API de HubSpot v1:
Entidad | Campo | Tipo de datos | Operadores admitidos |
---|---|---|---|
Campaña | id | Entero | N/A |
IdAplicación | Entero | N/A | |
appName | Cadena | N/A | |
lastUpdatedTime | Largo | N/A | |
Contact_List | dynamic | Booleano | N/A |
name | Cadena | N/A | |
portalId | Entero | N/A | |
createdAt | Largo | N/A | |
listId | Entero | N/A | |
updatedAt | Largo | N/A | |
ListType | Cadena | N/A | |
filters | Enumeración | N/A | |
authorId | Entero | N/A | |
metaData | Struct | N/A | |
archived | Booleano | N/A | |
ilsFilterBranch | Cadena | N/A | |
filterIds | Enumeración | N/A | |
limitExempt | Booleano | N/A | |
interno | Booleano | N/A | |
readOnly | Booleano | N/A | |
parentId | Entero | N/A | |
Email_Event | id | Cadena | N/A |
type | Cadena | N/A | |
destinatario | Cadena | N/A | |
portalId | Entero | N/A | |
IdAplicación | Entero | N/A | |
appName | Cadena | N/A | |
emailCampaignId | Largo | N/A | |
attempt | Entero | N/A | |
created | Largo | N/A | |
sentBy | Struct | N/A | |
smtpId | Cadena | N/A | |
Respuesta | Cadena | N/A | |
subject | Cadena | N/A | |
cc | Enumeración | N/A | |
bcc | Enumeración | N/A | |
replyTo | Enumeración | N/A | |
desde | Cadena | N/A | |
dropReason | Cadena | N/A | |
dropMessage | Cadena | N/A | |
navegador | Struct | N/A | |
userAgent | Cadena | N/A | |
duración | Largo | N/A | |
location | Struct | N/A | |
filteredEvent | Booleano | N/A | |
deviceType | Cadena | N/A | |
suppressedReason | Cadena | N/A | |
suppressedMessage | Cadena | N/A | |
CRM_Pipeline | pipelineId | Cadena | N/A |
createdAt | Largo | N/A | |
updatedAt | Largo | N/A | |
objectType | Cadena | N/A | |
etiqueta | Cadena | N/A | |
displayOrder | Entero | N/A | |
active | Booleano | N/A | |
escenarios | Enumeración | N/A | |
objectTypeId | Cadena | N/A | |
predeterminado | Booleano | N/A |
Consultas de particionamiento
Puede proporcionar las opciones adicionales de Spark PARTITION_FIELD
, LOWER_BOUND
, UPPER_BOUND
y NUM_PARTITIONS
si quiere utilizar 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 utilizará para particionar la consulta.LOWER_BOUND
: un valor de límite inferior inclusivo del campo de partición elegido.Para el campo DateTime, aceptamos el valor en formato ISO.
Ejemplos de valor válido:
“2024-01-01T10:00:00.115Z"
UPPER_BOUND
: un valor límite superior exclusivo del campo de partición elegido.NUM_PARTITIONS
: el número de particiones.
En la tabla siguiente, se describen los detalles de compatibilidad de campos de particiones de entidades:
Nombre de la entidad | Campos de partición | Tipo de datos |
---|---|---|
contact | hs_object_id | Largo |
createdate, lastmodifieddate | DateTime | |
company | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
deal | hs_object_id | Largo |
createdate, hs_createdate, hs_lastmodifieddate | DateTime | |
ticket | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
producto | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
custom_object | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
call | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
hs_object_id | Largo | |
createdate, hs_lastmodifieddate | DateTime | |
reunión | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
note | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
tarea | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime | |
postal_mail | hs_object_id | Largo |
createdate, hs_lastmodifieddate | DateTime |
Ejemplo:
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" }