Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta página contiene material de referencia para el conector de Gmail en Databricks Lakeflow Connect.
Importante
Esta característica se encuentra en su versión beta. Los administradores del área de trabajo pueden controlar el acceso a esta característica desde la página Vistas previas . Consulte Administrar versiones preliminares de Azure Databricks.
Comportamiento general del conector
- El conector es de solo lectura. Solo habla y
https://gmail.googleapis.comusa elhttps://www.googleapis.com/auth/gmail.readonlytelescopio por defecto. Nunca modifica el buzón de origen. - Cada conexión ingiere un único buzón. El conector marca el valor del buzón como una
mailboxcolumna en cada fila. Para ingerir más de un buzón, crea una conexión y un pipeline separados para cada buzón. - El esquema fuente es
default. - Las
messagestablas ymessage_labelsse sincronizan de forma incremental usando la API de Historial de Gmail. Las tablasprofile,labels,labels_details,drafts, yfilterssolo son de refresco completo. - Los archivos adjuntos de mensajes están contenidos dentro de la
messagespayloadcolumna (payload.parts[].body.attachmentId). No hay una tabla de adjuntos separada.
Tablas compatibles
El conector ingiere las siguientes tablas del default esquema fuente.
| Tabla | Llave primaria | Modo de sincronización |
|---|---|---|
profile |
emailAddress |
Actualización completa |
labels |
mailbox, id |
Actualización completa |
labels_details |
mailbox, id |
Actualización completa |
drafts |
id |
Actualización completa |
filters |
id |
Actualización completa |
messages |
id |
Incremental (API de Historial de Gmail, historyId) |
message_labels |
message_id |
Incremental (API de Historial de Gmail, historyId) |
Esquema de destino
Las siguientes secciones describen las columnas de cada tabla de destinos.
profile
| Columna | Tipo |
|---|---|
emailAddress |
string (clave principal) |
messagesTotal |
long |
threadsTotal |
long |
historyId |
string |
mailbox |
string |
labels
| Columna | Tipo |
|---|---|
mailbox |
string (clave principal) |
id |
string (clave principal) |
name |
string |
messageListVisibility |
string |
labelListVisibility |
string |
type |
string |
messagesTotal |
long |
messagesUnread |
long |
threadsTotal |
long |
threadsUnread |
long |
color |
struct{textColor: string, backgroundColor: string} |
labels_details
La labels_details tabla tiene las mismas columnas que labels (mailbox, id, name, type, los campos de visibilidad, el número de mensajes e hilos, y color). Cada etiqueta se enriquece con la respuesta de la labels.get API.
drafts
| Columna | Tipo |
|---|---|
id |
string (clave principal) |
message |
struct{id: string, threadId: string} |
mailbox |
string |
filtros
| Columna | Tipo |
|---|---|
id |
string (clave principal) |
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
| Columna | Tipo |
|---|---|
id |
string (clave principal) |
threadId |
string |
snippet |
string |
historyId |
string |
internalDate |
string |
payload |
struct (véase estructura de carga útil) |
sizeEstimate |
long |
mailbox |
string |
_ingestion_timestamp |
timestamp |
_row_deleted |
boolean |
_row_truncated |
boolean |
Estructura de la carga útil
La payload columna materializa el árbol MIME de mensajes hasta 8 niveles de anidación. Cada nivel tiene la siguiente estructura:
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>
}
Los apegos están contenidos dentro de payload.parts[].body.attachmentId. Las partes anidadas a más de 8 niveles de profundidad no se expanden en columnas estructurales.
message_labels
| Columna | Tipo |
|---|---|
message_id |
string (clave principal) |
threadId |
string |
labelIds |
array<string> |
mailbox |
string |
_ingestion_timestamp |
timestamp |
_row_deleted |
boolean |
_row_truncated |
boolean |
Sincronización incremental
Las messages tablas y message_labels se sincronizan de forma incremental:
- La primera prueba realiza un rastreo bootstrap completo del buzón.
- Las partidas posteriores llaman
users.history.list, clavetado en elhistoryIdcursor tomado delprofilerecurso, para obtener solo los cambios desde la ejecución anterior. - Las eliminaciones se emiten como
_row_deletedlápidas. - Si Gmail caduca el almacenamiento
historyIdalmacenado (la API de Historial devuelve un 404 porque el cursor es más antiguo que la ventana de retención de Gmail), el conector automáticamente vuelve a una actualización completa de la tabla afectada.
Importante
Gmail conserva el historial durante una ventana limitada, normalmente de unos siete días. Programa la pipeline para que se ejecute al menos una vez cada siete días para que el almacenamiento historyId se mantenga dentro de esa ventana. Si el cursor expira, la siguiente ejecución realiza un refresco completo de messages y message_labels.
Las messages tablas y message_labels no soportan seguimiento de historial SCD Tipo 2; configurar SCD Tipo 2 para estas tablas provoca fallos en la validación de la tubería.
Limitación de velocidad
Cuando Gmail devuelve una respuesta HTTP 403, el conector lee la Retry-After cabecera (con un mínimo de 1 segundo de interrupción) y vuelve a intentar la solicitud automáticamente.