from_avro
関数
適用対象: Databricks SQL Databricks Runtime 15.4 以降
avroBin
と jsonSchemaStr
を含む構造体の値を返します。
構文
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}