Tipos de archivo y de datos admitidos en computación criptográfica para Clean Rooms - AWS Clean Rooms

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

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.

Archivos CSV

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

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

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

Codificación NULL personalizada para un archivo .csv

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?

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
Ninguna 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" ," ", ," ",
Ninguna "NULL" , " " , ," ",
"" "NULL" ,, ,NULL,
"" "NULL" , , ,NULL,
"" "NULL" ,"", ,"",
"" "NULL" ," ", ," ",
"" "NULL" , " " , ," ",
"\"\"" "NULL" ,, ,,
"\"\"" "NULL" , , ,,
"\"\"" "NULL" ,"", ,NULL,
"\"\"" "NULL" ," ", ," ",
"\"\"" "NULL" , " " , ," ",

Archivo CSV sin encabezados

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.

Archivos de Parquet

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

Tipos de datos Parquet admitidos

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

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