다음을 통해 공유


to_avro 기능

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

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

구문

to_avro(expr [, avroSchemaSpec] )

인수

  • expr: 식입니다.
  • avroSchemaSpec: JSON 형식의 선택적 대상 스키마입니다. 지정한 경우 Notesexpr지정된 형식과 일치해야 합니다.

반품

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