

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tipos de archivo y de datos admitidos en computación criptográfica para Clean Rooms
<a name="crypto-computing-file-types"></a>

El cliente de cifrado de C3R reconoce los siguientes tipos de archivo: 
+ Archivos CSV
+ Archivos de Parquet

Puede utilizar el indicador `--fileFormat` del cliente de cifrado de C3R para especificar un formato de archivo de forma explícita. Cuando se especifica de forma explícita, el formato de archivo no viene determinado por la extensión del archivo.

**Topics**
+ [Archivos CSV](#csv-file-type)
+ [Archivos de Parquet](#parquet-file-type)
+ [Cifrar valores que no son de cadena](#encrypt-non-string-values)

## Archivos CSV
<a name="csv-file-type"></a>

Se presupone que un archivo con la extensión .csv tiene formato CSV y contiene texto codificado en UTF-8. El cliente de cifrado de C3R trata todos los valores como cadenas.

### Propiedades admitidas en los archivos .csv
<a name="csv-properties"></a>

El cliente de cifrado de C3R requiere que los archivos .csv tengan las siguientes propiedades:
+ Puede contener o no una fila de encabezado inicial que designe de manera exclusiva cada columna.
+ Delimitado por comas. (actualmente no se admiten delimitadores personalizados).
+ Texto codificado en UTF-8.

#### Recorte de espacios en blanco de las entradas .csv
<a name="whitespace-trimming"></a>

Los espacios en blanco iniciales y finales se recortan de las entradas .csv.

#### Codificación NULL personalizada para un archivo .csv
<a name="custom-null-encoding"></a>

Un archivo .csv puede utilizar una codificación personalizada NULL.

Con el cliente de cifrado de C3R, puede especificar codificaciones personalizadas para las entradas NULL de los datos de entrada utilizando el indicador `--csvInputNULLValue=<csv-input-null>`. El cliente de cifrado de C3R puede usar codificaciones personalizadas en el archivo de salida generado para las entradas NULL utilizando el indicador `--csvOutputNULLValue=<csv-output-null>`.

**nota**  
Una entrada NULL se considera *carente* de contenido, especialmente en el contexto de un formato tabular más enriquecido, como una tabla SQL. Aunque el formato .csv no admite explícitamente esta caracterización por razones históricas, es una convención habitual considerar que una entrada vacía que contiene solo espacios en blanco es NULL. Por lo tanto, ese es el comportamiento predeterminado del cliente de cifrado de C3R, y se puede personalizar según sea necesario.

### ¿Cómo interpreta C3R las entradas .csv?
<a name="interpretation-csv-entries"></a>

La siguiente tabla proporciona ejemplos de cómo se serializan las entradas .csv (de cleartext a cleartext, para mayor claridad) en función de los valores (si los hay) que se proporcionan para los indicadores `--csvInputNULLValue=<csv-input-null>` y `--csvOutputNULLValue=<csv-output-null>`. Los espacios en blanco iniciales y finales fuera de las comillas se recortan antes de que C3R interprete el significado de cualquier valor.


| `<csv-input-null>` | `<csv-output-null>` | Entrada de entrada | Entrada de salida | 
| --- |--- |--- |--- |
| Ninguno | Ninguna | ,AnyProduct, | ,AnyProduct, | 
| Ninguna | Ninguna | , AnyProduct , | ,AnyProduct, | 
| Ninguna | Ninguna | ,"AnyProduct", | ,AnyProduct, | 
| Ninguna | Ninguna | , "AnyProduct" , | ,AnyProduct, | 
| Ninguna | Ninguna | ,, | ,, | 
| Ninguna | Ninguna | , , | ,, | 
| Ninguna | Ninguna | ,"", | ,, | 
| Ninguna | Ninguna | ," ", | ," ", | 
| Ninguna | Ninguna | , " " , | ," ", | 
| "AnyProduct" | "NULL" | ,AnyProduct, | ,NULL, | 
| "AnyProduct" | "NULL" | , AnyProduct , | ,NULL, | 
| "AnyProduct" | "NULL" | ,"AnyProduct", | ,NULL, | 
| "AnyProduct" | "NULL" | , "AnyProduct" , | ,NULL, | 
| Ninguna | "NULL" | ,, | ,NULL, | 
| Ninguna | "NULL" | , , | ,NULL, | 
| Ninguna | "NULL" | ,"", | ,NULL, | 
| Ninguna | "NULL" | ," ", | ," ", | 
| Ninguno | "NULL" | , " " , | ," ", | 
| "" | "NULL" | ,, | ,NULL, | 
| "" | "NULL" | , , | ,NULL, | 
| "" | "NULL" | ,"", | ,"", | 
| "" | "NULL" | ," ", | ," ", | 
| "" | "NULL" | , " " , | ," ", | 
| "\\"\\"" | "NULL" | ,, | ,, | 
| "\\"\\"" | "NULL" | , , | ,, | 
| "\\"\\"" | "NULL" | ,"", | ,NULL, | 
| "\\"\\"" | "NULL" | ," ", | ," ", | 
| "\\"\\"" | "NULL" | , " " , | ," ", | 

### Archivo CSV sin encabezados
<a name="csv-file-no-headers"></a>

No es necesario que el archivo .csv de origen tenga encabezados en la primera fila que asignen un nombre exclusivo a cada columna. Sin embargo, un archivo .csv sin una fila de encabezados requiere un esquema de cifrado posicional. Se requiere el esquema de cifrado posicional en lugar del esquema mapeado típico que se usa tanto para los archivos .csv con una fila de encabezado como para los archivos de Parquet.

Un esquema de cifrado posicional especifica las columnas de salida por posición en lugar de por nombre. Un esquema de cifrado mapeado asigna los nombres de columnas de origen a nombres de columnas de destino. Para obtener más información, incluida una explicación detallada y ejemplos de ambos formatos de esquema, consulte [Esquemas de tablas mapeados y posicionales](create-schema.md#mapped-and-positional-schemas).

## Archivos de Parquet
<a name="parquet-file-type"></a>

Se presupone que un archivo con la extensión .parquet tiene formato de Apache Parquet.

### Tipos de datos Parquet admitidos
<a name="supported-parquet-data-types"></a>

El cliente de cifrado de C3R puede procesar cualquier dato no complejo (es decir, de tipo primitivo) de un archivo Parquet que corresponda a un tipo de datos admitido por AWS Clean Rooms. 

Sin embargo, en las columnas sealed solo se pueden usar columnas de cadena.

Se admiten los siguientes tipos de datos de Parquet:
+ Tipo primitivo `Binary` con las siguientes anotaciones lógicas:
  + Ninguno si `--parquetBinaryAsString` está definido (tipo de datos `STRING`)
  + `Decimal(scale, precision)` (tipo de datos `DECIMAL`)
  + `String` (tipo de datos `STRING`)
+ Tipo de datos primitivo `Boolean` sin anotación lógica (tipo de datos `BOOLEAN`)
+ Tipo de datos primitivo `Double` sin anotación lógica (tipo de datos `DOUBLE`)
+ Tipo primitivo `Fixed_Len_Binary_Array` con anotación lógica `Decimal(scale, precision)` (tipo de datos `DECIMAL`)
+ Tipo de datos primitivo `Float` sin anotación lógica (tipo de datos `FLOAT`)
+ Tipo primitivo `Int32` con las siguientes anotaciones lógicas:
  + Ninguna (tipo de datos `INT`)
  + `Date` (tipo de datos `DATE`)
  + `Decimal(scale, precision)` (tipo de datos `DECIMAL`)
  + `Int(16, true)` (tipo de datos `SMALLINT`)
  + `Int(32, true)` (tipo de datos `INT`)
+ Tipo de datos primitivo `Int64` con las siguientes anotaciones lógicas:
  + Ninguna (tipo de datos `BIGINT`)
  + `Decimal(scale, precision)` (tipo de datos `DECIMAL`)
  + `Int(64, true)` (tipo de datos `BIGINT`)
  + `Timestamp(isUTCAdjusted, TimeUnit.MILLIS)` (tipo de datos `TIMESTAMP`)
  + `Timestamp(isUTCAdjusted, TimeUnit.MICROS)` (tipo de datos `TIMESTAMP`)
  + `Timestamp(isUTCAdjusted, TimeUnit.NANOS)` (tipo de datos `TIMESTAMP`)

## Cifrar valores que no son de cadena
<a name="encrypt-non-string-values"></a>

Actualmente, solo se admiten valores de cadena en las columnas sealed. 

En el caso de los archivos .csv, el cliente de cifrado de C3R trata todos los valores como texto codificado en UTF-8 y no intenta interpretarlos de forma diferente antes del cifrado. 

En el caso de las columnas de huella digital, los tipos se agrupan en clases de equivalencia. Una clase de equivalencia es un conjunto de tipos de datos que se pueden comparar de forma inequívoca para determinar su igualdad mediante un tipo de datos representativo.

Las clases de equivalencia permiten asignar huellas dactilares idénticas al mismo valor semántico independientemente de la representación original. Sin embargo, el mismo valor en dos clases de equivalencia no dará como resultado la misma columna de huella digital.

Por ejemplo, al valor `INTEGRAL` `42` se le asignará la misma huella digital independientemente de si originalmente era `SMALLINT`, `INT` o `BIGINT`. Además, el valor `INTEGRAL` `0` nunca coincidirá con el valor `BOOLEAN` `FALSE` (que se representa mediante el valor `0`).

Las columnas de huellas digitales admiten las siguientes clases de equivalencia y los tipos de AWS Clean Rooms datos correspondientes:


| Clase de equivalencia | Tipo de datos AWS Clean Rooms admitido | 
| --- | --- | 
| BOOLEAN | BOOLEAN | 
| DATE | DATE | 
| INTEGRAL | BIGINT, INT, SMALLINT | 
|  STRING | CHAR, STRING, VARCHAR | 