from_avro
-functie
Van toepassing op: Databricks SQL Databricks Runtime 15.4 en hoger
Retourneert een struct-waarde met de avroBin
en jsonSchemaStr
.
Syntaxis
from_avro(avroBin, jsonSchemaStr [, options] )
Argumenten
avroBin
: EenBINARY
expressie die een rij met Avro-gegevens opgeeft.avroSchemaSpec
: Het doelschema in JSON-indeling. Het moet overeenkomen met het schema dat isavroBin
gecodeerd zoals opgegeven in to_avro().options
: Een optionele letterlijkeMAP<STRING,STRING>
waarde die instructies aangeeft.
Retouren
Een STRUCT
met veldnamen en -typen op basis van het resultaat van schema_of_json(jsonStr).
avroBin
moet goed zijn gevormd met betrekking tot de avroSchemaSpec
en options
of Databricks genereert een uitzondering.
Opmerkingen
De volgende opties worden het meest ondersteund:
Optie | Weergegeven als | Beschrijving |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
In PERMISSIVE de modus worden beschadigde objecten of velden in een object ingesteld op in plaats van een fout op te NULL geven. |
compression |
'uncompressed' , ''deflade 'snappy' , ', , 'xz' 'bzip2' 'zstandard' |
Hiermee geeft u de compressiecodec op die wordt gebruikt om de Avro-gegevens te coderen. |
Zie Lees- en schrijfbewerkingen voor avro-gegevens voor meer opties.
Voorbeelden
> 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}