Funkce from_avro

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 15.4 a novější

Vrátí hodnotu struktury s hodnotou avroBin a jsonSchemaStr.

Syntaxe

from_avro(avroBin, jsonSchemaStr [, options] )

Argumenty

  • avroBin: Výraz BINARY určující řádek dat Avro.
  • avroSchemaSpec: Cílové schéma ve formátu JSON. Musí odpovídat schématu zakódovanému v avroBin to_avro().
  • options: Volitelný MAP<STRING,STRING> literál určující direktivy.

Návraty

A STRUCT s názvy polí a typy na základě výsledku schema_of_json(jsonStr).

avroBin musí být ve správném formátu s ohledem na avroSchemaSpec data a options nebo Databricks vyvolá výjimku.

Notes

Nejběžnější podporované jsou následující možnosti:

Možnost Hodnota Popis
'mode' 'PERMISSIVE', 'FAILFAST' V PERMISSIVE režimu jsou všechny poškozené objekty nebo pole v objektu nastaveny na NULL místo vyvolání chyby.
compression 'uncompressed', ''snappy''deflade, 'bzip2', , 'xz''zstandard' Určuje kodek komprese použitý ke kódování dat Avro.

Další možnosti najdete v tématu Čtení a zápis streamovaných dat Avro.

Příklady

> 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}