Lettura da entità HubSpot
Prerequisito
Un oggetto HubSpot da cui si desidera leggere. È necessario il nome dell'oggetto, come contatto o attività. Nella tabella seguente sono illustrate le entità supportate per la fonte di sincronizzazione.
Entità supportate per la fonte di sincronizzazione
| Entità | Versione API | Può essere filtrato | Supporta limite | Supporta Ordina per | Supporta Seleziona * | Supporta il partizionamento |
|---|---|---|---|---|---|---|
| Campagne | v1 | No | Sì | No | Sì | No |
| Aziende | v3 | Sì | Sì | Sì | Sì | Sì |
| Contatti | v3 | Sì | Sì | Sì | Sì | Sì |
| Elenchi di contatti | v1 | No | Sì | No | Sì | No |
| Offerte | v3 | Sì | Sì | Sì | Sì | Sì |
| Pipeline CRM (Pipeline delle offerte) | v1 | No | No | No | Sì | No |
| Eventi e-mail | v1 | No | Sì | No | Sì | No |
| Calls (Chiamate) | v3 | Sì | Sì | Sì | Sì | Sì |
| Note | v3 | Sì | Sì | Sì | Sì | Sì |
| v3 | Sì | Sì | Sì | Sì | Sì | |
| Riunioni | v3 | Sì | Sì | Sì | Sì | Sì |
| Attività | v3 | Sì | Sì | Sì | Sì | Sì |
| Posta elettronica | v3 | Sì | Sì | Sì | Sì | Sì |
| Oggetti personalizzati | v3 | Sì | Sì | Sì | Sì | Sì |
| Moduli | v2 | No | No | No | Sì | No |
| Proprietari | v3 | No | Sì | No | Sì | No |
| Prodotti | v3 | Sì | Sì | Sì | Sì | Sì |
| Ticket | v3 | Sì | Sì | Sì | Sì | Sì |
| Flussi di lavoro | v3 | No | No | No | Sì | No |
| Associations | v4 | Sì | No | No | Sì | No |
| Etichette associazioni | v4 | No | No | No | Sì | No |
Esempio:
hubspot_read = glueContext.create_dynamic_frame.from_options( connection_type="hubspot", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "contact", "API_VERSION": "v3" }
Entità supportate come origine asincrona
| Entità | Versione API | Può essere filtrato | Supporta limite | Supporta Ordina per | Supporta Seleziona * | Supporta il partizionamento |
|---|---|---|---|---|---|---|
| Aziende | v3 | Sì | No | Sì | Sì | No |
| Contatti | v3 | Sì | No | Sì | Sì | No |
| Offerte | v3 | Sì | No | Sì | Sì | No |
| Calls (Chiamate) | v3 | Sì | No | Sì | Sì | No |
| Note | v3 | Sì | No | Sì | Sì | No |
| v3 | Sì | No | Sì | Sì | No | |
| Riunioni | v3 | Sì | No | Sì | Sì | No |
| Attività | v3 | Sì | No | Sì | Sì | No |
| Posta elettronica | v3 | Sì | No | Sì | Sì | No |
| Oggetti personalizzati | v3 | Sì | No | Sì | Sì | No |
| Prodotti | v3 | Sì | No | Sì | Sì | No |
| Ticket | v3 | Sì | No | Sì | Sì | No |
Esempio:
hubspot_read = glueContext.create_dynamic_frame.from_options( connection_type="hubspot", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "contact", "API_VERSION": "v3", "TRANSFER_MODE": "ASYNC" }
Dettagli dell'entità e del campo di HubSpot:
API HubSpot v4:
| Entità | Versione API | Campo | Tipo di dati | Operatori supportati |
|---|---|---|---|---|
| Etichetta associazione | v4 | category | Stringa | N/A |
| typeId | Numero intero | N/D | ||
| etichetta | Stringa | N/A | ||
| Associations | from | Struct | N/D | |
| id | Stringa | "=" | ||
| in | Elenco | N/D |
Nota
Per l'oggetto Associations, per recuperare le associazioni tra due oggetti, devi fornire il “from Id” (l'ID del primo oggetto) tramite un filtro obbligatorio durante la creazione di un lavoro AWS Glue. Se desideri recuperare associazioni per più ID, devi fornire più ID nella clausola where. Ad esempio: per recuperare Associations per gli ID di contatto “1” e “151”, è necessario fornire un filtro come where id=1 AND id=151.
API HubSpot v3:
| Entità | Campo | Tipo di dati | Operatori supportati |
|---|---|---|---|
| Owner | firstName | Stringa | N/A |
| lastName | Stringa | N/A | |
| createdAt | DateTime | N/D | |
| archived | Booleano | N/D | |
| team | Elenco | N/D | |
| id | Stringa | N/A | |
| userId | Numero intero | N/D | |
| Stringa | N/A | ||
| updatedAt | DateTime | N/D | |
| Flusso di lavoro | nome | Stringa | N/A |
| id | Numero intero | N/D | |
| tipo | Stringa | N/A | |
| enabled | Booleano | N/D | |
| insertedAt | Long | N/D | |
| updatedAt | Long | N/D | |
| contactListIds | Struct | N/D | |
| personaTagIds | Elenco | N/D |
Per le seguenti entità, HubSpot fornisce endpoint per recuperare i metadati in modo dinamico, cosicché il supporto dell'operatore venga acquisito a livello di tipo di dati per ciascuna entità.
Nota
DML_STATUS è un campo virtuale aggiunto a ogni record al runtime per determinarne lo stato (CREATO/AGGIORNATO) in modalità sincrona. L'operatore CONTAINS/LIKE non è supportato nella modalità asincrona.
| Entità | Tipo di dati | Operatori supportati |
|---|---|---|
| Contatti | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Azienda | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Offerta | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Ticket | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Product | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Oggetto personalizzato | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Esegui una chiamata a | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Numero intero | "=, !=, <, >, >=, <=" | |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Riunione | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Nota | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Attività | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D | |
| Posta elettronica | Numero intero | "=, !=, <, >, >=, <=" |
| Long | "=, !=, <, >, >=, <=" | |
| Stringa | "=, !=, LIKE" | |
| Data | N/D | |
| DateTime | "between" | |
| Booleano | "=" | |
| Elenco | N/D | |
| Struct | N/D |
API HubSpot v2:
| Entità | Campo | Tipo di dati | Operatori supportati |
|---|---|---|---|
| Modulo | portalId | Numero intero | N/D |
| guid | Stringa | N/A | |
| nome | Stringa | N/A | |
| metodo | Stringa | N/A | |
| cssClass | Stringa | N/A | |
| redirect | Stringa | N/A | |
| submitText | Stringa | N/A | |
| notifyRecipients | Stringa | N/A | |
| createdAt | Long | N/D | |
| updatedAt | Long | N/D | |
| ignoreCurrentValues | Booleano | N/D | |
| deletable | Booleano | N/D | |
| inlineMessage | Booleano | N/D | |
| captchaEnabled | Booleano | N/D | |
| cloneable | Booleano | N/D | |
| formFieldGroups | Elenco | N/D | |
| editable | Booleano | N/D | |
| deletedAt | Numero intero | N/D | |
| themeName | Stringa | N/A | |
| parentId | Numero intero | N/D | |
| stile | Stringa | N/A | |
| isPublished | Booleano | N/D | |
| publishAt | Numero intero | N/D | |
| unpublishAt | Numero intero | N/D | |
| publishedAt | Numero intero | N/D | |
| kickbackEmailWorkflowId | Stringa | N/A | |
| kickbackEmailsJson | Numero intero | N/D | |
| customUid | Stringa | N/A | |
| createMarketableContact | Booleano | N/D | |
| editVersion | Numero intero | N/D | |
| thankYouMessageJson | Stringa | N/A | |
| themeColor | Stringa | N/A | |
| alwaysCreateNewCompany | Booleano | N/D | |
| internalUpdatedAt | Long | N/D | |
| businessUnitId | Numero intero | N/D | |
| portableKey | Stringa | N/A | |
| paymentSessionTemplateIds | Elenco | N/D | |
| selectedExternalOptions | Elenco | N/D |
API HubSpot v1:
| Entità | Campo | Tipo di dati | Operatori supportati |
|---|---|---|---|
| Campagna | id | Numero intero | N/D |
| appId | Numero intero | N/D | |
| appName | Stringa | N/A | |
| lastUpdatedTime | Long | N/D | |
| Contact_List | dynamic | Booleano | N/D |
| nome | Stringa | N/A | |
| portalId | Numero intero | N/D | |
| createdAt | Long | N/D | |
| listId | Numero intero | N/D | |
| updatedAt | Long | N/D | |
| ListType | Stringa | N/A | |
| filtri | Elenco | N/D | |
| authorId | Numero intero | N/D | |
| metaData | Struct | N/D | |
| archived | Booleano | N/D | |
| ilsFilterBranch | Stringa | N/A | |
| filterIds | Elenco | N/D | |
| limitExempt | Booleano | N/D | |
| internal | Booleano | N/D | |
| readOnly | Booleano | N/D | |
| parentId | Numero intero | N/D | |
| Email_Event | id | Stringa | N/A |
| tipo | Stringa | N/A | |
| recipient | Stringa | N/A | |
| portalId | Numero intero | N/D | |
| appId | Numero intero | N/D | |
| appName | Stringa | N/A | |
| emailCampaignId | Long | N/D | |
| attempt | Numero intero | N/D | |
| creato | Long | N/D | |
| sentBy | Struct | N/D | |
| smtpId | Stringa | N/A | |
| response | Stringa | N/A | |
| subject | Stringa | N/A | |
| cc | Elenco | N/D | |
| bcc | Elenco | N/D | |
| replyTo | Elenco | N/D | |
| from | Stringa | N/A | |
| dropReason | Stringa | N/A | |
| dropMessage | Stringa | N/A | |
| browser | Struct | N/D | |
| userAgent | Stringa | N/A | |
| durata | Long | N/D | |
| posizione | Struct | N/D | |
| filteredEvent | Booleano | N/D | |
| deviceType | Stringa | N/A | |
| suppressedReason | Stringa | N/A | |
| suppressedMessage | Stringa | N/A | |
| CRM_Pipeline | pipelineId | Stringa | N/A |
| createdAt | Long | N/D | |
| updatedAt | Long | N/D | |
| objectType | Stringa | N/A | |
| etichetta | Stringa | N/A | |
| displayOrder | Numero intero | N/D | |
| attiva | Booleano | N/D | |
| fasi | Elenco | N/D | |
| objectTypeId | Stringa | N/A | |
| default | Booleano | N/D |
Query di partizionamento
Puoi fornire le opzioni Spark aggiuntive PARTITION_FIELD, LOWER_BOUND, UPPER_BOUND e NUM_PARTITIONS se desideri utilizzare la concorrenza in Spark. Con questi parametri, la query originale viene suddivisa in NUM_PARTITIONS query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.
PARTITION_FIELD: il nome del campo da utilizzare per partizionare la query.LOWER_BOUND: un valore limite inferiore inclusivo del campo di partizione scelto.Per il campo DateTime, accettiamo il valore in formato ISO.
Esempi di valori validi:
“2024-01-01T10:00:00.115Z"UPPER_BOUND: un valore limite superiore esclusivo del campo di partizione scelto.NUM_PARTITIONS: il numero di partizioni.
Nella seguente tabella sono descritti i dettagli del campo di supporto del partizionamento delle entità:
| Nome dell'entità | Campi di partizionamento | Tipo di dati |
|---|---|---|
| contact | hs_object_id | Long |
| createdate, lastmodifieddate | DateTime | |
| company | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| offerta | hs_object_id | Long |
| createdate, hs_createdate, hs_lastmodifieddate | DateTime | |
| ticket | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| product | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| custom_object | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| call | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| hs_object_id | Long | |
| createdate, hs_lastmodifieddate | DateTime | |
| meeting | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| note | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| task | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime | |
| postal_mail | hs_object_id | Long |
| createdate, hs_lastmodifieddate | DateTime |
Esempio:
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" }