Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
La colonna di salvataggio è in Beta e attualmente supporta l'ingestione in formato JSON. Gli amministratori del workspace possono abilitarla dalla pagina Anteprime attivando l'anteprima Colonna di ripristino Zerobus. Vedere Gestire le anteprime di Azure Databricks.
Di default, Zerobus Ingest in Lakeflow Connect rifiuta qualsiasi record che contenga campi che non corrispondono allo schema della tabella di destinazione. La funzionalità colonna di salvataggio consente di acquisire i campi non conformi anziché perderli. I campi che non rientrano nello schema vengono raggruppati in un oggetto JSON e archiviati in una colonna di salvataggio designata come VARIANT tipo.
La rubrica di salvataggio attualmente supporta l'ingestione in formato JSON. Se fai ingest con Protocol Buffers (protobuf) o Apache Arrow, pianifica il tuo schema in modo che i record si adattino alla tabella, perché i campi non conformi vengono rifiutati invece che salvati.
La colonna di recupero è uno dei tre modi per definire con quanto rigore la tabella convalida i dati in ingresso. Per il quadro completo, vedi Tre modi per modellare il contratto.
Configurare una colonna di salvataggio
Per designare una colonna come colonna di salvataggio, la colonna deve:
- Consenti valori Null.
- Usare il tipo
VARIANT. - Applicare il
zerobus-rescuetag in Unity Catalog.
Esattamente una colonna deve soddisfare tutti e tre i criteri. Zerobus gestisce gli altri casi come segue:
- Nessuna colonna soddisfa tutti e tre i criteri: la funzionalità della colonna di salvataggio è inattiva e Zerobus rifiuta i campi non conformi in quanto senza la funzionalità.
- Più colonne soddisfano tutti e tre i criteri: Zerobus seleziona una in modo arbitrario. Per evitare ambiguità, verificare che una sola colonna sia idonea.
L'applicazione delle modifiche all'assegnazione di tag alle colonne potrebbe richiedere fino a 5 minuti.
Quando Zerobus scrive nella colonna di salvataggio
Zerobus Ingest instrada ogni campo in un record in base a come si adatta allo schema della tabella:
| Campo nel record | Risultato |
|---|---|
| Corrisponde a una colonna della tabella (nome e tipo) | Scritto normalmente in quella colonna. |
| Non presente nello schema della tabella | Catturato nella colonna di soccorso. |
| Presente nello schema della tabella, ma il tipo del valore non corrisponde e la colonna di destinazione è nullabile | Catturato nella colonna di soccorso. |
Solo i campi non conformi passano alla colonna di salvataggio. I campi conformi allo schema vengono sempre scritti nelle rispettive colonne.
Esempio: mancata corrispondenza del tipo e campo aggiuntivo
L'esempio seguente mostra una mancata corrispondenza del tipo e un campo aggiuntivo, entrambi indirizzati alla rescue colonna. Si consideri una tabella con il seguente schema, in cui rescue ammette valori null, usa il tipo VARIANT e ha applicato il tag zerobus-rescue in Unity Catalog:
CREATE TABLE main.default.air_quality (
device_name STRING NOT NULL,
temp INT,
humidity LONG,
rescue VARIANT
);
Questo esempio inserisce il record JSON seguente:
{
"device_name": "sensor-1",
"temp": "72F",
"humidity": 87,
"extra_field": "some value"
}
Il record genera la riga seguente nella tabella Delta di destinazione:
device_name |
temp |
humidity |
rescue |
|---|---|---|---|
sensor-1 |
null |
87 |
{"extra_field": "some value", "temp": "72F"} |
Risultato di ogni colonna:
-
device_nameviene scritto normalmente perché il valore del payload corrisponde al tipo dellaSTRINGcolonna. -
tempviene scritto comenullperché il valore del payload ("72F", una stringa) non corrisponde al tipo dellaINTcolonna. -
humidityviene scritto normalmente perché il valore del payload corrisponde al tipo della colonna. -
extra_fieldnon è nello schema della tabella, quindi viene scritto inrescueanziché essere rifiutato.
Zerobus raggruppa entrambi i campi non conformi, temp e extra_field, nell'oggetto JSON della colonna rescue.
Limitazioni
Si applicano le seguenti limitazioni quando si utilizza la colonna di salvataggio:
- La colonna rescue è riservata, il che significa che il payload del record non può fornire per essa un valore esplicito diverso da null. In caso affermativo, viene rifiutato con un errore. Il valore
nullper la colonna rescue è consentito e viene ignorato, così come qualsiasi campo assente o con valorenull. - Un campo impostato su
nullnel payload JSON viene considerato come un campo assente e non viene scritto nella colonna di salvataggio. - Se il payload contiene più voci per la stessa chiave, l'ultimo valore prevale, seguendo la convenzione di analisi JSON standard.
Related
- Gestione dello schema: come Zerobus Eggest valida i record rispetto allo schema della tua tabella.
-
Tipi di dati supportati: Tipi di dati Delta e Protobuf supportati, inclusi
VARIANT. - Funzionalità di Zerobus Gest: Altre funzionalità di Zerobus Gest.