Função from_csv

Aplica-se a: Marque Sim Databricks SQL Marque Sim 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 com nomes de campo e tipos correspondentes à definição de esquema.

csvStr deve estar bem formado em relação ao schema e options. schema devem ser definidos como nomes de colunas separados por vírgulas e pares de tipos de dados, como usados, por exemplo CREATE TABLE, em .

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 de valores cotados onde o separador pode fazer parte do valor. Se você quiser desativar as cotações, precisará definir não null, mas uma string vazia. Esse comportamento é diferente de com.databricks.spark.csv.
  • escape (padrão \): define um único caractere usado para escapar de aspas dentro de um valor já cotado.
  • charToEscapeQuoteEscaping (padrão escape ou \0): define um único caractere usado para escapar do escape para o caractere de aspas. O valor padrão é o caractere de escape quando escape e quote 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 (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 à força aos arquivos de fonte de dados e os cabeçalhos em arquivos CSV serão ignorados. Se a opção estiver definida como false, o esquema será validado em relação a todos os cabeçalhos em arquivos CSV no caso em que a opção de cabeçalho estiver definida como true. Os nomes dos campos no esquema e os nomes das colunas nos cabeçalhos CSV são verificados pelas suas posições, tendo 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 a partir dos dados. Requer uma passagem extra sobre os dados.
  • samplingRatio (padrão 1.0): define a fração de linhas usadas para inferir esquema.
  • ignoreLeadingWhiteSpace (padrão false): um sinalizador que indica se os espaços em branco à esquerda dos valores que estão sendo lidos devem ou não ser ignorados.
  • ignoreTrailingWhiteSpace (padrão false): um sinalizador que indica se os espaços em branco à direita dos valores 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ão NaN): define a representação de cadeia de caracteres de um valor que não seja numérico.
  • positiveInf (padrão Inf): 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ão yyyy-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ã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 nos padrões 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 permitido 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 CSV lida com valores 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 aspas sem escape forem encontradas na entrada, o conteúdo analisado para o valor especificado será ignorado e o valor definido em nullValue será produzido.
    • RAISE_ERROR: Se forem encontradas cotações sem escape na entrada, um TextParsingException é lançado.
  • mode (padrão PERMISSIVE): 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 as colunas necessárias no CSV sob a remoção de colunas. Portanto, os registros corrompidos podem ser diferentes com base no conjunto obrigatório de campos. Esse comportamento pode ser controlado por spark.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 por columnNameOfCorruptRecord, e define campos malformados como nulos. Para manter registros corrompidos, um usuário pode definir um campo de tipo de cadeia de caracteres chamado columnNameOfCorruptRecord em um esquema definido pelo usuário. Se um esquema não tiver o campo, ele descartará registros corrompidos durante a análise. Um registro com menos ou mais tokens do que o esquema não é um registro corrompido para CSV. Quando ele atende a um registro com menos tokens do que o comprimento do esquema, define null como campos extras. Quando o registro tem mais tokens do que o comprimento do esquema, ele descarta tokens extras.
    • FAILFAST: lança uma exceção quando atende a registros corrompidos.
  • columnNameOfCorruptRecord (padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo com string malformada criada pelo PERMISSIVE modo. Isso substitui o spark.sql.columnNameOfCorruptRecord.
  • multiLine (padrão false): analise 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 ao analisar datas e carimbos de data/hora.
  • lineSep(padrão abrange todos , \r\r\ne \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 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}