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 de cadeia ou invocação da função schema_of_csv.
  • options: Um opcional MAP<STRING,STRING> literal especificando diretivas.

Devoluções

Um STRUCT com nomes de campos e tipos que correspondem à definição do esquema.

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

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 carácter usado para escapar dos valores entre aspas, onde o separador pode fazer parte do valor. Se quiseres desligar as aspas, tens de definir não nulo, mas sim uma cadeia 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 nome das colunas.
  • enforceSchema (padrão true): Se for definido como verdadeiro, o esquema especificado ou inferido é aplicado à força a ficheiros fonte de dados, e os cabeçalhos nos ficheiros CSV são ignorados. Se a opção estiver definida como falsa, o esquema é validado contra todos os cabeçalhos nos ficheiros CSV caso a opção do cabeçalho esteja definida como verdadeira. 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 automaticamente o esquema de entrada a partir dos dados. Requer uma passagem extra sobre os dados.
  • samplingRatio (padrão 1.0): define fração de linhas usadas para inferir esquemas.
  • ignoreLeadingWhiteSpace (por defeito false): um indicador que indica se os espaços em branco iniciais dos valores a serem lidos devem ou não ser ignorados.
  • ignoreTrailingWhiteSpace (por defeito false): um indicador que indica se os espaços em branco finais dos valores que estão a ser lidos devem 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 registo 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 parser CSV trata valores com aspas não escapadas.
    • 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 citações não escapadas na entrada, o conteúdo analisado para o valor especificado é omitido e o valor inserido em nullValue é produzido em seu lugar.
    • 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 procura analisar apenas as colunas necessárias em arquivos CSV sob eliminação de colunas. Portanto, registos corrompidos podem ser diferentes consoante o conjunto de campos necessários. 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 registos corrompidos, um utilizador pode definir um campo de tipo string chamado columnNameOfCorruptRecord num esquema definido pelo utilizador. Se um esquema não tiver o campo, ele descartará registros corrompidos durante a análise. Um registo com menos ou mais tokens do que o esquema não é um registo corrompido para CSV. Quando encontra um registo com menos tokens do que o comprimento do esquema, define null para campos extra. Quando o registo tem mais tokens do que o comprimento do esquema, descarta os tokens excedentes.
    • 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 a string malformada 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 partições.

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}