Parámetros de formato de datos - Amazon Redshift

Parámetros de formato de datos

De manera predeterminada, el comando COPY espera que los datos de origen estén en texto UTF-8 delimitado por caracteres. El delimitador predeterminado es el carácter de barra vertical ( | ). Si los datos de origen están en otro formato, utilice los siguientes parámetros para especificar el formato de datos:

Además de los formatos de datos estándar, COPY admite los siguientes formatos de datos en columnas para COPY de Amazon S3:

Existen ciertas restricciones para poder usar el comando COPY con el formato de columnas. Para obtener más información, consulte Uso de COPY con formatos de datos de columnas.

Parámetros de formato de datos
FORMAT [AS]

(Opcional) Identifica palabras clave de los formatos de datos. Los argumentos FORMAT se describen a continuación.

CSV [ QUOTE [AS] 'quote_character' ]

Permite el uso del formato CSV en los datos de entrada. Para aplicar escape de forma automática a los delimitadores, los caracteres de línea nueva y los retornos de carro, encierre el campo con el carácter especificado por el parámetro QUOTE. El carácter de comilla predeterminado es el de comilla doble ( " ). Cuando utilice el carácter de comilla dentro del campo, aplique escape al carácter con un carácter de comilla adicional. Por ejemplo, si los caracteres de comillas son comillas dobles, para insertar la cadena A "quoted" word, el archivo de entrada debe incluir la cadena "A ""quoted"" word". Cuando se utiliza el parámetro CSV, el delimitador predeterminado es una coma ( , ). Puede especificar un delimitador diferente con el parámetro DELIMITER.

Cuando se encierra un campo entre comillas, se ignora el espacio en blanco entre los delimitadores y los caracteres de comillas. Si el delimitador es un carácter de espacio en blanco, como un tabulador, el delimitador no se trata como un espacio en blanco.

CSV no puede utilizarse con FIXEDWIDTH, REMOVEQUOTES ni ESCAPE.

QUOTE [AS] 'quote_character'

Opcional. Especifica el carácter que se utilizará como carácter de comilla cuando se utilice el parámetro CSV. El carácter predeterminado es una comilla doble ( " ). Si utiliza el parámetro QUOTE para definir un carácter de comilla distinto al de comilla doble, no es necesario que aplique escape a las comillas dobles dentro del campo. El parámetro QUOTE solo puede utilizarse con el parámetro CSV. La palabra clave AS es opcional.

DELIMITER [AS] ['delimiter_char']

Especifica el carácter ASCII único que se utiliza para separar campos en el archivo de entrada, como un carácter de barra vertical ( | ), una coma ( , ) o una tabulación ( \t ). Se admiten los caracteres ASCII no imprimibles. Los caracteres ASCII también pueden representarse con el sistema octal, mediante el formato '\ddd', donde 'd' es un dígito octal (de 0 a 7). El delimitador predeterminado es un carácter de barra vertical ( | ), a menos que se utilice el parámetro CSV, en cuyo caso el delimitador predeterminado es una coma ( , ). La palabra clave AS es opcional. DELIMITER no se puede utilizar con FIXEDWIDTH.

FIXEDWIDTH 'fixedwidth_spec'

Carga los datos de un archivo en el que el ancho de cada columna tiene una longitud fija, en lugar de que las columnas estén separadas por un delimitador. La cadena fixedwidth_spec (especificación_de_ancho_fijo) especifica una etiqueta de columnas definida por el usuario y el ancho de columnas. La etiqueta de columnas puede ser una cadena de texto o un número entero, según lo que decida el usuario. La etiqueta de columnas no tiene relación con el nombre de las columnas. El orden de los pares etiqueta/ancho debe coincidir con el orden de las columnas de la tabla de forma exacta. FIXEDWIDTH no se puede utilizar con CSV ni DELIMITER. En Amazon Redshift, la longitud de las columnas CHAR y VARCHAR se expresa en bytes, por lo que debe asegurarse de que el ancho de la columna que especifique se adapte a la longitud binaria de caracteres multibyte cuando prepare el archivo que se cargará. Para obtener más información, consulte Tipos de caracteres.

A continuación, se muestra el formato para fixedwidth_spec:

'colLabel1:colWidth1,colLabel:colWidth2, ...'
SHAPEFILE [ SIMPLIFY [AUTO] ['tolerance'] ]

Permite el uso del formato SHAPEFILE en los datos de entrada. De manera predeterminada, la primera columna del shapefile es una columna GEOMETRY o IDENTITY. Todas las columnas posteriores tienen el orden especificado en el shapefile.

SHAPEFILE no puede utilizarse con FIXEDWIDTH, REMOVEQUOTES ni ESCAPE.

Para utilizar objetos GEOGRAPHY con COPY FROM SHAPEFILE, primero captúrelos en una columna GEOMETRY y, a continuación, convierta los objetos en objetos GEOGRAPHY.

SIMPLIFY [tolerance]

(Opcional) Simplifica toda la geometría durante el proceso de ingesta mediante el algoritmo de Ramer-Douglas-Peucker y la tolerancia dada.

SIMPLIFY AUTO [tolerance]

(Opcional) Simplifica solo la geometría que sea más grandes que el tamaño máximo de geometría. Esta simplificación utiliza el algoritmo de Ramer-Douglas-Peucker y la tolerancia calculada de forma automática si no supera la tolerancia especificada. Este algoritmo calcula el tamaño para almacenar objetos en el marco de la tolerancia especificada. El valor tolerance es opcional.

Para ver ejemplos de carga de shapefiles, consulte Carga de un shapefile en Amazon Redshift.

AVRO [AS] 'avro_option'

Especifica que los datos de origen estén en formato de Avro.

El formato de Avro se admite para COPY de estos servicios y protocolos:

  • Amazon S3

  • Amazon EMR

  • Hosts remotos (SSH)

Avro no es compatible con COPY de DynamoDB.

Avro es un protocolo de serialización de datos. Un archivo de origen Avro incluye un esquema que define la estructura de los datos. El tipo de esquema de Avro debe ser record. COPY acepta archivos Avro creados mediante el códec predeterminado sin comprimir como también los códecs de compresión deflate y snappy. Para obtener más información acerca de Avro, visite Apache Avro.

Los valores válidos para avro_option son los siguientes:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

El valor predeterminado es 'auto'.

COPY asigna de forma automática los elementos de datos en los datos de origen Avro a las columnas de la tabla de destino. Logra esto al hacer coincidir los nombres de los campos del esquema de Avro con los nombres de las columnas de la tabla de destino. La coincidencia distingue entre letras mayúsculas y minúsculas en 'auto', y no distingue entre letras mayúsculas y minúsculas en 'auto ignorecase'.

Los nombres de las columnas de las tablas de Amazon Redshift están siempre en minúsculas; por lo tanto, cuando utilice la opción 'auto', los nombres de campos coincidentes también deben estar en minúsculas. Si los nombres de los campos no están en minúsculas por completo, puede utilizar la opción 'auto ignorecase'. Con el argumento predeterminado 'auto', COPY solo reconoce el primer nivel de campos o los campos externos de la estructura.

Para asignar explícitamente nombres de columnas a nombres de campos de Avro, puede utilizar Archivo JSONPaths.

De manera predeterminada, COPY intenta hacer coincidir todas las columnas de la tabla de destino con los nombres de campos de Avro. Si lo desea, puede especificar una lista de columnas para cargar un subconjunto de las columnas. Si una columna de la tabla de destino se omite de la lista de columnas, COPY carga la expresión DEFAULT de la columna de destino. Si la columna de destino no tiene un valor predeterminado, COPY intenta cargar NULL. Si se incluye una columna en la lista de columnas y COPY no encuentra un campo coincidente en los datos Avro, COPY intenta cargar NULL en la columna.

Si COPY prueba asignar NULL a una columna que está definida como NOT NULL, el comando COPY falla.

Esquema de Avro

Un archivo de datos de origen Avro incluye un esquema que define la estructura de los datos. COPY lee el esquema que forma parte del archivo de datos de origen Avro para asignar elementos de datos a las columnas de la tabla de destino. En el siguiente ejemplo, se muestra un esquema de Avro.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }

El esquema de Avro se define mediante el formato JSON. El objeto JSON de nivel superior contiene tres pares de nombre-valor con los nombres o las claves: "name", "type" y "fields".

Los pares de claves "fields" con una matriz de objetos que define el nombre y el tipo de datos de cada campo en la estructura de datos. De manera predeterminada, COPY automáticamente hace coincidir los nombres de los campos con los nombres de las columnas. Los nombres de las columnas están siempre en minúsculas, por lo que los nombres de los campos coincidentes también deben estar en minúsculas, a menos que se especifique la opción ‘auto ignorecase’. Cualquier nombre de campo que no coincida con el nombre de una columna se ignora. El orden no es importante. En el ejemplo anterior, COPY asigna id, guid, name y address a los nombres de columnas.

Con el argumento predeterminado 'auto', COPY hace coincidir con las columnas solo los objetos de primer nivel. Para asignar a niveles más profundos en el esquema, o si los nombres de los campos y los de las columnas no coinciden, utilice un archivo JSONPaths para definir el mapeo. Para obtener más información, consulte Archivo JSONPaths.

Si el valor asociado a una clave es un tipo complejo de datos Avro, como byte, matriz, registro, mapeo o enlace, COPY carga el valor como una cadena. Aquí, la cadena es la representación JSON de los datos. COPY carga los tipos de datos enum de Avro como cadenas, donde el contenido es el nombre del tipo. Para ver un ejemplo, consulte COPY de formato JSON.

El tamaño máximo del encabezado del archivo de Avro, incluidos el esquema y los metadatos del archivo, es de 1 MB.  

El tamaño máximo de un solo bloque de datos de Avro es de 4 MB. Este es distinto al tamaño máximo de filas. Si se supera el tamaño máximo de un bloque de datos de Avro individual, aunque el tamaño de filas obtenido sea menor al límite de tamaño de filas de 4 MB, el comando COPY falla.

Cuando se calcula el tamaño de las filas, Amazon Redshift cuenta de forma interna los caracteres de barra vertical ( | ) dos veces. Si los datos de entrada contienen un número muy grande de caracteres de barra vertical, es posible que el tamaño de filas supere los 4 MB, aunque el bloque de datos sea menor a 4 MB.

JSON [AS] 'json_option (opción_json)'

Los datos de origen están en formato JSON.

El formato JSON se admite para COPY de estos servicios y protocolos:

  • Amazon S3

  • COPY de Amazon EMR

  • COPY de SSH

JSON no es compatible con COPY de DynamoDB.

Los valores válidos para json_option son los siguientes:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

  • 'noshred'

El valor predeterminado es 'auto'. Amazon Redshift no fragmenta los atributos de las estructuras JSON en varias columnas mientras carga un documento JSON.

De manera predeterminada, COPY intenta hacer coincidir todas las columnas de la tabla de destino con las claves de nombres de campos JSON. Si lo desea, puede especificar una lista de columnas para cargar un subconjunto de las columnas. Si las claves de los nombres de campos JSON no están en minúsculas por completo, puede utilizar la opción 'auto ignorecase' o Archivo JSONPaths para asignar de forma explícita los nombres de las columnas a las claves de los nombres de campos JSON.

Si una columna de la tabla de destino se omite de la lista de columnas, COPY carga la expresión DEFAULT de la columna de destino. Si la columna de destino no tiene un valor predeterminado, COPY intenta cargar NULL. Si se incluye una columna en la lista de columnas y COPY no encuentra un campo coincidente entre los datos JSON, COPY intenta cargar NULL en la columna.

Si COPY prueba asignar NULL a una columna que está definida como NOT NULL, el comando COPY falla.

COPY asigna los elementos de datos en los datos de origen JSON a las columnas de la tabla de destino. Logra esto al hacer coincidir las claves de objetos, o los nombres, en los pares de nombre-valor de origen con los nombres de las columnas de la tabla de destino.

Consulte los siguientes detalles acerca de cada valor json_option:

'auto'

Con esta opción, para la coincidencia, se distingue letras entre mayúsculas y minúsculas. Los nombres de las columnas de las tablas de Amazon Redshift están siempre en minúsculas; por lo tanto, cuando utilice la opción 'auto', los nombres de campos JSON coincidentes también deben estar en minúsculas.

'auto ignorecase'

Con esta opción, para la coincidencia, no se distingue letras entre mayúsculas y minúsculas. Los nombres de las columnas de las tablas de Amazon Redshift están siempre en minúsculas; por lo tanto, cuando utilice la opción 'auto ignorecase', los nombres de campos JSON correspondientes pueden estar en mayúsculas, en minúsculas o en mayúsculas y minúsculas combinadas.

's3://jsonpaths_file'

Con esta opción, COPY utiliza el archivo JSONPaths mencionado para asignar los elementos de datos en los datos de origen JSON a las columnas de la tabla de destino. El argumento s3://jsonpaths_file debe ser una clave de objeto de Amazon S3 que referencie de forma explícita un solo archivo. Un ejemplo es 's3://mybucket/jsonpaths.txt. El argumento no puede ser un prefijo de clave. Para obtener más información acerca del uso de un archivo JSONPaths, consulte Archivo JSONPaths.

En algunos casos, el archivo especificado por jsonpaths_file tiene el mismo prefijo que la ruta especificada por copy_from_s3_objectpath para los archivos de datos. En tal caso, COPY lee el archivo JSONPaths como un archivo de datos y devuelve errores. Por ejemplo, supongamos que los archivos de datos utilizan la ruta de objeto s3://mybucket/my_data.json, y el archivo JSONPaths es s3://mybucket/my_data.jsonpaths. En este caso, COPY intenta cargar my_data.jsonpaths como un archivo de datos.

'noshred'

Con esta opción, Amazon Redshift no fragmenta los atributos de las estructuras JSON en varias columnas mientras carga un documento JSON.

Archivo de datos JSON

El archivo de datos JSON contiene un conjunto de objetos o matrices. COPY carga cada objeto o matriz JSON en una fila de la tabla de destino. Cada objeto o matriz correspondiente a una fila debe ser una estructura independiente en el nivel raíz, es decir, no debe ser miembro de otra estructura JSON.

Un objeto JSON comienza y termina con llaves ( { } ), y contiene una colección de pares de nombre-valor desordenada. Cada valor y nombre de los pares están separados por dos puntos y los pares están separados por comas. De manera predeterminada, la clave de objeto, o el nombre, en los pares de nombre-valor debe coincidir con el nombre de la columna correspondiente en la tabla. Los nombres de las columnas de las tablas de Amazon Redshift están siempre en minúsculas; por lo tanto, las claves de los nombres de los campos JSON coincidentes también deben estar en minúsculas. Si los nombres de las columnas y las claves JSON no coinciden, utilice Archivo JSONPaths para asignar de forma explícita las columnas a las claves.

El orden de los objetos JSON no importa. Cualquier nombre que no coincida con el nombre de una columna se ignora. A continuación, se muestra la estructura de un objeto JSON simple.

{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }

Una matriz JSON comienza y termina con corchetes ( [ ] ) y contiene una colección ordenada de valores separados por comas. Si los archivos de datos utilizan matrices, debe especificar un archivo JSONPaths para hacer coincidir los valores con las columnas. A continuación, se muestra la estructura de una matriz JSON simple.

["value1", value2]

El JSON debe tener un formato correcto. Por ejemplo, los objetos o las matrices no pueden separarse con comas o cualquier otro carácter, a excepción de un espacio en blanco. Las cadenas se deben encerrar entre caracteres de comilla doble. Los caracteres de comillas deben ser las comillas comunes (0x22), no las inclinadas ni las "inteligentes".

El tamaño máximo de un objeto o matriz JSON individual, incluidas las llaves o los corchetes, es de 4 MB. Este es distinto al tamaño máximo de filas. Si se supera el tamaño máximo de un objeto o matriz JSON individual, aunque el tamaño de filas obtenido sea menor al límite de tamaño de filas de 4 MB, el comando COPY falla.

Cuando se calcula el tamaño de las filas, Amazon Redshift cuenta de forma interna los caracteres de barra vertical ( | ) dos veces. Si los datos de entrada contienen un número muy grande de caracteres de barra vertical, es posible que el tamaño de filas supere los 4 MB, aunque el tamaño del objeto sea menor a 4 MB.

COPY carga \n como un carácter de línea nueva y \t como un tabulador. Para cargar una barra oblicua inversa, aplique escape con una barra oblicua inversa ( \\ ).

COPY busca el origen de JSON especificado para obtener un objeto o matriz JSON válido con un formato correcto. Si COPY encuentra caracteres que no sean de espacios en blanco antes de localizar una estructura JSON utilizable o entre objetos o matrices JSON válidos, COPY devuelve un error para cada instancia. Estos errores cuentan para el recuento de errores MAXERROR. Cuando el recuento de errores iguala o supera MAXERROR, COPY falla.

Por cada error, Amazon Redshift registra una fila en la tabla de sistema STL_LOAD_ERRORS. La columna LINE_NUMBER registra la última línea del objeto JSON que provocó el error.

Si se especifica IGNOREHEADER, COPY ignora el número de líneas especificado en los datos JSON. Los caracteres de línea nueva en los datos JSON siempre se cuentan para los cálculos IGNOREHEADER.

De manera predeterminada, COPY carga las cadenas vacías como campos vacíos. Si se especifica EMPTYASNULL, COPY carga las cadenas vacías para los campos CHAR y VARCHAR como NULL. Las cadenas vacías para otros tipos de datos, como INT, siempre se cargan con NULL.

Las siguientes opciones no son compatibles con JSON:

  • CSV

  • DELIMITER

  • ESCAPE

  • FILLRECORD

  • FIXEDWIDTH

  • IGNOREBLANKLINES

  • NULL AS

  • READRATIO

  • REMOVEQUOTES

Para obtener más información, consulte COPY de formato JSON. Para obtener más información acerca de las estructuras de datos JSON, visite www.json.org.

Archivo JSONPaths

Si el usuario carga datos de origen Avro o en formato JSON, de manera predeterminada, COPY asigna los elementos de datos de primer nivel en los datos de origen a las columnas de la tabla de destino. Logra esto al hacer coincidir cada nombre, o clave de objeto, en un par de nombre-valor con el nombre de una columna de la tabla de destino.

Si los nombres de las columnas y las claves de objeto no coinciden, o si desea asignar a niveles más profundos en la jerarquía de datos, puede utilizar un archivo JSONPaths para asignar de forma explícita elementos de datos JSON o de Avro a las columnas. El archivo JSONPaths asigna los elementos de datos JSON a las columnas haciendo coincidir el orden de columnas en la lista de columnas o tabla de destino.

El archivo JSONPaths debe contener solo un objeto JSON (no una matriz). El objeto JSON es un par de nombre-valor. La clave de objeto, que es el nombre del par de nombre-valor, debe ser "jsonpaths". El valor del par de nombre-valor es una matriz de expresiones JSONPath. Cada expresión JSONPath hace referencia a un elemento individual en la jerarquía de datos JSON o el esquema de Avro, de forma parecida al modo en que una expresión XPath hace referencia a los elementos de un documento XML. Para obtener más información, consulte Expresiones JSONPath.

Para utilizar un archivo JSONPaths, agregue la palabra clave AVRO o JSON al comando COPY. Especifique el nombre del bucket de S3 y la ruta de objeto del archivo JSONPaths con el siguiente formato.

COPY tablename FROM 'data_source' CREDENTIALS 'credentials-args' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';

El valor s3://jsonpaths_file debe ser una clave de objeto de Amazon S3 que referencie de forma explícita un solo archivo, como 's3://mybucket/jsonpaths.txt'. No puede ser un prefijo de clave.

En algunos casos, si la carga se realiza desde Amazon S3, el archivo especificado por jsonpaths_file tiene el mismo prefijo que la ruta especificada por copy_from_s3_objectpath para los archivos de datos. En tal caso, COPY lee el archivo JSONPaths como un archivo de datos y devuelve errores. Por ejemplo, supongamos que los archivos de datos utilizan la ruta de objeto s3://mybucket/my_data.json, y el archivo JSONPaths es s3://mybucket/my_data.jsonpaths. En este caso, COPY intenta cargar my_data.jsonpaths como un archivo de datos.

Si el nombre de clave es una cadena distinta de "jsonpaths", el comando COPY no devuelve un error, pero omite jsonpaths_file y utiliza el argumento 'auto' en su lugar.

Si sucede alguna de las siguientes situaciones, el comando COPY falla:

  • El JSON tiene un formato incorrecto.

  • Existe más de un objeto JSON.

  • Algún carácter a excepción del espacio en blanco existe fuera del objeto.

  • Un elemento de la matriz es una cadena vacía o no es una cadena.

MAXERROR no se aplica al archivo JSONPaths.

El archivo JSONPaths no debe cifrarse aunque la opción ENCRYPTED esté especificada.

Para obtener más información, consulte COPY de formato JSON.

Expresiones JSONPath

El archivo JSONPaths utiliza expresiones JSONPath para asignar los campos de datos a las columnas de destino. Cada expresión JSONPath corresponde a una columna de la tabla de destino de Amazon Redshift. El orden de los elementos de la matriz JSONPath debe coincidir con el orden de las columnas de la tabla de destino o de la lista de columnas, si se utiliza una.

Se requieren caracteres de comillas dobles, como se muestra, para los valores y los nombres de campo. Las comillas deben ser las comillas simples (0x22), no las comillas inclinadas o “inteligentes”.

Si un elemento de objeto indicado por una expresión JSONPath no se encuentra en los datos JSON, COPY intenta cargar un valor NULL. Si el objeto indicado tiene un formato incorrecto, COPY devuelve un error de carga.

Si un elemento de la matriz al que se hace referencia en la expresión JSONPath no se encuentra en los datos de Avro o JSON, COPY registra el siguiente error: Invalid JSONPath format: Not an array or index out of range. Elimine de JSONPaths todos los elementos de la matriz que no existan en los datos de origen y verifique que las matrices de los datos de origen tienen el formato correcto. 

Las expresiones JSONPath pueden utilizar notaciones con corchetes o con puntos, pero las notaciones no se pueden combinar. En el siguiente ejemplo, se muestran expresiones JSONPath que utilizan la notación con corchetes.

{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }

En el siguiente ejemplo, se muestran expresiones JSONPath que utilizan la notación con puntos.

{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }

En el contexto de la sintaxis de COPY de Amazon Redshift, una expresión JSONPath debe especificar la ruta explícita a un elemento de nombre único en una estructura de datos jerárquica de Avro o JSON. Amazon Redshift no admite ningún elemento de JSONPath, como caracteres comodín o expresiones de filtro, que pueda resolverse como una ruta ambigua o como varios elementos de nombre.

Para obtener más información, consulte COPY de formato JSON.

Uso de JSONPaths con datos de Avro

En el siguiente ejemplo, se muestra un esquema de Avro con varios niveles.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "isActive", "type": "boolean"}, {"name": "age", "type": "int"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}, {"name": "latitude", "type": "double"}, {"name": "longitude", "type": "double"}, { "name": "tags", "type": { "type" : "array", "name" : "inner_tags", "items" : "string" } }, { "name": "friends", "type": { "type" : "array", "name" : "inner_friends", "items" : { "name" : "friends_record", "type" : "record", "fields" : [ {"name" : "id", "type" : "int"}, {"name" : "name", "type" : "string"} ] } } }, {"name": "randomArrayItem", "type": "string"} ] }

