Função from_csv
Aplica-se a: Databricks SQL Databricks Runtime
Retorna um valor struct com o csvStr
e schema
.
Sintaxe
from_csv(csvStr, schema [, options])
Argumentos
-
csvStr
: Uma expressão STRING especificando uma linha de dados CSV. -
schema
: Um literal STRING ou invocação de schema_of_csv função. -
options
: Um opcional MAP<STRING,STRING> literal especificando diretivas.
Devoluções
Um STRUCT cujos nomes de campo e tipos correspondem à definição de schema.
csvStr
deve estar bem formado em relação ao schema
e options
.
schema
deve ser definido como pares de nome column e tipo de dados separados por vírgula, como usado, por exemplo, no CREATE TABLE
.
options
, se fornecido, pode ser qualquer um dos seguintes:
-
sep
(padrão,
): define um separador para cada campo e valor. Este separador pode ter um ou mais caracteres. -
encoding
(UTF-8 padrão): decodifica os arquivos CSV pelo tipo de codificação especificado. -
quote
("
padrão): define um único caractere usado para escapar entre aspas valueswhere o separador pode fazer parte do valor. Se pretender desativar as cotações, precisa definir set como uma string vazia em vez de nulo. Esse comportamento é diferente decom.databricks.spark.csv
. -
escape
(padrão\
): define um único caractere usado para escapar de aspas dentro de um valor já cotado. -
charToEscapeQuoteEscaping
(padrãoescape
ou\0
): define um único caractere usado para escapar do escape para o caractere de aspas. O valor padrão é o caractere de escape quandoescape
equote
os caracteres são diferentes,\0
caso contrário. -
comment
(cadeia de caracteres vazia padrão): define um único caractere usado para pular linhas que começam com esse caractere. Por padrão, ele está desativado. - cabeçalho (
false
padrão): usa a primeira linha como nomes de columns. -
enforceSchema
(true
padrão): Se set for verdadeiro, o schema especificado ou inferido é aplicado forçadamente aos ficheiros da fonte de dados, e os cabeçalhos nos ficheiros CSV são ignorados. Se a opção for set a false, o schema será validado em relação a todos os cabeçalhos dos arquivos CSV, caso a opção de cabeçalho esteja a set true. Os nomes de campo nos cabeçalhos CSV, schema e column, são verificados pelas suas posições tendo em contaspark.sql.caseSensitive
. Embora o valor padrão seja true, é recomendável desabilitar a opção enforceSchema para evitar resultados incorretos. -
inferSchema
(false
padrão): infere o schema de entrada automaticamente a partir dos dados. Requer uma passagem extra sobre os dados. -
samplingRatio
(padrão 1.0): define a fração de linhas usadas para inferência schema. -
ignoreLeadingWhiteSpace
(false
padrão): um sinalizador que indica se os espaços em branco à esquerda de values que estão sendo lidos devem ou não ser ignorados. -
ignoreTrailingWhiteSpace
(false
por padrão): um indicador que indica se os espaços em branco à direita de values que estão sendo lidos devem ou não ser ignorados. -
nullValue
(cadeia de caracteres vazia padrão): define a representação de cadeia de caracteres de um valor nulo. -
emptyValue
(cadeia de caracteres vazia padrão): define a representação de cadeia de caracteres de um valor vazio. -
nanValue
(padrãoNaN
): define a representação de cadeia de caracteres de um valor que não seja numérico. -
positiveInf
(padrãoInf
): define a representação de cadeia de caracteres de um valor infinito positivo. -
negativeInf
(padrão-Inf)
: define a representação de cadeia de caracteres de um valor infinito negativo. -
dateFormat
(padrãoyyyy-MM-dd
): define a cadeia de caracteres que indica um formato de data. Os formatos de data personalizados seguem os formatos nos padrões Datetime. Isto aplica-se ao tipo de data. -
timestampFormat
(padrãoyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): define a cadeia de caracteres que indica um formato de carimbo de data/hora. Os formatos de data personalizados seguem os formatos nos padrões Datetime. Isso se aplica ao tipo de carimbo de data/hora. -
maxColumns
(20480
padrão): define uma limit rígida de quantos columns um registro pode ter. -
maxCharsPerColumn
(padrão -1): define o número máximo de caracteres permitido para qualquer valor especificado que está sendo lido. Por padrão, é -1, o que significa comprimento ilimitado -
unescapedQuoteHandling
(STOP_AT_DELIMITER
padrão): define como o analisador CSV lida com values com aspas sem escape.-
STOP_AT_CLOSING_QUOTE
: Se forem encontradas cotações sem escape na entrada, acumule o caractere de cotação e prossiga analisando o valor como um valor cotado, até que uma cotação de fechamento seja encontrada. -
BACK_TO_DELIMITER
: Se forem encontradas cotações sem escape na entrada, considere o valor como um valor não cotado. Isso fará com que o analisador acumule todos os caracteres do valor analisado atual até que o delimitador seja encontrado. Se nenhum delimitador for encontrado no valor, o analisador continuará acumulando caracteres da entrada até que um delimitador ou terminação de linha seja encontrado. -
STOP_AT_DELIMITER
: Se forem encontradas cotações sem escape na entrada, considere o valor como um valor não cotado. Isso fará com que o analisador acumule todos os caracteres até que o delimitador ou uma terminação de linha seja encontrada na entrada. -
STOP_AT_DELIMITER
: Se forem encontradas aspas sem escape na entrada, o conteúdo analisado para o valor especificado será ignorado e o valor set emnullValue
será produzido. -
RAISE_ERROR
: Se forem encontradas cotações sem escape na entrada, umTextParsingException
é lançado.
-
-
mode
(padrãoPERMISSIVE
): permite um modo para lidar com registros corrompidos durante a análise. Ele suporta os seguintes modos que não diferenciam maiúsculas de minúsculas. O Spark tenta analisar apenas os columns necessários no CSV sob column poda. Portanto, os registros corrompidos podem ser diferentes com base na set obrigatória de campos. Esse comportamento pode ser controlado porspark.sql.csv.parser.columnPruning.enabled
(ativado por padrão).-
PERMISSIVE
: quando ele atende a um registro corrompido, coloca a cadeia de caracteres malformada em um campo configurado porcolumnNameOfCorruptRecord
, e define campos malformados como nulos. Para preservar registos corrompidos, o utilizador pode set um campo do tipo string chamado columnNameOfCorruptRecord num schemadefinido pelo utilizador. Se um schema não tiver o campo, ele descartará registros corrompidos durante a análise. Um registro com menos ou mais tokens do que schema não é um registro corrompido para CSV. Quando encontra um registo com having menos tokens do que o comprimento de schema, atribui nulo aos campos extra. Quando o registro tem mais tokens do que o comprimento do schema, ele solta tokens extras. -
FAILFAST
: lança uma exceção quando atende a registros corrompidos.
-
-
columnNameOfCorruptRecord
(o padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord
): permite renomear o novo campo having, cadeia de caracteres malformada que foi criada pelo modoPERMISSIVE
. Isso substitui ospark.sql.columnNameOfCorruptRecord
. -
multiLine
(padrãofalse
): analise um registro, que pode abranger várias linhas. -
locale
(padrãoen-US
): define uma localidade como marca de idioma no formato IETF BCP 47. Por exemplo, isso é usado ao analisar datas e carimbos de data/hora. -
lineSep
(padrão abrange todos ,\r
\r\n
e\n
): define o separador de linha que deve ser usado para análise. O comprimento máximo é de 1 caractere. -
pathGlobFilter
: um padrão glob opcional para incluir apenas arquivos com caminhos correspondentes ao padrão. A sintaxe segueorg.apache.hadoop.fs.GlobFilter
. Não altera o comportamento da descoberta de partition.
Exemplos
> 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}