from_json
기능
적용 대상: Databricks SQL Databricks Runtime
jsonStr
및 schema
가 있는 구조체 값을 반환합니다.
구문
from_json(jsonStr, schema [, options])
인수
jsonStr
STRING
: json 문서를 지정하는 식입니다.schema
STRING
: schema_of_json 함수의 식 또는 호출입니다.options
: 지시문을 지정하는 선택적MAP<STRING,STRING>
리터럴입니다.
jsonStr
은 schema
및 options
에 대해 잘 구성되어야 합니다.
schema
에 사용되는 CREATE TABLE
형식과 유사하게 쉼표로 구분된 열 이름 및 데이터 형식 쌍으로 정의해야 합니다.
Databricks Runtime 12.2 schema
이전에는 리터럴이어야 합니다.
참고 항목
열 및 필드 이름은 schema
대/소문자를 구분하며 정확히 이름과 jsonStr
일치해야 합니다.
대/소문자만 다른 JSON 필드를 매핑하려면 결과 구조체를 고유한 필드 이름으로 캐스팅할 수 있습니다.
자세한 내용은 예제를 참조하세요.
options
(제공된 경우)는 다음 중 하나일 수 있습니다.
primitivesAsString
(기본값false
): 모든 기본 값을 문자열 형식으로 유추합니다.prefersDecimal
(기본값false
): 모든 부동 소수점 값을 소수점 형식으로 유추합니다. 값이 10진수에 맞지 않으면 더블로 유추합니다.allowComments
(기본값false
): JSON 레코드에서 Java 및 C++ 스타일 주석을 무시합니다.allowUnquotedFieldNames
(기본값false
): 따옴표가 지정되지 않은 JSON 필드 이름을 허용합니다.allowSingleQuotes
(기본값true
): 큰따옴표 외에 작은따옴표를 사용할 수 있습니다.allowNumericLeadingZeros
(기본값false
): 앞에 오는 0을 숫자로 허용합니다(예:00012
).allowBackslashEscapingAnyCharacter
(기본값false
): 백슬래시 따옴표 메커니즘을 사용하여 모든 문자의 따옴표를 수락할 수 있습니다.allowUnquotedControlChars
(기본값false
): JSON 문자열에 따옴표가 지정되지 않은 제어 문자(탭 및 줄 바꿈 문자를 포함하여 값이 32보다 작은 ASCII 문자)를 포함하도록 허용할지 여부입니다.mode
(기본값PERMISSIVE
): 구문 분석 중 손상된 레코드를 처리하는 모드를 허용합니다.PERMISSIVE
: 손상된 레코드를 만나면 잘못된 형식의 문자열을columnNameOfCorruptRecord
에 의해 구성된 필드에 넣고 잘못된 형식의 필드를 null로 설정합니다. 손상된 레코드를 유지하려면 사용자 정의 스키마에서columnNameOfCorruptRecord
라는 문자열 형식 필드를 설정할 수 있습니다. 스키마에 필드가 없으면 구문 분석 중에 손상된 레코드를 삭제합니다. 스키마를 유추할 때 출력 스키마에columnNameOfCorruptRecord
필드를 암시적으로 추가합니다.FAILFAST
: 손상된 레코드를 만나면 예외가 throw됩니다.
columnNameOfCorruptRecord
(기본값은spark.sql.columnNameOfCorruptRecord
에 지정된 값임):PERMISSIVE
모드에서 만들어진 형식이 잘못된 문자열이 있는 새 필드의 이름을 변경할 수 있습니다. 이는spark.sql.columnNameOfCorruptRecord
를 재정의합니다.dateFormat
(기본값yyyy-MM-dd
): 날짜 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 날짜 형식에 적용됩니다.timestampFormat
(기본값yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): 타임스탬프 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 타임스탬프 형식에 적용됩니다.multiLine
(기본값false
): 파일당 여러 줄에 걸쳐 있을 수 있는 하나의 레코드를 구문 분석합니다.encoding
(기본적으로 설정되지 않음): JSON 파일에 대한 표준 기본 또는 확장 인코딩 중 하나를 강제로 설정할 수 있습니다. 예를 들어 UTF-16BE, UTF-32LE입니다. 인코딩을 지정하지 않고multiLine
을true
로 설정하면 자동으로 검색됩니다.lineSep
(기본값은 모든\r
,\r\n
및\n
에 적용됨): 구문 분석에 사용해야 하는 줄 구분자를 정의합니다.samplingRatio
(기본값 1.0): 스키마 유추에 사용되는 입력 JSON 개체의 비율을 정의합니다.dropFieldIfAllNull
(기본값false
): 스키마 유추 중에 모든 Null 값 또는 빈 열/구조체의 열을 무시할지 여부입니다.locale
(기본값은en-US
임):sets
IETF BCP 47 형식의 언어 태그로서의 로캘. 예를 들어 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다.allowNonNumericNumbers
(기본값true
): JSON 파서가 숫자가 아닌 토큰NaN
집합을 법적 부동 숫자 값으로 인식할 수 있습니다.+INF
는 양의 무한대이며+Infinity
및Infinity
의 별칭입니다.-INF
는 음의 무한대), 별칭-Infinity
입니다.NaN
은 0으로 나눈 결과와 같은 기타 숫자가 아닌 경우에 대한 것입니다.
readerCaseSensitive
(기본값true
): 사용 가능한 경우rescuedDataColumn
대/소문자 구분 동작을 지정합니다. true이면 스키마와 대/소문자를 구분하여 이름이 다른 데이터 열을 구합니다. 그렇지 않으면 대/소문자를 구분하지 않는 방식으로 데이터를 읽습니다. Databricks SQL 및 Databricks Runtime 13.3 LTS 이상에서 사용할 수 있습니다.
반품
스키마 정의와 일치하는 필드 이름 및 형식이 있는 구조체입니다.
예제
> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
-- The column name must to match the case of the JSON field
> SELECT from_json('{"a":1}', 'A INT');
{"A":null}
> SELECT from_json('{"datetime":"26/08/2015"}', 'datetime Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"datetime":2015-08-26 00:00:00}
-- Disambiguate field names with different cases
> SELECT cast(from_json('{"a":1, "A":0.8}', 'a INT, A DOUBLE') AS STRUCT<a: INT, b: DOUBLE>);
{"a":1, "b":0.8}