from_csv 함수

적용 대상:검사 예 Databricks SQL 검사 예 Databricks Runtime으로 표시됨

및 를 사용하여 구조체 값을 반환합니다 csvStrschema.

구문

from_csv(csvStr, schema [, options])

인수

  • csvStr: CSV 데이터 행을 지정하는 STRING 식입니다.
  • schema: STRING 리터럴 또는 schema_of_csv 함수 호출입니다.
  • options: 선택적 MAP<STRING, 지시문을 지정하는 STRING> 리터럴입니다.

반환

스키마 정의와 일치하는 필드 이름 및 형식이 있는 STRUCT입니다.

csvStr는 및 options에 대해 schema 잘 형성되어야 합니다. schema 은 에서 사용되는 쉼표로 구분된 열 이름 및 데이터 형식 쌍으로 정의되어야 합니다( 예 CREATE TABLE: ).

options제공된 경우 다음 중 한 가지가 될 수 있습니다.

  • sep (기본값 ,): 각 필드 및 값에 대한 구분 기호를 설정합니다. 이 구분 기호는 하나 이상의 문자일 수 있습니다.
  • encoding (기본값 UTF-8): 지정된 인코딩 형식으로 CSV 파일을 디코딩합니다.
  • quote (기본값 "): 구분 기호가 값의 일부가 될 수 있는 따옴표 붙은 값을 이스케이프하는 데 사용되는 단일 문자를 설정합니다. 따옴표로 끄려면 null이 아니라 빈 문자열을 설정해야 합니다. 이 동작은 과 다릅니다 com.databricks.spark.csv.
  • escape (기본값 \): 이미 따옴표가 붙은 값 내에서 따옴표를 이스케이프하는 데 사용되는 단일 문자를 설정합니다.
  • charToEscapeQuoteEscaping (기본값 escape 또는 \0): 따옴표 문자의 이스케이프를 이스케이프하는 데 사용되는 단일 문자를 설정합니다. 기본값은 및 quote 문자가 다른 경우 escape 이스케이프 문자이고, \0 그렇지 않으면 입니다.
  • comment (기본 빈 문자열): 이 문자로 시작하는 줄을 건너뛰는 데 사용되는 단일 문자를 설정합니다. 기본적으로 사용하지 않도록 설정됩니다.
  • header(기본값 false): 첫 번째 줄을 열 이름으로 사용합니다.
  • enforceSchema (기본값 true): true로 설정된 경우 지정되거나 유추된 스키마가 데이터 원본 파일에 강제로 적용되고 CSV 파일의 헤더는 무시됩니다. 옵션을 false로 설정하면 헤더 옵션이 true로 설정된 경우 CSV 파일의 모든 헤더에 대해 스키마의 유효성이 검사됩니다. 스키마의 필드 이름과 CSV 헤더의 열 이름은 를 고려 spark.sql.caseSensitive한 위치에 의해 확인됩니다. 기본값은 true이지만 잘못된 결과를 방지하려면 enforceSchema 옵션을 사용하지 않도록 설정하는 것이 좋습니다.
  • inferSchema (기본값 false): 데이터에서 입력 스키마를 자동으로 유추합니다. 데이터를 한 번 더 전달해야 합니다.
  • samplingRatio (기본값 1.0): 스키마 유추에 사용되는 행의 비율을 정의합니다.
  • ignoreLeadingWhiteSpace (기본값 false): 읽는 값의 선행 공백을 건너뛰어야 하는지 여부를 나타내는 플래그입니다.
  • ignoreTrailingWhiteSpace (기본값 false): 읽는 값의 후행 공백을 건너뛰어야 하는지 여부를 나타내는 플래그입니다.
  • nullValue (기본값 빈 문자열): null 값의 문자열 표현을 설정합니다.
  • emptyValue (기본 빈 문자열): 빈 값의 문자열 표현을 설정합니다.
  • nanValue (기본값 NaN): 숫자가 아닌 값의 문자열 표현을 설정합니다.
  • positiveInf (기본값 Inf): 양수 무한대 값의 문자열 표현을 설정합니다.
  • negativeInf (기본값 -Inf): 음의 무한대 값의 문자열 표현을 설정합니다.
  • dateFormat (기본값 yyyy-MM-dd): 날짜 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 Datetime 패턴의 형식을 따릅니다. 날짜 유형에 적용됩니다.
  • timestampFormat (기본값 yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): 타임스탬프 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 Datetime 패턴의 형식을 따릅니다. 타임스탬프 형식에 적용됩니다.
  • maxColumns (기본값 20480): 레코드에 있을 수 있는 열 수에 대한 하드 제한을 정의합니다.
  • maxCharsPerColumn (기본값 -1): 읽는 지정된 값에 허용되는 최대 문자 수를 정의합니다. 기본적으로 길이가 제한 없음을 의미하는 -1입니다.
  • unescapedQuoteHandling (기본값 STOP_AT_DELIMITER): CSV 파서가 이스케이프되지 않은 따옴표로 값을 처리하는 방법을 정의합니다.
    • STOP_AT_CLOSING_QUOTE: 이스케이프되지 않은 따옴표가 입력에 있는 경우 따옴표 문자를 누적하고 닫는 따옴표가 발견될 때까지 값을 따옴표로 묶은 값으로 구문 분석합니다.
    • BACK_TO_DELIMITER: 이스케이프되지 않은 따옴표가 입력에 있는 경우 값을 따옴표가 없는 값으로 간주합니다. 이렇게 하면 구분 기호가 발견될 때까지 파서가 현재 구문 분석된 값의 모든 문자를 누적합니다. 값에 구분 기호가 없는 경우 파서는 구분 기호 또는 줄 끝 찾을 때까지 입력에서 문자를 계속 누적합니다.
    • STOP_AT_DELIMITER: 이스케이프되지 않은 따옴표가 입력에 있는 경우 값을 따옴표가 없는 값으로 간주합니다. 이렇게 하면 입력에서 구분 기호 또는 줄 끝 찾을 때까지 파서가 모든 문자를 누적합니다.
    • STOP_AT_DELIMITER: 이스케이프되지 않은 따옴표가 입력에 있으면 지정된 값에 대해 구문 분석된 내용이 건너뛰고 에 설정된 nullValue 값이 대신 생성됩니다.
    • RAISE_ERROR: 이스케이프되지 않은 따옴표가 입력에 있으면 이 TextParsingException throw됩니다.
  • mode (기본값 PERMISSIVE): 구문 분석 중에 손상된 레코드를 처리하는 모드를 허용합니다. 다음과 같은 대/소문자를 구분하지 않는 모드를 지원합니다. Spark는 CSV의 열 정리에서 필요한 열만 구문 분석하려고 합니다. 따라서 손상된 레코드는 필요한 필드 집합에 따라 다를 수 있습니다. 이 동작은 (기본적으로 사용)에 의해 spark.sql.csv.parser.columnPruning.enabled 제어될 수 있습니다.
    • PERMISSIVE: 손상된 레코드를 충족하는 경우 잘못된 형식의 문자열을 로 구성된 columnNameOfCorruptRecord필드에 넣고 잘못된 형식의 필드를 null로 설정합니다. 손상된 레코드를 유지하기 위해 사용자는 사용자 정의 스키마에서 columnNameOfCorruptRecord라는 문자열 형식 필드를 설정할 수 있습니다. 스키마에 필드가 없으면 구문 분석 중에 손상된 레코드가 삭제됩니다. 스키마보다 토큰이 적거나 더 많은 레코드는 CSV에 손상된 레코드가 아닙니다. 스키마 길이보다 토큰이 적은 레코드를 충족하는 경우 null을 추가 필드로 설정합니다. 레코드에 스키마 길이보다 많은 토큰이 있는 경우 추가 토큰이 삭제됩니다.
    • FAILFAST: 손상된 레코드를 충족할 때 예외를 throw합니다.
  • columnNameOfCorruptRecord (기본값은 에 지정된 값)입니다. 모드에서 spark.sql.columnNameOfCorruptRecord만든 형식이 잘못된 문자열이 있는 새 필드의 이름을 다시 지정할 PERMISSIVE 수 있습니다. 이 재정의 합니다 spark.sql.columnNameOfCorruptRecord.
  • multiLine (기본값 false): 여러 줄에 걸쳐 있을 수 있는 하나의 레코드를 구문 분석합니다.
  • locale (기본값 en-US): 로캘을 IETF BCP 47 형식의 언어 태그로 설정합니다. instance 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다.
  • lineSep (기본값은 모든 \r, \r\n및 )를 다루며 \n구문 분석에 사용해야 하는 줄 구분 기호를 정의합니다. 최대 길이는 1자입니다.
  • pathGlobFilter: 패턴과 일치하는 경로가 있는 파일만 포함하는 선택적 glob 패턴입니다. 구문은 을 org.apache.hadoop.fs.GlobFilter따릅니다. 파티션 검색의 동작은 변경되지 않습니다.

> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
 {1,0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {"time":2015-08-26 00:00:00}