Partager via


Fonction to_avro

S’applique à :coché oui Databricks Runtime 16.0 et versions ultérieures

Retourne une valeur binaire Avro avec la valeur d’entrée spécifiée.

Syntaxe

to_avro(expr [, avroSchemaSpec] )

Arguments

  • expr: expression.
  • avroSchemaSpec: schéma cible facultatif au format JSON. S’il est spécifié, il doit correspondre au expr type spécifié dans Notes.

Retours

Un avro encodé BINARY.

Notes

Le mappage des types SQL aux types Avro est le suivant :

Type SQL Schéma 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" } en microsecondes depuis 1970-01-01 00:00:00.000000
TIMESTAMP_NTZ { "type" : "long" } en microsecondes depuis 1970-01-01 00:00:00.000000
YEAR MONTH INTERVAL { "type" : "long" } en tant que mois
DAY TIME INTERVAL { "type" : "long" } en microsecondes
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> Non pris en charge
VARIANT Non pris en charge

Exemples

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