Udostępnij za pośrednictwem


Funkcja from_avro

Dotyczy:oznaczono jako 'tak' Databricks Runtime 16.0 lub nowsze

Zwraca wartość struktury z wartościami avroBin i jsonSchemaStr.

Składnia

from_avro(avroBin, jsonSchemaStr [, options] )

Argumenty

  • avroBin BINARY: wyrażenie określające wiersz danych Avro.
  • avroSchemaSpec: schemat docelowy w formacie JSON. Musi być zgodny ze schematem zakodowanym w avroBin formacie określonym w to_avro ().
  • options: opcjonalny MAP<STRING,STRING> literał określający dyrektywy.

Zwraca

Element STRUCT z nazwami pól i typami na podstawie wyniku schema_of_json(jsonStr).

avroBin muszą być dobrze sformułowane w odniesieniu do elementu avroSchemaSpec i options lub usługa Databricks zgłasza wyjątek.

Uwagi

Najczęściej obsługiwane są następujące opcje:

Opcja Wartość Opis
'mode' 'PERMISSIVE', 'FAILFAST' W PERMISSIVE trybie wszystkie uszkodzone obiekty lub pola w obiekcie są ustawione na NULL wartość zamiast zgłaszać błąd.
compression 'uncompressed', 'snappy', 'deflade', 'bzip2', , , 'xz''zstandard' Określa koder kompresji używany do kodowania danych Avro.

Aby uzyskać więcej opcji, zobacz Odczyt i zapis danych avro przesyłania strumieniowego.

Przykłady

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