次の方法で共有


from_avro 関数

適用対象: check marked yes Databricks SQL 「はい」のチェック マーク Databricks Runtime 15.4 以降

avroBinjsonSchemaStr を含む構造体の値を返します。

構文

from_avro(avroBin, jsonSchemaStr [, options] )

引数

  • avroBin: Avro データの行を指定する BINARY 式。
  • avroSchemaSpec: JSON 形式のターゲット スキーマ。 to_avro()で指定されているavroBinでエンコードされたスキーマと一致する必要があります。
  • options: ディレクティブを指定する省略可能な MAP<STRING,STRING> リテラル。

返品

schema_of_json(jsonStr)の結果に基づくフィールド名と型を持つSTRUCT

avroBin は、 avroSchemaSpec に関して整形式である必要があり、 options または Databricks によって例外が発生します。

メモ

次のオプションが最も一般的にサポートされています。

オプション 説明
'mode' 'PERMISSIVE', 'FAILFAST' PERMISSIVE モードでは、オブジェクト内の破損したオブジェクトまたはフィールドは、エラーを発生させる代わりにNULLに設定されます。
compression 'uncompressed''snappy''deflade'、 'bzip2''xz''zstandard' Avro データのエンコードに使用する圧縮コーデックを指定します。

その他のオプションについては、「 ストリーミング Avro データの読み取りと書き込みを参照してください。

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