Leitura de entidades do Salesforce Marketing Cloud
Pré-requisito
Um objeto do Salesforce Marketing Cloud do qual você deseja ler. Você precisará do nome do objeto, como Activity ou Campaigns. A tabela a seguir mostra as entidades compatíveis.
Entidades compatíveis quanto à origem:
| Entidade | Interface | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a SELECIONAR * | Oferece suporte a particionamento |
|---|---|---|---|---|---|---|
| Retorno de chamada de notificação de eventos | REST | Não | Não | Não | Sim | Não |
| Seed-List | REST | Não | Sim | Não | Sim | Não |
| Configuração | REST | Sim | Sim | Não | Sim | Não |
| Verificação de domínio | REST | Sim | Sim | Sim | Sim | Não |
| Etiquetas de objeto aninhadas | REST | Sim | Não | Não | Sim | Não |
| Contato | REST | Não | Sim | Não | Sim | Não |
| Assinatura de notificação de eventos | REST | Não | Não | Não | Sim | Não |
| Sistema de mensagens | REST | Não | Sim | Não | Sim | Não |
| Atividade | SOAP | Não | Não | Não | Sim | Sim |
| Evento de devolução | SOAP | Não | Não | Não | Sim | Sim |
| Evento de clique | SOAP | Não | Não | Não | Sim | Sim |
| Área de conteúdo | SOAP | Não | Não | Não | Sim | Sim |
| Extensão de dados | SOAP | Não | Sim | Não | Sim | Sim |
| SOAP | Não | Sim | Não | Sim | Sim | |
| Evento de e-mail encaminhado | SOAP | Não | Sim | Não | Sim | Sim |
| OptinEvent de e-mail encaminhado | SOAP | Não | Sim | Não | Sim | Sim |
| Link | SOAP | Não | Sim | Não | Sim | Sim |
| Envio do link | SOAP | Não | Sim | Não | Sim | Sim |
| Lista | SOAP | Não | Sim | Não | Sim | Sim |
| Listar assinante | SOAP | Não | Sim | Não | Sim | Sim |
| Evento não enviado | SOAP | Não | Sim | Não | Sim | Sim |
| Evento aberto | SOAP | Não | Sim | Não | Sim | Sim |
| Enviar | SOAP | Não | Sim | Não | Sim | Sim |
| Evento enviado | SOAP | Não | Sim | Não | Sim | Sim |
| Assinante | SOAP | Não | Sim | Não | Sim | Sim |
| Evento de pesquisa | SOAP | Não | Sim | Não | Sim | Sim |
| Evento cancelamento de assinatura | SOAP | Não | Sim | Não | Sim | Sim |
| Eventos de auditoria | REST | Não | Sim | Sim | Sim | Não |
| Campanhas | REST | Não | Sim | Sim | Sim | Não |
| Interações | REST | Não | Sim | Sim | Sim | Não |
| Ativos de conteúdo | REST | Não | Sim | Sim | Sim | Não |
Exemplo de 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" } )
Exemplo de 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" } )
Detalhes das entidades e dos campos do Salesforce Marketing Cloud:
As tabelas a seguir descrevem as entidades do Salesforce Marketing Cloud. Há entidades REST com metadados estáticos e entidades SOAP com metadados dinâmicos.
Entidades REST com metadados estáticos:
| Entidade | Campo | Tipo de dados | Operadores compatíveis |
|---|---|---|---|
| Retorno de chamada de notificação de eventos | callbackId | String | |
| callbackName | String | ||
| url | String | ||
| maxBatchSize | Inteiro | ||
| status | String | ||
| statusReason | String | ||
| Seed-List | id | String | |
| nome | String | ||
| description | String | ||
| activeSeedCount | Inteiro | ||
| Configuração | customerKey | String | |
| nome | String | ||
| description | String | ||
| locationType | String | '=' | |
| awsFileTransferLocation | Struct | ||
| Verificação de domínio | enterpriseId | Inteiro | |
| status | String | '=' | |
| domainType | String | '=' | |
| memberId | Inteiro | ||
| emailSendTime | DateTime | ||
| domínio | String | ||
| isSendable | Booleano | ||
| Etiquetas de objeto aninhadas | id | Inteiro | |
| modifiedDate | DateTime | ||
| tags | Lista | ||
| nome | String | ||
| description | String | ||
| parentId | Inteiro | ||
| Contato | values | Lista | |
| Assinatura de notificação de eventos | subscriptionName | String | |
| callbackId | String | ||
| callbackName | String | ||
| eventCategoryTypes | Lista | ||
| filtros | Lista | ||
| url | String | ||
| maxBatchSize | Inteiro | ||
| subscriptionId | String | ||
| status | String | ||
| statusReason | String | ||
| Sistema de mensagens | deliveryTime | DateTime | |
| id | String | ||
| messageId | String | ||
| status | String | ||
| com | Struct | ||
| Interações | status | String | '=' |
| id | String | ||
| key | String | ||
| nome | String | ||
| lastPublishedDate | DateTime | ||
| description | String | ||
| version | Inteiro | ||
| workflowApiVersion | Inteiro | ||
| createdDate | DateTime | ||
| modifiedDate | DateTime | ||
| metas | Struct | ||
| stats | Struct | ||
| entryMode | String | ||
| defaults | Struct | ||
| executionMode | Struct | ||
| definitionId | String | ||
| Ativos de conteúdo | id | Inteiro | |
| customerKey | String | ||
| objectId | String | ||
| contentType | String | ||
| assetType | Struct | ||
| nome | String | ||
| description | String | ||
| proprietário | Struct | ||
| createdDate | DateTime | ||
| createdBy | Struct | ||
| modifiedDate | DateTime | ||
| modifiedBy | Struct | ||
| miniatura | Struct | ||
| categoria | Struct | ||
| meta | Struct | ||
| visualizações | Struct | ||
| availableViews | Struct | ||
| dados | Struct | ||
| legacyData | Struct | ||
| modelVersion | Inteiro | ||
| Versão | Inteiro | ||
| Locked (Bloqueada) | Booleano | ||
| FileProperties | Struct | ||
| Tags | Lista | ||
| Conteúdo | String | ||
| Projeto | String | ||
| SuperContent | String | ||
| CustomFields | Struct | ||
| Blocos | Struct | ||
| MinBlocks | Inteiro | ||
| MaxBlocks | Inteiro | ||
| Canais | Struct | ||
| AllowedBlocks | Lista | ||
| Slots | Struct | ||
| BusinessUnitAvailability | Struct | ||
| sharingProperties | Struct | ||
| sharingProperties.sharedWith | Struct | ||
| sharingProperties.sharingType | String | ||
| Modelo | Struct | ||
| Arquivo | String | ||
| GenerateFrom | String | ||
| Eventos de auditoria | id | Inteiro | |
| createdDate | DateTime | ||
| memberId | Inteiro | ||
| enterpriseId | Inteiro | ||
| funcionário | Struct | ||
| objectType | Struct | ||
| operação | Struct | ||
| objeto | Struct | ||
| transactionId | String | ||
| Campanhas | id | Inteiro | |
| createdDate | DateTime | ||
| modifiedDate | DateTime | ||
| nome | String | ||
| description | String | ||
| campaignCode | String | ||
| color | String | ||
| favorito | Booleano |
Entidades SOAP com metadados dinâmicos:
| Entidade | Tipo de dados | Operadores compatíveis |
|---|---|---|
| Atividade | String | LIKE,!=,= |
| Struct | ||
| Inteiro | !=,=,>=,<=,<,> | |
| Duplo | !=,=,>=,<=,<,> | |
| Booleano | !=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Evento de devolução | Inteiro | !=,=,>=,<=,<,> |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| String | LIKE,!=,= | |
| Struct | ||
| Evento de clique | Inteiro | !=,=,>=,<=,<,> |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| String | LIKE,!=,= | |
| Struct | ||
| Área de conteúdo | Struct | |
| String | LIKE,!=,= | |
| Inteiro | !=,=,>=,<=,<,> | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Booleano | !=,= | |
| Extensão de dados | DateTime | >=,<=,<,>,=,BETWEEN |
| String | LIKE,!=,= | |
| Inteiro | !=,=,>=,<=,<,> | |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Booleano | !=,= | |
| Struct | ||
| Evento de e-mail encaminhado | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| OptinEvent de e-mail encaminhado | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Link | Inteiro | !=,=,>=,<=,<,> |
| Envio do link | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| Duplo | !=,=,>=,<=,<,> | |
| Lista | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Listar assinante | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Evento não enviado | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Evento aberto | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Enviar | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Booleano | !=,= | |
| Struct | ||
| Evento enviado | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Assinante | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Evento de pesquisa | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Struct | ||
| Evento cancelamento de assinatura | Inteiro | !=,=,>=,<=,<,> |
| String | LIKE,!=,= | |
| DateTime | >=,<=,<,>,=,BETWEEN | |
| Booleano | !=,= | |
| Struct |
Particionamento de consultas
No Salesforce Marketing Cloud, os campos de tipo de dados Integer e DateTime oferecem suporte a particionamento com base em campo.
É possível fornecer as opções adicionais do Spark PARTITION_FIELD, LOWER_BOUND, UPPER_BOUND e NUM_PARTITIONS se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em NUM_PARTITIONS subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
PARTITION_FIELD: o nome do campo a ser usado para particionar a consulta.LOWER_BOUND: um valor limite inferior inclusivo do campo de partição escolhido.Para o campo de carimbo de data e hora, aceitamos o formato de carimbo de data e hora do Spark usado nas consultas SQL do Spark.
Exemplos de valores válidos:
“2024-05-07T02:03:00.00Z"UPPER_BOUND: um valor limite superior exclusivo do campo de partição escolhido.NUM_PARTITIONS: o número de partições.
Exemplo:
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" } )