Referência do conector do Gmail
Esta página contém material de referência para o conector do Gmail no Databricks Lakeflow Connect.
Beta
Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
Comportamento geral do conector
- O conector é somente leitura. Ele se comunica apenas com
https://gmail.googleapis.come usa o escopohttps://www.googleapis.com/auth/gmail.readonlypor default. Ele nunca modifica a caixa de correio de origem. - Cada conexão ingere uma única caixa de correio. O conector insere o valor da caixa de correio como uma coluna
mailboxem cada linha. Para importar dados de mais de uma caixa de correio, crie uma conexão e um pipeline separados para cada caixa de correio. - O esquema de origem é
default. - As tabelas
messagesemessage_labelssão sincronizadas incrementalmente usando a API Gmail History. As tabelasprofile,labels,labels_details,draftsefilterssão apenas para refresh completo. - Os anexos de mensagem estão contidos na coluna
payloadda tabelamessages(payload.parts[].body.attachmentId). Não existe uma tabela de anexos separada.
Tabelas suportadas
O conector ingere as seguintes tabelas do esquema de origem default.
Tabela | Chave primária | Modo de sincronização |
|---|---|---|
|
| refresh completo |
|
| refresh completo |
|
| refresh completo |
|
| refresh completo |
|
| refresh completo |
|
| Incremental (API de história do Gmail, |
|
| Incremental (API de história do Gmail, |
Esquema de destino
As seções a seguir descrevem as colunas em cada tabela de destino.
perfil
Coluna | Tipo |
|---|---|
|
|
|
|
|
|
|
|
|
|
rótulo
Coluna | Tipo |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
detalhes_dos_rótulos
A tabela labels_details 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 API labels.get.
rascunhos
Coluna | Tipo |
|---|---|
|
|
|
|
|
|
filtros
Coluna | Tipo |
|---|---|
|
|
|
|
|
|
|
|
mensagens
Coluna | Tipo |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
estrutura de payload
A coluna payload materializa a árvore MIME da mensagem em 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 com mais de 8 níveis de profundidade não são expandidas em colunas de estrutura.
message_labels
Coluna | Tipo |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sincronização incremental
As tabelas messages e message_labels são sincronizadas de forma incremental:
- A primeira execução realiza um rastreamento de bootstrap completo da caixa de correio.
- Execuções subsequentes chamam
users.history.list, baseadas no cursorhistoryIdobtido do recursoprofile, para buscar apenas as alterações desde a execução anterior. - As exclusões são emitidas como lápides
_row_deleted. - Se o Gmail expirar o
historyIdarmazenado (a API de história retorna um 404 porque o cursor é mais antigo que a janela de retenção do Gmail), o conector automaticamente recorre a um refresh completo da tabela afetada.
O Gmail retém o histórico por uma janela limitada, normalmente cerca de sete dias. Programe o pipeline para execução pelo menos uma vez a cada sete dias para que o historyId armazenado permaneça dentro dessa janela. Se o cursor expirar, a próxima execução realizará um refresh completo de messages e message_labels.
As tabelas messages e message_labels não suportam o rastreamento de histórico SCD Tipo 2; configurar o SCD Tipo 2 para essas tabelas faz com que a validação do pipeline falhe.
Limitação de taxa
Quando o Gmail retorna uma resposta HTTP 403, o conector lê o cabeçalho Retry-After (com um backoff mínimo de 1 segundo) e tenta a solicitação novamente de forma automática.