Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página contém material de referência para o conector do Gmail no Databricks Lakeflow Connect.
Importante
Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.
Comportamento geral do conector
- O conector é somente leitura. Ele fala apenas com
https://gmail.googleapis.come usa ohttps://www.googleapis.com/auth/gmail.readonlytelescópio por padrão. Ele nunca modifica a caixa de correio fonte. - Cada conexão ingere uma única caixa de correio. O conector carimba o valor da caixa de correio como uma
mailboxcoluna em cada linha. Para ingerir mais de uma caixa de correio, crie uma conexão e um pipeline separados para cada caixa de correio. - O esquema fonte é
default. - As
messagestabelas emessage_labelssincronizam incrementalmente usando a API de Histórico do Gmail. Asprofiletabelas ,labels,labels_details,drafts, efilterssão apenas para atualização completa. - Anexos de mensagens estão contidos na
messagespayloadcoluna (payload.parts[].body.attachmentId). Não há uma tabela de anexos separada.
Tabelas suportadas
O conector ingere as seguintes tabelas do default esquema de origem.
| Tabela | Chave primária | Modo de sincronização |
|---|---|---|
profile |
emailAddress |
Atualização completa |
labels |
mailbox, id |
Atualização completa |
labels_details |
mailbox, id |
Atualização completa |
drafts |
id |
Atualização completa |
filters |
id |
Atualização completa |
messages |
id |
Incremental (API de Histórico do Gmail, historyId) |
message_labels |
message_id |
Incremental (API de Histórico do Gmail, historyId) |
Esquema de destino
As seções a seguir descrevem as colunas em cada tabela de destino.
analisar
| Coluna | Tipo |
|---|---|
emailAddress |
string (chave primária) |
messagesTotal |
long |
threadsTotal |
long |
historyId |
string |
mailbox |
string |
labels
| Coluna | Tipo |
|---|---|
mailbox |
string (chave primária) |
id |
string (chave primária) |
name |
string |
messageListVisibility |
string |
labelListVisibility |
string |
type |
string |
messagesTotal |
long |
messagesUnread |
long |
threadsTotal |
long |
threadsUnread |
long |
color |
struct{textColor: string, backgroundColor: string} |
labels_details
A labels_details tabela tem as mesmas colunas que labels (mailbox, id, name, type, os campos de visibilidade, as contagens de mensagens e threads, e color). Cada rótulo é enriquecido com a resposta da labels.get API.
rascunhos
| Coluna | Tipo |
|---|---|
id |
string (chave primária) |
message |
struct{id: string, threadId: string} |
mailbox |
string |
filtros
| Coluna | Tipo |
|---|---|
id |
string (chave primária) |
criteria |
struct{from: string, to: string, subject: string, query: string, negatedQuery: string, hasAttachment: boolean, excludeChats: boolean, size: long, sizeComparison: string} |
action |
struct{addLabelIds: array<string>, removeLabelIds: array<string>, forward: string} |
mailbox |
string |
messages
| Coluna | Tipo |
|---|---|
id |
string (chave primária) |
threadId |
string |
snippet |
string |
historyId |
string |
internalDate |
string |
payload |
struct (veja estrutura da carga útil) |
sizeEstimate |
long |
mailbox |
string |
_ingestion_timestamp |
timestamp |
_row_deleted |
boolean |
_row_truncated |
boolean |
Estrutura da carga útil
A payload coluna materializa a árvore MIME da mensagem até 8 níveis de aninhamento. Cada nível possui a seguinte estrutura:
struct{
partId: string,
mimeType: string,
filename: string,
headers: array<struct{name: string, value: string}>,
body: struct{attachmentId: string, size: long, data: string},
parts: array<payload>
}
Anexos estão contidos em payload.parts[].body.attachmentId. Partes aninhadas com mais de 8 níveis de profundidade não são expandidas em colunas estruturais.
message_labels
| Coluna | Tipo |
|---|---|
message_id |
string (chave primária) |
threadId |
string |
labelIds |
array<string> |
mailbox |
string |
_ingestion_timestamp |
timestamp |
_row_deleted |
boolean |
_row_truncated |
boolean |
Sincronização incremental
As messages tabelas e message_labels sincronizam incrementalmente:
- A primeira execução faz um crawl completo da caixa de correio.
- As execuções subsequentes chamam
users.history.list, digitadas nohistoryIdcursor retirado doprofilerecurso, para buscar apenas as mudanças desde a execução anterior. - As deleções são emitidas como
_row_deletedlápides. - Se o Gmail expirar o armazenamento
historyId(a API de Histórico retorna um 404 porque o cursor é mais antigo que a janela de retenção do Gmail), o conector automaticamente retorna a uma atualização completa da tabela afetada.
Importante
O Gmail mantém o histórico por uma janela limitada, normalmente cerca de sete dias. Programe o pipeline para rodar pelo menos uma vez a cada sete dias para que o armazenamento historyId fique dentro dessa janela. Se o cursor expirar, a próxima execução realiza uma atualização completa de messages e message_labels.
As messages tabelas e message_labels não suportam rastreamento de histórico SCD Tipo 2; configurar SCD Tipo 2 para essas tabelas causa falha na validação do pipeline.
Limitação de taxa
Quando o Gmail retorna uma resposta HTTP 403, o conector lê o Retry-After cabeçalho (com um recuo mínimo de 1 segundo) e tenta a solicitação automaticamente.