다음을 통해 공유


from_json 기능

적용 대상: 예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

jsonStrschema가 있는 구조체 값을 반환합니다.

구문

from_json(jsonStr, schema [, options])

인수

  • jsonStrSTRING: json 문서를 지정하는 식입니다.
  • schemaSTRING: schema_of_json 함수의 식 또는 호출입니다.
  • options: 지시문을 지정하는 선택적 MAP<STRING,STRING> 리터럴입니다.

jsonStrschemaoptions에 대해 잘 구성되어야 합니다.

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입니다. 인코딩을 지정하지 않고 multiLinetrue로 설정하면 자동으로 검색됩니다.
  • lineSep(기본값은 모든 \r, \r\n\n에 적용됨): 구문 분석에 사용해야 하는 줄 구분자를 정의합니다.
  • samplingRatio(기본값 1.0): 스키마 유추에 사용되는 입력 JSON 개체의 비율을 정의합니다.
  • dropFieldIfAllNull(기본값 false): 스키마 유추 중에 모든 Null 값 또는 빈 열/구조체의 열을 무시할지 여부입니다.
  • locale(기본값은 en-US임): sets IETF BCP 47 형식의 언어 태그로서의 로캘. 예를 들어 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다.
  • allowNonNumericNumbers (기본값 true): JSON 파서가 숫자가 아닌 토큰NaN 집합을 법적 부동 숫자 값으로 인식할 수 있습니다.
    • +INF는 양의 무한대이며 +InfinityInfinity의 별칭입니다.
    • -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}