Partilhar via


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 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 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 (falsepadrão): usa a primeira linha como nomes de columns.
  • enforceSchema (truepadrã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 conta spark.sql.caseSensitive. Embora o valor padrão seja true, é recomendável desabilitar a opção enforceSchema para evitar resultados incorretos.
  • inferSchema (falsepadrã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 (falsepadrã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 (falsepor 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ã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 (20480padrã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_DELIMITERpadrã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 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 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 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 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 em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo having, cadeia de caracteres malformada que foi criada pelo modo PERMISSIVE. 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. 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}