다음을 통해 공유


to_avro 기능

적용 대상:체크 표시 예 Databricks Runtime 16.0 이상

지정된 입력 값을 사용하여 Avro 이진 값을 반환합니다.

구문

to_avro(expr [, avroSchemaSpec] )

논쟁

  • expr: 하나의 표현입니다.
  • avroSchemaSpec: JSON 형식의 선택적 대상 스키마입니다. 지정된 경우 expr 형식은 Notes에서 지정한 것과 일치해야 합니다.

반품

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