from_avro
-Funktion
Gilt für: Databricks SQL Databricks Runtime 15.4 und höher
Gibt einen Strukturwert mit avroBin
und jsonSchemaStr
zurück.
Syntax
from_avro(avroBin, jsonSchemaStr [, options] )
Argumente
avroBin
: EinBINARY
Ausdruck, der eine Zeile mit Avro-Daten angibt.avroSchemaSpec
: Das Zielschema im JSON-Format. Es muss mit dem in to_avro()angegebenen Schema übereinstimmenavroBin
.options
: Ein optionalesMAP<STRING,STRING>
-Literal, das Anweisungen angibt.
Gibt zurück
A STRUCT
mit Feldnamen und Typen basierend auf dem Ergebnis von schema_of_json(jsonStr).
avroBin
muss in Bezug auf die avroSchemaSpec
und oder options
Databricks wohlgeformt sein, löst eine Ausnahme aus.
Hinweise
Die folgenden Optionen werden am häufigsten unterstützt:
Option | Wert | Beschreibung |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
Im PERMISSIVE Modus werden alle beschädigten Objekte oder Felder in einem Objekt anstelle eines Fehlers festgelegt NULL . |
compression |
'uncompressed' , 'snappy' ''deflade , ', 'bzip2' , 'xz' 'zstandard' |
Gibt den Komprimierungscodec an, der zum Codieren der Avro-Daten verwendet wird. |
Weitere Optionen finden Sie unter Lesen und Schreiben von Avro-Daten.
Beispiele
> 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}