from_avro-Funktion

Gilt für: Häkchen gesetzt ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 15.4 und höher

Gibt einen Strukturwert mit avroBin und jsonSchemaStr zurück.

Syntax

from_avro(avroBin, jsonSchemaStr [, options] )

Argumente

  • avroBin: Ein BINARY 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 optionales MAP<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}