En el siguiente ejemplo, se muestra un archivo JSONPaths que utiliza las expresiones AvroPath para hacer referencia al esquema anterior.

{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }

El ejemplo de JSONPaths incluye los siguientes elementos:

jsonpaths

El nombre del objeto JSON que contiene las expresiones AvroPath.

[ … ]

Los corchetes encierran la matriz JSON que contiene los elementos de la ruta.

$

El símbolo de dólar hace referencia al elemento raíz en el esquema de Avro, que es la matriz "fields".

"$.id",

El destino de la expresión AvroPath. En esta instancia, el destino es el elemento de la matriz "fields" con el nombre "id". Las expresiones están separadas por comas.

"$.friends[0].id"

Los corchetes indican un índice de matriz. Las expresiones JSONPath utilizan una indexación de base cero, por lo que esta expresión hace referencia al primer elemento de la matriz "friends" con el nombre "id".

La sintaxis del esquema de Avro requiere el uso de campos internos para definir la estructura de registro y los tipos de datos de matriz. Las expresiones AvroPath ignoran los campos internos. Por ejemplo, el campo "friends" define una matriz denominada "inner_friends", que a su vez define un registro denominado "friends_record". La expresión AvroPath que hace referencia al campo "id" puede ignorar los campos adicionales para hacer referencia directamente al campo de destino. Las siguientes expresiones AvroPath hacen referencia a los dos campos que pertenecen a la matriz "friends".

"$.friends[0].id" "$.friends[0].name"

Parámetros de formatos de datos en columnas

Además de los formatos de datos estándar, COPY admite los siguientes formatos de datos en columnas para COPY de Amazon S3. Existen ciertas restricciones para poder usar el comando COPY con el formato de columnas. Para obtener más información, consulte Uso de COPY con formatos de datos de columnas.

ORC

Carga los datos desde un archivo que utiliza el formato Optimized Row Columnar (ORC).

PARQUET

Carga los datos desde un archivo que utiliza el formato Parquet.