to_avro fungsi

Berlaku untuk:ditandai sebagai 'ya' Databricks Runtime 16.0 dan versi yang lebih baru

Mengembalikan nilai biner Avro dengan nilai input yang ditentukan.

Sintaks

to_avro(expr [, avroSchemaSpec] )

Argumen

  • expr: Sebuah ekspresi.
  • avroSchemaSpec: Skema target opsional dalam format JSON. Jika ditentukan, jenis expr harus sesuai dengan yang ditentukan dalam Catatan.

Pengembalian

Avro yang dikodekan BINARY.

Catatan

Pemetaan jenis SQL ke jenis Avro adalah sebagai berikut:

Jenis SQL Skema 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" } dalam mikrodetik sejak 1970-01-01 00:00:00.000000
TIMESTAMP_NTZ { "type" : "long" } dalam mikrodetik sejak 1970-01-01 00:00:00.000000
YEAR MONTH INTERVAL { "type" : "long" } dalam satuan bulan
DAY TIME INTERVAL { "type" : "long" } sebagai mikrodetik
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> Tidak didukung
VARIANT Tidak didukung

Contoh

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