Tipos de arquivos e dados suportados na computação criptográfica para o Clean Rooms - AWS Clean Rooms

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tipos de arquivos e dados suportados na computação criptográfica para o Clean Rooms

O cliente de criptografia C3R reconhece os seguintes tipos de arquivo:

  • Arquivos CSV

  • arquivos Parquet

Você pode usar o sinalizador --fileFormat no cliente de criptografia C3R para especificar explicitamente um formato de arquivo. Quando especificado explicitamente, o formato do arquivo não é determinado pela extensão do arquivo.

Arquivos CSV

Presume-se que um arquivo com extensão.csv esteja no formato CSV e contenha texto codificado em UTF-8. O cliente de criptografia C3R trata todos os valores como cadeias de caracteres.

Propriedades compatíveis em arquivos.csv

O cliente de criptografia C3R exige que os arquivos.csv tenham as seguintes propriedades:

  • Pode ou não conter uma linha de cabeçalho inicial que nomeie cada coluna de forma exclusiva.

  • Delimitado por vírgula. (Atualmente, não há suporte para delimitadores personalizados.)

  • Texto codificado em UTF-8.

Corte de espaço em branco a partir de entradas.csv

Os espaços em branco à esquerda e à direita são cortados das entradas.csv.

Codificação personalizada NULL para um arquivo.csv

Um arquivo.csv pode usar codificação personalizada NULL.

Com o cliente de criptografia C3R, você pode especificar codificações personalizadas para entradas NULL nos dados de entrada usando o sinalizador --csvInputNULLValue=<csv-input-null>. O cliente de criptografia C3R pode usar codificações personalizadas no arquivo de saída gerado para entradas NULL usando o sinalizador --csvOutputNULLValue=<csv-output-null>.

nota

Uma entrada NULL é considerada sem conteúdo, especificamente no contexto de um formato tabular mais rico, como uma tabela SQL. Embora o domínio.csv não suporte explicitamente essa caracterização por motivos históricos, é uma convenção comum considerar uma entrada vazia que contém apenas espaço em branco NULL. Portanto, esse é o comportamento padrão do cliente de criptografia C3R e pode ser personalizado conforme necessário.

Como as entradas.csv são interpretadas pelo C3R

A tabela a seguir fornece exemplos de como as entradas.csv são organizadas (cleartext a cleartext para maior clareza) com base nos valores (se houver) fornecidos para os sinalizadores --csvInputNULLValue=<csv-input-null> e --csvOutputNULLValue=<csv-output-null>. Os espaços em branco à esquerda e à direita fora das aspas são cortados antes que o C3R interprete o significado de qualquer valor.

<csv-input-null> <csv-output-null> Entrada Saída
Nenhum Nenhum ,AnyProduct, ,AnyProduct,
Nenhum Nenhum , AnyProduct , ,AnyProduct,
Nenhum Nenhum ,"AnyProduct", ,AnyProduct,
Nenhum Nenhum , "AnyProduct" , ,AnyProduct,
Nenhum Nenhum ,, ,,
Nenhum Nenhum , , ,,
Nenhum Nenhum ,"", ,,
Nenhum Nenhum ," ", ," ",
Nenhum Nenhum , " " , ," ",
"AnyProduct" "NULL" ,AnyProduct, ,NULL,
"AnyProduct" "NULL" , AnyProduct , ,NULL,
"AnyProduct" "NULL" ,"AnyProduct", ,NULL,
"AnyProduct" "NULL" , "AnyProduct" , ,NULL,
Nenhum "NULL" ,, ,NULL,
Nenhum "NULL" , , ,NULL,
Nenhum "NULL" ,"", ,NULL,
Nenhum "NULL" ," ", ," ",
Nenhum "NULL" , " " , ," ",
"" "NULL" ,, ,NULL,
"" "NULL" , , ,NULL,
"" "NULL" ,"", ,"",
"" "NULL" ," ", ," ",
"" "NULL" , " " , ," ",
"\"\"" "NULL" ,, ,,
"\"\"" "NULL" , , ,,
"\"\"" "NULL" ,"", ,NULL,
"\"\"" "NULL" ," ", ," ",
"\"\"" "NULL" , " " , ," ",

Arquivo CSV sem cabeçalhos

