to_avro
函数
适用于: Databricks SQL Databricks Runtime 15.4 及更高版本
返回具有指定输入值的 Avro 二进制值。
语法
to_avro(expr [, avroSchemaSpec] )
自变量
expr
:表达式。avroSchemaSpec
:JSON 格式中的可选目标架构。 如果指定,则必须与 Notes 中指定的expr
类型匹配。
返回
Avro 编码的 BINARY
。
备注
SQL 类型到 Avro 类型的映射如下所示:
SQL 类型 | Avro 架构 |
---|---|
VOID |
{ "type" : "null" } |
BOOLEAN |
{ "type" : "boolean" } |
TINYINT |
{ "type" : "int" } |
SMALLINT |
{ "type" : "int" } |
INT |
{ "type" : "int" } |
BIGINT |
{ "type" : "long" } |
DECIMAL(p, s) |
{ "type": "fixed", "name": "a", logicalType": "decimal", "size": (p+1)/2, precision": p, "scale": s } |
FLOAT |
{ "type" : "float" } |
DOUBLE |
{ "type" : "float" } |
STRING |
{ "type" : "string" } |
DATE |
{ "type" : "int", "logicalType" : "date" } |
TIMESTAMP |
{ "type" : "long" } 为自 1970-01-01 00:00:00.000000 以来的微秒数 |
TIMESTAMP_NTZ |
{ "type" : "long" } 为自 1970-01-01 00:00:00.000000 以来的微秒数 |
YEAR MONTH INTERVAL |
{ "type" : "long" } 为月份 |
DAY TIME INTERVAL |
{ "type" : "long" } 为微秒数 |
BINARY |
{ "type" : "bytes" } |
STRUCT<field1 type1, ...> |
{ "type" : "record", "name": "struct_name", "fields": [ { "name" : "field1", "type" : ... }, ... ] } |
ARRAY<type> |
{ "type" : "array", "items": { "type" : ... } |
MAP<STRING, valueType> |
{ "type" : "map", "keyType": { "type" : ... }, "valueType": { "type" : ... } } |
MAP<nonStringType, valueType> |
不支持 |
VARIANT |
不支持 |
示例
> 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"}