다음을 통해 공유


from_json 기능

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

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

구문

from_json(jsonStr, schema [, options])

인수

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

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

schema CREATE TABLE사용되는 형식과 유사하게 쉼표로 구분된 column 이름 및 데이터 형식 쌍으로 정의해야 합니다. Databricks Runtime 12.2 schema 이전에는 리터럴이어야 합니다.

참고 항목

schema에 있는 column 및 필드 이름은 대/소문자를 구분하며 jsonStr 이름과 정확히 일치해야 합니다. 대/소문자만 다른 JSON 필드를 매핑하려면 결과 구조체를 고유한 필드 이름으로 캐스팅할 수 있습니다. 자세한 내용은 예제를 참조하세요.

options(제공된 경우)는 다음 중 하나일 수 있습니다.

  • primitivesAsString(기본 false): 모든 기본 values를 문자열 형식으로 유추합니다.
  • prefersDecimal(기본 false): 모든 부동 소수점 values를 소수 타입으로 추론합니다. values가 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로 설정합니다. 손상된 레코드를 유지하려면 사용자 정의 schema에서 문자열 유형 필드인 columnNameOfCorruptRecord을 set하십시오. schema 필드가 없으면 구문 분석 중에 손상된 레코드를 삭제합니다. schema을 유추할 때 출력 schema에 columnNameOfCorruptRecord 필드를 암시적으로 추가합니다.
    • FAILFAST: 손상된 레코드를 만나면 예외가 throw됩니다.
  • columnNameOfCorruptRecord(기본값은 spark.sql.columnNameOfCorruptRecord에서 지정한 값): PERMISSIVE 모드에서 생성된 형식이 잘못된 문자열의 새 필드명을 having로 변경할 수 있습니다. 이는 spark.sql.columnNameOfCorruptRecord를 재정의합니다.
  • dateFormat(기본값 yyyy-MM-dd): 날짜 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 날짜 형식에 적용됩니다.
  • timestampFormat(기본값 yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): 타임스탬프 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 타임스탬프 형식에 적용됩니다.
  • multiLine(기본값 false): 파일당 여러 줄에 걸쳐 있을 수 있는 하나의 레코드를 구문 분석합니다.
  • encoding(기본적으로 set아님): JSON 파일에 대한 표준 기본 또는 확장 인코딩 중 하나를 강제로 set 수 있습니다. 예를 들어 UTF-16BE, UTF-32LE입니다. 인코딩이 지정되지 않고 multiLine가 set부터 true일 때, 자동으로 감지됩니다.
  • lineSep(기본값은 모든 \r, \r\n\n에 적용됨): 구문 분석에 사용해야 하는 줄 구분자를 정의합니다.
  • samplingRatio(기본값 1.0): schema 유추에 사용되는 입력 JSON 개체의 비율을 정의합니다.
  • dropFieldIfAllNull(기본 false): schema 유추 시 모든 null values 또는 빈 배열/구조체의 column를 무시할지 여부입니다.
  • locale(기본값은 en-US임): sets IETF BCP 47 형식의 언어 태그로서의 로캘. 예를 들어 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다.
  • allowNonNumericNumbers(기본 true): JSON 파서가 숫자가 아닌 (NaN) 토큰의 set를 합법적인 부동 소수점 숫자로 인식할 수 있도록 허용합니다 values.
    • +INF는 양의 무한대이며 +InfinityInfinity의 별칭입니다.
    • -INF는 음의 무한대), 별칭 -Infinity입니다.
    • NaN은 0으로 나눈 결과와 같은 기타 숫자가 아닌 경우에 대한 것입니다.
  • readerCaseSensitive (기본값 true): 사용 가능한 경우 rescuedDataColumn 대/소문자 구분 동작을 지정합니다. true이면 이름이 대/소문자별로 다른 데이터 columnsschema; 그렇지 않으면 대/소문자를 구분하지 않는 방식으로 데이터를 읽습니다. Databricks SQL 및 Databricks Runtime 13.3 LTS 이상에서 사용할 수 있습니다.

반품

필드 이름과 형식이 schema 정의와 일치하는 구조체입니다.

예제

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