from_csv
기능
적용 대상: Databricks SQL Databricks Runtime
csvStr
및 schema
가 있는 구조체 값을 반환합니다.
구문
from_csv(csvStr, schema [, options])
인수
-
csvStr
: CSV 데이터 행을 지정하는 STRING 식입니다. -
schema
: STRING 리터럴 또는 schema_of_csv 함수의 호출입니다. -
options
: 지시문을 지정하는 선택적 MAP<STRING,STRING> 리터럴.
반품
필드 이름과 형식이 schema 정의와 일치하는 STRUCT입니다.
csvStr
은 schema
및 options
에 대해 잘 구성되어야 합니다.
schema
쉼표로 구분된 column 이름 및 데이터 형식 쌍(예: CREATE TABLE
)으로 정의해야 합니다.
options
(제공된 경우)는 다음 중 하나일 수 있습니다.
-
sep
(기본값,
): 각 필드 및 값에 대한 구분 기호를 설정합니다. 이 구분 기호는 하나 이상의 문자일 수 있습니다. -
encoding
(기본값 UTF-8): 지정된 인코딩 형식으로 CSV 파일을 디코딩합니다. -
quote
(기본"
): 구분 기호로 사용하기 위한 단일 문자를 설정합니다. valueswhere 구분 기호는 값의 일부가 될 수 있습니다. 따옴표를 끄려면 null이 아니라 빈 문자열을 set 합니다. 이 동작은com.databricks.spark.csv
와 다릅니다. -
escape
(기본값\
): 이미 인용된 값 내에서 인용 부호를 이스케이프 처리하는 데 사용되는 단일 문자를 설정합니다. -
charToEscapeQuoteEscaping
(기본값escape
또는\0
): 인용 문자의 이스케이프 처리에 사용되는 단일 문자를 설정합니다. 기본값은escape
및quote
문자가 다른 경우 이스케이프 문자이고 그렇지 않으면\0
입니다. -
comment
(기본값 빈 문자열): 이 문자로 시작하는 줄을 건너뛰는 데 사용되는 단일 문자를 설정합니다. 기본적으로 사용하지 않도록 설정되어 있습니다. - 헤더 (기본
false
): 첫 번째 줄을 columns의 이름으로 사용합니다. -
enforceSchema
(기본true
): set가 true인 경우 지정되거나 유추된 schema가 데이터 원본 파일에 강제로 적용되며, CSV 파일의 헤더는 무시됩니다. 옵션이 set에서 false일 경우, 헤더 옵션이 set에서 true일 때, schema의 유효성은 CSV 파일의 모든 헤더에 대해 확인됩니다. CSV 헤더의 schema 필드 이름과 column 이름은spark.sql.caseSensitive
를 고려하여 각각의 위치에서 확인됩니다. 기본값은 true이지만 잘못된 결과를 피하기 위해 enforceSchema 옵션을 사용하지 않도록 설정하는 것이 좋습니다. -
inferSchema
(기본false
): 입력 schema 데이터에서 자동으로 유추합니다. 데이터에 대해 하나의 추가 패스가 필요합니다. -
samplingRatio
(기본값 1.0): schema 유추에 사용되는 행의 비율을 정의합니다. -
ignoreLeadingWhiteSpace
(기본값false
): 읽고 있는 values의 선행 공백을 건너뛸지를 나타내는 플래그입니다. -
ignoreTrailingWhiteSpace
(기본false
): 읽고 있는 values의 후행 공백을 건너뛸지 여부를 나타내는 플래그입니다. -
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
): 레코드에 포함될 수 있는 columns의 수를 정한 고정된 limit를 정의합니다. -
maxCharsPerColumn
(기본값 -1): 읽고 있는 지정된 값에 허용되는 최대 문자 수를 정의합니다. 기본적으로 -1은 무제한 길이를 의미합니다. -
unescapedQuoteHandling
(기본STOP_AT_DELIMITER
): CSV 파서가 이스케이프되지 않은 따옴표로 values 처리하는 방법을 정의합니다.-
STOP_AT_CLOSING_QUOTE
: 이스케이프되지 않은 따옴표가 입력에 있는 경우 닫는 따옴표를 찾을 때까지 따옴표 문자를 누적하고 값을 따옴표로 묶은 값으로 구문 분석합니다. -
BACK_TO_DELIMITER
: 이스케이프되지 않은 따옴표가 입력에 있는 경우 값을 따옴표가 없는 값으로 간주합니다. 이렇게 하면 구분 기호를 찾을 때까지 구문 분석기가 현재 구문 분석된 값의 모든 문자를 누적합니다. 값에 구분 기호가 없으면 구분 기호 또는 줄 끝을 찾을 때까지 파서에서 입력으로부터 문자를 계속 누적합니다. -
STOP_AT_DELIMITER
: 이스케이프되지 않은 따옴표가 입력에 있는 경우 값을 따옴표가 없는 값으로 간주합니다. 이렇게 하면 입력에서 구분 기호나 줄 끝을 찾을 때까지 파서가 모든 문자를 누적합니다. -
STOP_AT_DELIMITER
: 입력에 이스케이프되지 않은 따옴표가 발견되면 지정된 값에 대해 구문 분석된 내용이 건너뛰어지고, 그 대신 set 값이nullValue
에 생성됩니다. -
RAISE_ERROR
: 입력에 이스케이프 처리되지 않은 따옴표가 있으면TextParsingException
이 throw됩니다.
-
-
mode
(기본값PERMISSIVE
): 구문 분석 중 손상된 레코드를 처리하는 모드를 허용합니다. 다음과 같은 대/소문자를 구분하지 않는 모드를 지원합니다. Spark는 column 가지 치기를 수행할 때 CSV에서 필요한 columns만을 구문 분석하려고 합니다. 따라서 필드의 필수 set에 따라 손상된 레코드가 다를 수 있습니다. 이 동작은spark.sql.csv.parser.columnPruning.enabled
에 의해 제어될 수 있습니다(기본적으로 사용하도록 설정됨).-
PERMISSIVE
: 손상된 레코드를 만나면 잘못된 형식의 문자열을columnNameOfCorruptRecord
에 의해 구성된 필드에 넣고 잘못된 형식의 필드를 null로 설정합니다. 손상된 레코드를 유지하기 위해 사용자는 사용자 정의 schema에 columnNameOfCorruptRecord라는 이름의 문자열 형식 필드를 set할 수 있습니다. schema 필드가 없으면 구문 분석 중에 손상된 레코드를 삭제합니다. 토큰 수가 schema보다 적거나 많은 레코드는 CSV에서 손상된 레코드로 간주되지 않습니다. 레코드 having가 schema길이보다 적은 토큰을 만나면, 추가 필드에 null을 설정합니다. 레코드에 schema길이보다 많은 토큰이 있는 경우 추가 토큰이 삭제됩니다. -
FAILFAST
: 손상된 레코드를 만나면 예외가 throw됩니다.
-
-
columnNameOfCorruptRecord
(기본값은spark.sql.columnNameOfCorruptRecord
에 지정된 값임):PERMISSIVE
모드에서 생성된 형식이 잘못된 문자열을 새 필드 having로 이름을 변경할 수 있게 합니다. 이는spark.sql.columnNameOfCorruptRecord
를 재정의합니다. -
multiLine
(기본값false
): 여러 줄에 걸쳐 있을 수 있는 하나의 레코드를 구문 분석합니다. -
locale
(기본값en-US
): 로캘을 IETF BCP 47 형식의 언어 태그로 설정합니다. 예를 들어 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다. -
lineSep
(기본값은 모든\r
,\r\n
및\n
에 적용됨): 구문 분석에 사용해야 하는 줄 구분자를 정의합니다. 최대 길이는 1자입니다. -
pathGlobFilter
: 패턴과 일치하는 경로가 있는 파일만 포함하는 선택적 GLOB 패턴입니다. 구문은org.apache.hadoop.fs.GlobFilter
를 따릅니다. partition 검색의 동작은 변경되지 않습니다.
예제
> 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}