O arquivo.csv de origem não precisa ter cabeçalhos na primeira linha que nomeiem cada coluna de forma exclusiva. No entanto, um arquivo.csv sem uma linha de cabeçalho requer um esquema de criptografia posicional. O esquema de criptografia posicional é necessário em vez do esquema mapeado típico usado para arquivos.csv com uma linha de cabeçalho e arquivos Parquet.

Um esquema de criptografia posicional especifica as colunas de saída por posição em vez de por nome. Um esquema de criptografia mapeado mapeia os nomes das colunas de origem para os nomes das colunas de destino. Para obter mais informações, incluindo uma discussão detalhada e exemplos dos dois formatos de esquema, consulte Esquemas de tabelas mapeadas e posicionais.

arquivos Parquet

Presume-se que um arquivo com uma extensão .parquet esteja no formato Apache Parquet.

Tipos de dados compatíveis Parquet

O cliente de criptografia C3R pode processar qualquer dado não complexo (ou seja, tipo primitivo) em um arquivo Parquet que represente um tipo de dados suportado pelo AWS Clean Rooms.

No entanto, somente colunas de string podem ser usadas para colunas sealed.

Os seguintes tipos de dados Parquet são compatíveis:

  • Tipo primitivo Binary com as seguintes anotações lógicas:

    • Nenhum se --parquetBinaryAsString estiver definido (tipo de dados STRING)

    • Decimal(scale, precision) (tipo de dadosDECIMAL)

    • String (tipo de dados STRING)

  • Tipo de dados primitivo Boolean sem anotação lógica (tipo de dados BOOLEAN)

  • Tipo de dados primitivo Double sem anotação lógica (tipo de dados DOUBLE)

  • Tipo de dados primitivo Fixed_Len_Binary_Array com anotação lógica Decimal(scale, precision) (tipo de dados DECIMAL)

  • Tipo de dados primitivo Float sem anotação lógica (tipo de dados FLOAT)

  • Tipo de dados primitivo Int32 com as seguintes anotações lógicas:

    • Nenhum (tipo de dados INT)

    • Date (tipo de dados DATE)

    • Decimal(scale, precision) (tipo de dados DECIMAL)

    • Int(16, true) (tipo de dados SMALLINT)

    • Int(32, true) (tipo de dados INT)

  • Tipo de dados primitivo Int64 com as seguintes anotações lógicas:

    • Nenhum (tipo de dados BIGINT)

    • Decimal(scale, precision) (tipo de dados DECIMAL)

    • Int(64, true) (tipo de dados BIGINT)

    • Timestamp(isUTCAdjusted, TimeUnit.MILLIS) (tipo de dados TIMESTAMP)

    • Timestamp(isUTCAdjusted, TimeUnit.MICROS) (tipo de dados TIMESTAMP)

    • Timestamp(isUTCAdjusted, TimeUnit.NANOS) (tipo de dados TIMESTAMP)

Criptografar valores que não sejam de string

Atualmente, somente valores de string são compatíveis com as colunas sealed.

Para arquivos.csv, o cliente de criptografia C3R trata todos os valores como texto codificado em UTF-8 e não faz nenhuma tentativa de interpretá-los de forma diferente antes da criptografia.

Para colunas de impressão digital, os tipos são agrupados em classes de equivalência. Uma classe de equivalência é um conjunto de tipos de dados que podem ser comparados de forma inequívoca em termos de igualdade por meio de um tipo de dados representativo.

As classes de equivalência permitem que impressões digitais idênticas sejam atribuídas ao mesmo valor semântico, independentemente da representação original. No entanto, o mesmo valor em duas classes de equivalência não resultará na mesma coluna de impressão digital.

Por exemplo, o valor INTEGRAL 42 receberá a mesma impressão digital, independentemente de ser originalmente um SMALLINT, INT ou BIGINT. Além disso, o valor INTEGRAL 0 nunca corresponderá ao valor BOOLEAN FALSE (que é representado pelo valor 0).

As seguintes classes de equivalência e AWS Clean Rooms os tipos de dados correspondentes são suportados por colunas de impressão digital:

Classe de equivalência Tipos de dados AWS Clean Rooms compatíveis
BOOLEAN BOOLEAN
DATE DATE
INTEGRAL BIGINT, INT, SMALLINT
STRING CHAR, STRING, VARCHAR