Aracılığıyla paylaş


from_avro işlevi

Şunun için geçerlidir:evet olarak işaretli Databricks Runtime 16.0 ve üstü

avroBin ve jsonSchemaStr içeren bir yapı değeri döndürür.

Söz dizimi

from_avro(avroBin, jsonSchemaStr, options )

Tartışmalar

  • avroBin BINARY: Avro verilerinin satırını belirten ifade.
  • avroSchemaSpec: JSON biçiminde hedef şema. avroBin içinde belirtilen şekilde kodlanmış şemayla eşleşmelidir.
  • options: MAP<STRING,STRING> literal belirten yönergeler.

İadeler

A , schema_of_json(jsonStr) sonucuna göre alan adları ve türleri olan.

avroBin ve avroSchemaSpec açısından options iyi biçimlendirilmiş olmalıdır, aksi takdirde Databricks bir özel durum oluşturur.

Notlar

Aşağıdaki seçenekler en yaygın olarak desteklenir:

Seçenek Değer Açıklama
'mode' 'PERMISSIVE', 'FAILFAST' Modu PERMISSIVE olduğunda, bir nesnedeki bozuk nesneler veya alanlar hata vermek yerine NULL olarak ayarlanır.
compression 'uncompressed', 'snappy', 'deflade', 'bzip2', 'xz', 'zstandard' Avro verilerini kodlamak için kullanılan sıkıştırma codec bileşenini belirtir.

Daha fazla seçenek için bkz. Akışlı Avro verilerini okuma ve yazma.

Örnekler

> SELECT from_avro(to_avro(5), '{ "type" : "int" }', NULL:MAP<STRING, STRING>);
  5

> SELECT from_avro(to_avro(5, '{ "type" : "int" }'), '{ "type" : "int" }', NULL:MAP<STRING, STRING>);
  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"}]}', NULL:MAP<STRING, 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}