Share via


Função from_csv

Aplica-se a:marca de seleção positiva Databricks SQL marca de seleção positiva Databricks Runtime

Retorna um valor de struct com csvStr e schema.

Sintaxe

from_csv(csvStr, schema [, options])

Argumentos

  • csvStr: uma expressão de STRING que especifica uma linha de dados CSV.
  • schema: um literal de cadeia de caracteres ou uma invocação da schema_of_csv function.
  • options: um literal de MAP<STRING,STRING> opcional que especifica diretivas.

Retornos

Um STRUCT com nomes de campo e tipos correspondentes à definição de esquema.

csvStr deve ser bem formado em relação ao e schema ao options. schema precisa ser definido como pares de tipo de dados e nome de coluna separados por vírgula, como usado, por exemplo, em CREATE TABLE.

options, se fornecido, pode ser um dos seguintes:

  • sep (padrão ,): define um separador para cada campo e valor. Esse separador pode ser um ou mais caracteres.
  • encoding (padrão UTF-8): decodifica os arquivos CSV pelo tipo de codificação especificado.
  • quote (padrão "): define um único caractere usado para escapar valores entre aspas em que o separador pode ser parte do valor. Se você quiser desativar as aspas, será necessário definir uma cadeia de caracteres vazia e não nula. Esse comportamento é diferente de com.databricks.spark.csv.
  • escape (padrão \): define um único caractere usado para escape de aspas dentro de um valor já entre aspas.
  • charToEscapeQuoteEscaping (padrão escape ou \0): define um único caractere usado para escapar o escape para o caractere de aspas. O valor padrão é caractere de escape quando os caracteres escape e quote são diferentes, caso contrário, \0.
  • comment (cadeia de caracteres vazia padrão): define um único caractere usado para ignorar linhas que começam com este caractere. Por padrão, ela fica desabilitada.
  • cabeçalho (padrão false): usa a primeira linha como nomes de colunas.
  • enforceSchema (padrão true): se for definido como true, o esquema especificado ou inferido será aplicado de modo forçado aos arquivos DataSource e os cabeçalhos nos arquivos CSV serão ignorados. Se a opção for definida como false, o esquema será validado em relação a todos os cabeçalhos nos arquivos CSV, caso a opção de cabeçalho seja definida como true. Os nomes de campos nos nomes de esquema e coluna em cabeçalhos CSV são verificados por suas posições levando em conta spark.sql.caseSensitive. Embora o valor padrão seja true, é recomendável desabilitar a opção enforceSchema para evitar resultados incorretos.
  • inferSchema (padrão false): infere o esquema de entrada automaticamente dos dados. Requer uma passagem extra sobre os dados.
  • samplingRatio (padrão 1.0): define a fração de linhas usadas para inferir o esquema.
  • ignoreLeadingWhiteSpace (padrão false): um sinalizador que indica se os espaços em branco à esquerda de valores que estão sendo lidos devem ser ignorados.
  • ignoreTrailingWhiteSpace (padrão false): um sinalizador que indica se os espaços em branco à direita de valores que estão sendo lidos devem ser ignorados.
  • nullValue (cadeia de caracteres vazia padrão): define a representação da cadeia de caracteres de um valor nulo.
  • emptyValue (cadeia de caracteres vazia padrão): define a representação da cadeia de caracteres de um valor vazio.
  • nanValue (padrão NaN): define a representação da cadeia de caracteres de um valor não numérico.
  • positiveInf (padrão Inf): define a representação da cadeia de caracteres de um valor infinito positivo.
  • negativeInf (padrão -Inf)): define a representação da cadeia de caracteres de um valor infinito negativo.
  • dateFormat (padrão yyyy-MM-dd): define a cadeia de caracteres que indica um formato de data. Os formatos de data personalizados seguem os formatos dos padrões de datetime. Isso se aplica ao tipo de data.
  • timestampFormat (padrão yyyy-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 dos padrões de datetime. Isso se aplica ao tipo de carimbo de data/hora.
  • maxColumns (padrão 20480): define um limite rígido de quantas colunas um registro pode ter.
  • maxCharsPerColumn (padrão -1): define o número máximo de caracteres permitidos para qualquer valor especificado que está sendo lido. Por padrão, é -1, o que significa comprimento ilimitado
  • unescapedQuoteHandling (padrão STOP_AT_DELIMITER): define como o analisador de CSV lida com valores com aspas sem escape.
    • STOP_AT_CLOSING_QUOTE: se aspas sem escape forem encontradas na entrada, acumular o caractere de aspas e continuar analisando o valor como um valor entre aspas, até que uma aspa de fechamento seja encontrada.
    • BACK_TO_DELIMITER: se forem encontradas aspas sem escape na entrada, considere o valor como um valor sem aspas. Isso fará com que o analisador acumule todos os caracteres do valor atual analisado 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 uma terminação de linha seja encontrada.
    • STOP_AT_DELIMITER: se forem encontradas aspas sem escape na entrada, considere o valor como um valor sem aspas. 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 aspas sem escape forem encontradas na entrada, o conteúdo analisado do valor especificado será ignorado e o valor definido em nullValue será gerado em seu lugar.
    • RAISE_ERROR: se forem encontradas aspas sem escape na entrada, um TextParsingException será lançado.
  • mode (padrão PERMISSIVE): permite um modo para lidar com registros corrompidos durante a análise. Ele dá suporte aos seguintes modos que não fazem diferenciação de maiúsculas e minúsculas. O Spark tenta analisar apenas as colunas obrigatórias no CSV na remoção de coluna. Portanto, os registros corrompidos podem ser diferentes com base no conjunto de campos necessários. Esse comportamento pode ser controlado pelo spark.sql.csv.parser.columnPruning.enabled (habilitado por padrão).
    • PERMISSIVE: quando ele encontra um registro corrompido, coloca a cadeia de caracteres malformada em um campo configurado por columnNameOfCorruptRecord e define os campos malformados como nulos. Para manter os registros corrompidos, um usuário pode definir um campo do tipo cadeia de caracteres chamado columnNameOfCorruptRecord em um esquema definido pelo usuário. Se o esquema não tiver o campo, ele removerá os registros corrompidos durante a análise. Um registro com menos ou mais tokens do que o esquema não é um registro corrompido em CSV. Quando encontra um registro com menos tokens do que o comprimento do esquema, define como nulo para campos extras. Quando o registro tem mais tokens do que o comprimento do esquema, ele descarta os tokens extras.
    • FAILFAST: gera uma exceção quando encontra registros corrompidos.
  • columnNameOfCorruptRecord (o padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo que tem uma cadeia de caracteres malformada criada pelo modo PERMISSIVE. Isso substitui spark.sql.columnNameOfCorruptRecord.
  • multiLine (padrão false): analisar um registro, que pode abranger várias linhas.
  • locale (padrão en-US): define uma localidade como marca de idioma no formato IETF BCP 47. Por exemplo, isso é usado durante a análise de datas e de carimbos de data/hora.
  • lineSep (o 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 um caractere.
  • pathGlobFilter: um padrão glob opcional para incluir apenas os arquivos com caminhos correspondentes ao padrão. A sintaxe segue org.apache.hadoop.fs.GlobFilter. Ele não altera o comportamento da descoberta de partição.

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}