Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta página contém material de referência para o conector Gmail no Databricks Lakeflow Connect.
Importante
Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.
Comportamento geral do conector
- O conector é só de leitura. Fala apenas com
https://gmail.googleapis.como telescópio e usahttps://www.googleapis.com/auth/gmail.readonlyo telescópio por defeito. Nunca modifica a caixa de correio de origem. - Cada ligaçã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 do que uma caixa de correio, crie uma ligação e pipeline separados para cada caixa. - O esquema fonte é
default. - As
messagestabelas emessage_labelssincronizam-se incrementalmente usando a API de Histórico do Gmail. Asprofiletabelas ,labels,labels_details,drafts, efilterssão apenas de atualização completa. - Os anexos de mensagens estão contidos na
messagespayloadcoluna (payload.parts[].body.attachmentId). Não existe 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 secções seguintes descrevem as colunas em cada tabela de destino.
perfil
| Column | Tipo |
|---|---|
emailAddress |
string (tonalidade primária) |
messagesTotal |
long |
threadsTotal |
long |
historyId |
string |
mailbox |
string |
labels
| Column | Tipo |
|---|---|
mailbox |
string (tonalidade primária) |
id |
string (tonalidade 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.
Drafts
| Column | Tipo |
|---|---|
id |
string (tonalidade primária) |
message |
struct{id: string, threadId: string} |
mailbox |
string |
filters
| Column | Tipo |
|---|---|
id |
string (tonalidade 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
| Column | Tipo |
|---|---|
id |
string (tonalidade primária) |
threadId |
string |
snippet |
string |
historyId |
string |
internalDate |
string |
payload |
struct (ver 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 tem 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>
}
Os anexos estão contidos em payload.parts[].body.attachmentId. Partes aninhadas a mais de 8 níveis de profundidade não são expandidas em colunas estruturais.
message_labels
| Column | Tipo |
|---|---|
message_id |
string (tonalidade 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-se incrementalmente:
- A primeira corrida faz um rastejamento completo da caixa de correio.
- As execuções subsequentes chamam
users.history.list, digitadas nohistoryIdcursor retirado doprofilerecurso, para obter apenas as alterações 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 devolve um 404 porque o cursor é mais antigo do que a janela de retenção do Gmail), o conector volta automaticamente 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. Agenda o pipeline para correr 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 rastreio de histórico SCD Tipo 2; configurar SCD Tipo 2 para estas tabelas faz com que a validação do pipeline falhe.
Limitação de Velocidade
Quando o Gmail retorna uma resposta HTTP 403, o conector lê o Retry-After cabeçalho (com um mínimo de 1 segundo de recuo) e tenta o pedido automaticamente.