다음을 통해 공유


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입니다.

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

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

  • sep(기본값 ,): 각 필드 및 값에 대한 구분 기호를 설정합니다. 이 구분 기호는 하나 이상의 문자일 수 있습니다.
  • encoding(기본값 UTF-8): 지정된 인코딩 형식으로 CSV 파일을 디코딩합니다.
  • quote(기본 "): 구분 기호가 값의 일부가 될 수 있는 따옴표 붙은 값을 이스케이프하는 데 사용되는 단일 문자를 설정합니다. 따옴표를 끄려면 null이 아니라 빈 문자열을 설정해야 합니다. 이 동작은 com.databricks.spark.csv와 다릅니다.
  • escape(기본값 \): 이미 인용된 값 내에서 인용 부호를 이스케이프 처리하는 데 사용되는 단일 문자를 설정합니다.
  • charToEscapeQuoteEscaping(기본값 escape 또는 \0): 인용 문자의 이스케이프 처리에 사용되는 단일 문자를 설정합니다. 기본값은 escapequote 문자가 다른 경우 이스케이프 문자이고 그렇지 않으면 \0입니다.
  • comment(기본값 빈 문자열): 이 문자로 시작하는 줄을 건너뛰는 데 사용되는 단일 문자를 설정합니다. 기본적으로 사용하지 않도록 설정되어 있습니다.
  • header(기본 false): 첫 번째 줄을 열 이름으로 사용합니다.
  • enforceSchema(기본 true): true로 설정되면 지정되거나 유추된 스키마가 데이터 원본 파일에 강제로 적용되고 CSV 파일의 헤더는 무시됩니다. 이 옵션을 false로 설정하면 헤더 옵션이 true로 설정된 경우 CSV 파일의 모든 헤더에 대해 스키마의 유효성이 검사됩니다. spark.sql.caseSensitive을 고려하여 스키마의 필드 이름과 CSV 헤더의 열 이름은 해당 위치에서 확인됩니다. 기본값은 true이지만 잘못된 결과를 피하기 위해 enforceSchema 옵션을 사용하지 않도록 설정하는 것이 좋습니다.
  • inferSchema(기본 false): 데이터에서 입력 스키마를 자동으로 유추합니다. 데이터에 대해 하나의 추가 패스가 필요합니다.
  • samplingRatio(기본값 1.0): 스키마 유추에 사용되는 행의 비율을 정의합니다.
  • ignoreLeadingWhiteSpace(기본 false): 읽는 값의 선행 공백을 건너뛸지 여부를 나타내는 플래그입니다.
  • ignoreTrailingWhiteSpace(기본 false): 읽는 값의 후행 공백을 건너뛸지 여부를 나타내는 플래그입니다.
  • nullValue(기본값 빈 문자열): null 값의 문자열 표현을 설정합니다.
  • emptyValue(기본값 빈 문자열): 빈 값의 문자열 표현을 설정합니다.
  • nanValue(기본값 NaN): 숫자가 아닌 값의 문자열 표현을 설정합니다.
  • positiveInf(기본값 Inf): 양의 무한대 값의 문자열 표현을 설정합니다.
  • negativeInf(기본값 -Inf): 음의 무한대 값의 문자열 표현을 설정합니다.
  • dateFormat(기본값 yyyy-MM-dd): 날짜 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 날짜 형식에 적용됩니다.
  • timestampFormat(기본값 yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): 타임스탬프 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 타임스탬프 형식에 적용됩니다.
  • 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: 손상된 레코드를 만나면 예외가 발생합니다.
  • columnNameOfCorruptRecord(기본값은 spark.sql.columnNameOfCorruptRecord에 지정된 값입니다): PERMISSIVE 모드에서 생성된 형식 오류 문자열이 있는 새 필드의 이름을 변경할 수 있습니다. 이는 spark.sql.columnNameOfCorruptRecord를 재정의합니다.
  • multiLine(기본값 false): 여러 줄에 걸쳐 있을 수 있는 하나의 레코드를 구문 분석합니다.
  • locale(기본값 en-US): 로캘을 IETF BCP 47 형식의 언어 태그로 설정합니다. 예를 들어 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다.
  • 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}