Funzione from_avro
Si applica a: Databricks SQL Databricks Runtime 15.4 e versioni successive
Restituisce un valore struct con avroBin
e jsonSchemaStr
.
Sintassi
from_avro(avroBin, jsonSchemaStr [, options] )
Argomenti
avroBin
BINARY
: espressione che specifica una riga di dati Avro.avroSchemaSpec
: schema di destinazione in formato JSON. Deve corrispondere allo schema codificato inavroBin
come specificato in to_avro().options
: valore letterale facoltativoMAP<STRING,STRING>
che specifica le direttive.
Valori restituiti
Oggetto STRUCT
con nomi di campo e tipi basati sul risultato di schema_of_json(jsonStr).
avroBin
deve essere ben formato rispetto a avroSchemaSpec
e options
o Databricks genera un'eccezione.
Note
Sono supportate le opzioni seguenti:
Opzione | valore | Descrizione |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
In PERMISSIVE modalità, tutti gli oggetti o i campi danneggiati in un oggetto vengono impostati su NULL anziché generare un errore. |
compression |
'uncompressed' , 'snappy' ' 'deflade , 'bzip2' , , 'xz' , 'zstandard' |
Specifica il codec di compressione usato per codificare i dati Avro. |
Per altre opzioni, vedere Leggere e scrivere dati Avro in streaming.
Esempi
> SELECT from_avro(to_avro(5), '{ "type" : "int" }');
5
> SELECT from_avro(to_avro(5, '{ "type" : "int" }'), '{ "type" : "int" }');
5
> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')), '{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "string"}]}');
{"num":5,"txt":"hello"}
> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')),
'{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "double"}]}',
map('mode', 'failfast'));
Error: Avro data is not valid for the specified schema.
> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')),
'{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "double"}]}',
map('mode', 'permissive'));
{"num":null,"txt":null}