Delen via


from_avro-functie

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 15.4 en hoger

Retourneert een struct-waarde met de avroBin en jsonSchemaStr.

Syntaxis

from_avro(avroBin, jsonSchemaStr [, options] )

Argumenten

  • avroBin: Een BINARY expressie die een rij met Avro-gegevens opgeeft.
  • avroSchemaSpec: Het doelschema in JSON-indeling. Het moet overeenkomen met het schema dat is avroBin gecodeerd zoals opgegeven in to_avro().
  • options: Een optionele letterlijke MAP<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}