Función from_csv

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Devuelve un valor de estructura con csvStr y schema.

Sintaxis

from_csv(csvStr, schema [, options])

Argumentos

  • csvStr: expresión STRING que especifica una fila de datos CSV.
  • schema: literal STRING o invocación de la función schema_of_csv.
  • options: literal MAP<STRING,STRING> opcional que especifica directivas.

Devoluciones

Una expresión STRUCT con nombres de campo y tipos que coinciden con la definición de esquema.

csvStr debe tener un formato correcto con respecto a schema y options. schema se debe definir como pares de nombre de columna y tipo de datos separados por comas, como se usa en CREATE TABLE, por ejemplo.

options, si se proporciona, puede ser cualquiera de los valores siguientes:

  • sep (valor ,predeterminado): establece un separador para cada campo y valor. Este separador puede tener uno o varios caracteres.
  • encoding (UTF-8 predeterminado): descodifica los archivos CSV según el tipo de codificación especificado.
  • quote (valor " predeterminado): establece un carácter único que se usa para el escape de valores entre comillas donde el separador puede formar parte del valor. Si desea desactivar las expresiones de código delimitadas, no debe establecer NULL, sino una cadena vacía. Este comportamiento es diferente de com.databricks.spark.csv.
  • escape (valor predeterminado \): establece un carácter único que se usa para el escape de comillas dentro de un valor ya entrecomillado.
  • charToEscapeQuoteEscaping (valor escape o \0 predeterminado): establece un carácter único que se usa para el escape del escape del carácter de comillas. El valor predeterminado es el carácter de escape cuando los caracteres escape y quote son diferentes; de lo contrario, es \0.
  • comment (cadena vacía predeterminada): establece un carácter único que se usa para la omisión de líneas que empiezan con este carácter. De forma predeterminada, está deshabilitado.
  • header (valor false predeterminado): usa la primera línea como nombres de columnas.
  • enforceSchema (valor truepredeterminado): si se establece en true, el esquema especificado o inferido se aplica a la fuerza a archivos de orígenes de datos y se omiten los encabezados de los archivos CSV. Si la opción se establece en false, el esquema se valida con todos los encabezados de los archivos CSV cuando la opción de encabezado se establece en true. Los nombres de campo del esquema y los nombres de columna de los encabezados CSV se comprueban por sus posiciones teniendo en cuenta spark.sql.caseSensitive. Aunque el valor predeterminado es true, se recomienda deshabilitar la opción enforceSchema para evitar resultados incorrectos.
  • inferSchema (valor falsepredeterminado): deduce automáticamente el esquema de entrada de los datos. Requiere un paso adicional sobre los datos.
  • samplingRatio (versión 1.0 predeterminada): define la fracción de filas que se usan para la inferencia de esquemas.
  • ignoreLeadingWhiteSpace (valor falsepredeterminado): marca que indica si se deben omitir o no los espacios en blanco iniciales de los valores que se leen.
  • ignoreTrailingWhiteSpace (valor falsepredeterminado): marca que indica si se deben omitir o no los espacios en blanco finales de los valores que se leen.
  • nullValue (cadena vacía predeterminada): establece la representación de cadena de un valor NULL.
  • emptyValue (cadena vacía predeterminada): establece la representación de cadena de un valor vacío.
  • nanValue (valor NaNpredeterminado): establece la representación de cadena de un valor no numérico.
  • positiveInf (valor Infpredeterminado): establece la representación de cadena de un valor de infinito positivo.
  • negativeInf (valor -Inf)predeterminado): establece la representación de cadena de un valor de infinito negativo.
  • dateFormat (valor predeterminado yyyy-MM-dd): establece la cadena que indica un formato de fecha. Los formatos de fecha personalizados siguen los formatos de Patrones de fecha y hora. Esto se aplica al tipo de fecha.
  • timestampFormat (valor yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]predeterminado): establece la cadena que indica un formato de marca de tiempo. Los formatos de fecha personalizados siguen los formatos de Patrones de fecha y hora. Esto se aplica al tipo timestamp.
  • maxColumns (valor 20480predeterminado): define un límite máximo de cuántas columnas puede tener un registro.
  • maxCharsPerColumn (valor predeterminado -1): define el número máximo de caracteres permitido para cualquier valor especificado que se lea. De forma predeterminada, es -1, lo que significa una longitud ilimitada
  • unescapedQuoteHandling (valor STOP_AT_DELIMITERpredeterminado): define cómo controla el analizador de CSV los valores con comillas sin escape.
    • STOP_AT_CLOSING_QUOTE: si se encuentran comillas sin escape en la entrada, acumulará la comilla y procederá a analizar el valor como un valor entrecomillado, hasta que se encuentren comillas de cierre.
    • BACK_TO_DELIMITER: si se encontrasen comillas sin escape en la entrada, considere el valor como un valor sin comillas. Esto hará que el analizador acumule todos los caracteres del valor analizado actual hasta que se encuentre el delimitador. Si no se encuentra ningún delimitador en el valor, el analizador seguirá acumulando caracteres de la entrada hasta que se encuentre un delimitador o un final de línea.
    • STOP_AT_DELIMITER: si se encontrasen comillas sin escape en la entrada, considere el valor como un valor sin comillas. Esto hará que el analizador acumule todos los caracteres hasta que se encuentre el delimitador o un final de línea en la entrada.
    • STOP_AT_DELIMITER: si se encuentran comillas sin escape en la entrada, se omitirá el contenido analizado para el valor especificado y, en su lugar, se generará el valor establecido en nullValue.
    • RAISE_ERROR: si se encuentran comillas sin escape en la entrada, se iniciará una excepción TextParsingException.
  • mode (valor predeterminado PERMISSIVE): permite un modo para controlar los registros dañados durante el análisis. Admite los siguientes modos que no distinguen mayúsculas de minúsculas. Spark intenta analizar solo las columnas necesarias en CSV que son objeto de eliminación. Por lo tanto, los registros dañados pueden ser diferentes en función del conjunto de campos necesario. Este comportamiento se puede controlar mediante spark.sql.csv.parser.columnPruning.enabled (habilitado de forma predeterminada).
    • PERMISSIVE: cuando detecta un registro dañado, coloca la cadena con formato incorrecto en un campo configurado por columnNameOfCorruptRecord y establece en NULL los campos con formato incorrecto. Para mantener los registros dañados, un usuario puede establecer un campo de tipo de cadena denominado columnNameOfCorruptRecord en un esquema definido por el usuario. Si un esquema no tiene el campo, quita los registros dañados durante el análisis. Un registro con menos o más tokens que el esquema no es un registro dañado en CSV. Cuando detecta un registro que tiene menos tokens que la longitud del esquema, establece NULL en campos adicionales. Cuando el registro tiene más tokens que la longitud del esquema, quita tokens adicionales.
    • FAILFAST: inicia una excepción cuando detecta registros dañados.
  • columnNameOfCorruptRecord (el valor predeterminado es el especificado en spark.sql.columnNameOfCorruptRecord): permite cambiar el nombre del nuevo campo con una cadena con formato incorrecto creada por el modo PERMISSIVE. Esto invalida spark.sql.columnNameOfCorruptRecord.
  • multiLine (valor false predeterminado): analiza un registro, que puede abarcar varias líneas.
  • locale (valor en-US predeterminado): establece una configuración regional como etiqueta de idioma en formato IETF BCP 47. Por ejemplo, esto se usa al analizar fechas y marcas de tiempo.
  • lineSep (el valor predeterminado abarca \r, \r\n y \n): define el separador de líneas que se debe usar para el análisis. La longitud máxima es de 1 carácter.
  • pathGlobFilter: patrón global para incluir solo archivos con rutas de acceso que coincidan con el patrón. La sintaxis sigue org.apache.hadoop.fs.GlobFilter. No cambia el comportamiento de la detección de particiones.

Ejemplos

> 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}