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 datosSTRING
) -
Decimal(scale, precision)
(tipo de datosDECIMAL
) -
String
(tipo de datosSTRING
)
-
-
Tipo de datos primitivo
Boolean
sin anotación lógica (tipo de datosBOOLEAN
) -
Tipo de datos primitivo
Double
sin anotación lógica (tipo de datosDOUBLE
) -
Tipo primitivo
Fixed_Len_Binary_Array
con anotación lógicaDecimal(scale, precision)
(tipo de datosDECIMAL
) -
Tipo de datos primitivo
Float
sin anotación lógica (tipo de datosFLOAT
) -
Tipo primitivo
Int32
con las siguientes anotaciones lógicas:-
Ninguna (tipo de datos
INT
) -
Date
(tipo de datosDATE
) -
Decimal(scale, precision)
(tipo de datosDECIMAL
) -
Int(16, true)
(tipo de datosSMALLINT
) -
Int(32, true)
(tipo de datosINT
)
-
-
Tipo de datos primitivo
Int64
con las siguientes anotaciones lógicas:-
Ninguna (tipo de datos
BIGINT
) -
Decimal(scale, precision)
(tipo de datosDECIMAL
) -
Int(64, true)
(tipo de datosBIGINT
) -
Timestamp(isUTCAdjusted, TimeUnit.MILLIS)
(tipo de datosTIMESTAMP
) -
Timestamp(isUTCAdjusted, TimeUnit.MICROS)
(tipo de datosTIMESTAMP
) -
Timestamp(isUTCAdjusted, TimeUnit.NANOS)
(tipo de datosTIMESTAMP
)
-
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 |