Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Seite enthält Referenzmaterial für den Gmail-Connector in Databricks Lakeflow Connect.
Important
Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.
Allgemeines Verbinderverhalten
- Der Verbinder ist schreibgeschützt. Standardmäßig spricht es nur mit
https://gmail.googleapis.comund nutzt dashttps://www.googleapis.com/auth/gmail.readonlyZielfernrohr. Es verändert nie das Quellpostfach. - Jede Verbindung nimmt einen einzelnen Briefkasten auf. Der Verbinder stempelt den Briefkastenwert als Spalte
mailboxin jeder Zeile. Um mehr als einen Postfach zu konsumieren, erstellen Sie für jede Mailbox eine separate Verbindung und Pipeline. - Das Quellschema ist
default. - Die und
message_labelsdiemessagesTabellen synchronisieren sich schrittweise mit der Gmail History API. Die ,labels,labels_details, ,draftsundfiltersTabellenprofilesind ausschließlich bei vollständiger Aktualisierung. - Nachrichtenanhänge befinden sich in der
messagespayloadTabellenspalte (payload.parts[].body.attachmentId). Es gibt keine separate Tabelle für Anhänge.
Unterstützte Tabellen
Der Connector speichert die folgenden Tabellen aus dem default Quellschema.
| Tabelle | Primärschlüssel | Synchronisierungsmodus |
|---|---|---|
profile |
emailAddress |
Vollständige Aktualisierung |
labels |
mailbox, id |
Vollständige Aktualisierung |
labels_details |
mailbox, id |
Vollständige Aktualisierung |
drafts |
id |
Vollständige Aktualisierung |
filters |
id |
Vollständige Aktualisierung |
messages |
id |
Incremental (Gmail History API, historyId) |
message_labels |
message_id |
Incremental (Gmail History API, historyId) |
Zielschema
Die folgenden Abschnitte beschreiben die Spalten in jeder Zieltabelle.
profile
| Column | Typ |
|---|---|
emailAddress |
string (Primärschlüssel) |
messagesTotal |
long |
threadsTotal |
long |
historyId |
string |
mailbox |
string |
labels
| Column | Typ |
|---|---|
mailbox |
string (Primärschlüssel) |
id |
string (Primärschlüssel) |
name |
string |
messageListVisibility |
string |
labelListVisibility |
string |
type |
string |
messagesTotal |
long |
messagesUnread |
long |
threadsTotal |
long |
threadsUnread |
long |
color |
struct{textColor: string, backgroundColor: string} |
labels_details
Die Tabelle labels_details hat dieselben Spalten wie labels (mailbox, id, name, , type, die Sichtbarkeitsfelder, die Nachrichten- und Threadzählungen sowie color). Jedes Label wird mit der Antwort der labels.get API bereichert.
Entwürfe
| Column | Typ |
|---|---|
id |
string (Primärschlüssel) |
message |
struct{id: string, threadId: string} |
mailbox |
string |
Filter
| Column | Typ |
|---|---|
id |
string (Primärschlüssel) |
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 | Typ |
|---|---|
id |
string (Primärschlüssel) |
threadId |
string |
snippet |
string |
historyId |
string |
internalDate |
string |
payload |
struct (siehe Nutzlaststruktur) |
sizeEstimate |
long |
mailbox |
string |
_ingestion_timestamp |
timestamp |
_row_deleted |
boolean |
_row_truncated |
boolean |
Nutzlaststruktur
Die Spalte payload materialisiert den MIME-Baum der Nachricht bis zu 8 Ebenen des Verschachtelns. Jedes Level hat folgende Struktur:
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>
}
Anhänge sind in payload.parts[].body.attachmentIdenthalten. Teile, die mehr als 8 Ebenen tief verschachtelt sind, werden nicht zu Struktur-Säulen erweitert.
message_labels
| Column | Typ |
|---|---|
message_id |
string (Primärschlüssel) |
threadId |
string |
labelIds |
array<string> |
mailbox |
string |
_ingestion_timestamp |
timestamp |
_row_deleted |
boolean |
_row_truncated |
boolean |
Inkrementelle Synchronisierung
Die und message_labels Tabellen messages synchronisieren sich inkrementiell:
- Der erste Durchlauf führt einen vollständigen Bootstrap-Crawl durch den Briefkasten durch.
- Nachfolgende Durchläufe rufen
users.history.list, auf demhistoryIdCursor aus der Ressourceprofileaufgerufen, um nur die Änderungen seit dem vorherigen Durchlauf abzurufen. - Deletionen werden als
_row_deletedGrabsteine ausgestrahlt. - Wenn Gmail das gespeicherte
historyIdFenster abläuft (die History API gibt ein 404-Formular zurück, da der Cursor älter ist als das Speicherfenster von Gmail), fällt der Connector automatisch auf eine vollständige Aktualisierung der betroffenen Tabelle zurück.
Important
Gmail speichert die Geschichte für ein begrenztes Zeitfenster, typischerweise etwa sieben Tage. Plane die Pipeline so einmal, dass sie mindestens alle sieben Tage läuft, damit das gespeicherte historyId Formular innerhalb dieses Zeitfensters bleibt. Wenn der Cursor abläuft, führt der nächste Durchlauf eine vollständige Aktualisierung von messages und message_labelsdurch.
Die und message_labels Tabellen messages unterstützen keine SCD Type 2 History Tracking; die Konfiguration von SCD Type 2 für diese Tabellen führt dazu, dass die Pipeline-Validierung fehlschlägt.
Ratenbegrenzung
Wenn Gmail eine HTTP-403-Antwort zurückgibt, liest der Connector den Retry-After Header (mit mindestens 1 Sekunde Backoff) und versucht die Anfrage automatisch erneut.