Функция from_csv
Область применения: Databricks SQL
Databricks Runtime
Возвращает значение структуры с использованием csvStr
и schema
.
Синтаксис
from_csv(csvStr, schema [, options])
Аргументы
-
csvStr
: СТРОКОВОЕ выражение, указывающее запись в формате CSV. -
schema
: строковый (STRING) литерал или вызов функции schema_of_csv. -
options
: необязательный литерал MAP<STRING,STRING>, в котором указаны директивы.
Возвраты
STRUCT с именами полей и типами, соответствующими определению схемы.
Параметр csvStr
должен быть правильно сформирован по отношению к schema
и options
.
schema
должен быть определен как имена столбцов и типы данных, разделенные запятыми, как используется, например, в CREATE TABLE
.
Параметр options
, если он указывается, может иметь любое из следующих значений:
-
sep
(по умолчанию,
): задает разделитель для каждого поля и значения. Этот разделитель может содержать один или несколько символов. -
encoding
(по умолчанию UTF-8): декодирует CSV-файлы по указанному типу кодировки. -
quote
(по умолчанию"
): задает символ, используемый для экранирования значений в кавычках, где разделитель может быть частью значения. Если вы хотите отключить кавычки, необходимо задать не значение NULL, но пустую строку. Эта реакция на событие отличается отcom.databricks.spark.csv
. -
escape
(по умолчанию\
): задает отдельный символ, используемый для экранирования кавычек в составе значения, уже заключенного в кавычки. -
charToEscapeQuoteEscaping
(по умолчаниюescape
или\0
): задает отдельный символ, используемый для экранирования escape-символа кавычек. Значение по умолчанию — escape-символ, если символыescape
иquote
различаются, в противном случае —\0
. -
comment
(пустая строка по умолчанию): задает отдельный символ, используемый для пропуска строк, начинающихся с этого символа. По умолчанию этот параметр отключен. - заголовок (по умолчанию
false
): использует первую строку в качестве имен столбцов. -
enforceSchema
(по умолчаниюtrue
): если задано значение true, указанная или выводная схема принудительно применяется к файлам источников данных, а заголовки в CSV-файлах игнорируются. Если параметр имеет значение false, схема проверяется по всем заголовкам в CSV-файлах в случае, если для параметра заголовка задано значение true. Имена полей в схеме и имена столбцов в заголовках 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
): задает строку, которая указывает формат даты. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу date. -
timestampFormat
(по умолчаниюyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): задает строку, которая обозначает формат метки времени. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу timestamp. -
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
.
-
-
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
: необязательная стандартная маска только для включения файлов, имеющих пути в соответствии с шаблоном. Синтаксис соответствует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}