本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Clean Rooms 加密计算中支持的文件和数据类型
C3R 加密客户端可识别以下文件类型:
-
CSV 文件
-
Parquet 文件
您可以在 C3R 加密客户端中使用 --fileFormat
标志来明确指定文件格式。如果明确指定,则文件格式不取决于文件扩展名。
CSV 文件
假定扩展名为 .csv 的文件采用 CSV 格式并包含 UTF-8 编码的文本。C3R 加密客户端将所有值视为字符串。
.csv 文件中支持的属性
C3R 加密客户端要求 .csv 文件具有以下属性:
-
可能包含也可能不包含唯一命名每列的初始标题行。
-
逗号分隔。(目前,不支持自定义分隔符。)
-
UTF-8 编码的文本。
从 .csv 条目中修剪空格
.csv 条目中的前导和尾部空格都会被修剪。
.csv 文件的自定义 NULL 编码
.csv 文件可以使用自定义 NULL 编码。
使用 C3R 加密客户端,您可以使用 --csvInputNULLValue=<csv-input-null>
标志为输入数据中的 NULL 条目指定自定义编码。通过使用 --csvOutputNULLValue=<csv-output-null>
标志,C3R 加密客户端可以在生成的输出文件中为 NULL 条目使用自定义编码。
注意
NULL 条目被认为缺少 内容,特别是在 SQL 表等更丰富的表格格式的上下文中。尽管由于历史原因 .csv 并不明确支持这种描述,但通常的惯例是将仅包含空格的空条目视为 NULL。因此,这是 C3R 加密客户端的默认行为,可以根据需要对其进行自定义。
C3R 如何解释 .csv 条目
下表举例说明了如何根据为 --csvInputNULLValue=<csv-input-null>
和 --csvOutputNULLValue=<csv-output-null>
标志提供的值(如果有)编组 .csv 条目(为清楚起见,cleartext 至 cleartext)。在 C3R 解释任何值的含义之前,将修剪引号之外的前导和尾部空格。
<csv-input-null> |
<csv-output-null> |
输入条目 | 输出条目 |
---|---|---|---|
无 | 无 | ,AnyProduct, |
,AnyProduct, |
无 | 无 | , AnyProduct , |
,AnyProduct, |
无 | 无 | ,"AnyProduct", |
,AnyProduct, |
无 | 无 | , "AnyProduct" , |
,AnyProduct, |
无 | 无 | ,, |
,, |
无 | 无 | , , |
,, |
无 | 无 | ,"", |
,, |
无 | 无 | ," ", |
," ", |
无 | 无 | , " " , |
," ", |
"AnyProduct" |
"NULL" |
,AnyProduct, |
,NULL, |
"AnyProduct" |
"NULL" |
, AnyProduct , |
,NULL, |
"AnyProduct" |
"NULL" |
,"AnyProduct", |
,NULL, |
"AnyProduct" |
"NULL" |
, "AnyProduct" , |
,NULL, |
无 | "NULL" |
,, |
,NULL, |
无 | "NULL" |
, , |
,NULL, |
无 | "NULL" |
,"", |
,NULL, |
无 | "NULL" |
," ", |
," ", |
无 | "NULL" |
, " " , |
," ", |
"" |
"NULL" |
,, |
,NULL, |
"" |
"NULL" |
, , |
,NULL, |
"" |
"NULL" |
,"", |
,"", |
"" |
"NULL" |
," ", |
," ", |
"" |
"NULL" |
, " " , |
," ", |
"\"\"" |
"NULL" |
,, |
,, |
"\"\"" |
"NULL" |
, , |
,, |
"\"\"" |
"NULL" |
,"", |
,NULL, |
"\"\"" |
"NULL" |
," ", |
," ", |
"\"\"" |
"NULL" |
, " " , |
," ", |
不带标题的 CSV 文件
源 .csv 文件不必在第一行中包含标题来唯一命名每列。但是,没有标题行的 .csv 文件需要位置加密架构。需要的是位置加密架构,而不是带标题行的 .csv 文件和 Parquet 文件使用的典型映射架构。
位置加密架构按位置而不是按名称指定输出列。映射加密架构将源列名映射到目标列名。有关更多信息,包括两种架构格式的详细讨论和示例,请参阅映射和定位表架构。
Parquet 文件
假定扩展名为 .parquet 的文件采用 Apache Parquet 格式。
支持的 Parquet 数据类型
C3R 加密客户端可以在表示 AWS Clean Rooms支持的数据类型的 Parquet 文件中处理任何非复杂(即基本类型)数据。
但是,只能将字符串列用于 sealed 列。
支持以下 Parquet 数据类型:
-
带以下逻辑注释的
Binary
基本类型:-
如果已设置
--parquetBinaryAsString
(STRING
数据类型),则为 None -
Decimal(scale, precision)
(DECIMAL
数据类型) -
String
(STRING
数据类型)
-
-
不带逻辑注释的
Boolean
基本数据类型(BOOLEAN
数据类型) -
不带逻辑注释的
Double
基本数据类型(DOUBLE
数据类型) -
带
Decimal(scale, precision)
逻辑注释的Fixed_Len_Binary_Array
基本类型(DECIMAL
数据类型) -
不带逻辑注释的
Float
基本数据类型(FLOAT
数据类型) -
带以下逻辑注释的
Int32
基本类型:-
无(
INT
数据类型) -
Date
(DATE
数据类型) -
Decimal(scale, precision)
(DECIMAL
数据类型) -
Int(16, true)
(SMALLINT
数据类型) -
Int(32, true)
(INT
数据类型)
-
-
带以下逻辑注释的
Int64
基本数据类型:-
无(
BIGINT
数据类型) -
Decimal(scale, precision)
(DECIMAL
数据类型) -
Int(64, true)
(BIGINT
数据类型) -
Timestamp(isUTCAdjusted, TimeUnit.MILLIS)
(TIMESTAMP
数据类型) -
Timestamp(isUTCAdjusted, TimeUnit.MICROS)
(TIMESTAMP
数据类型) -
Timestamp(isUTCAdjusted, TimeUnit.NANOS)
(TIMESTAMP
数据类型)
-
加密非字符串值
当前,sealed 列仅支持字符串值。
对于 .csv 文件,C3R 加密客户端会将所有值视为 UTF-8 编码的文本,并且在加密之前不会尝试对其进行不同的解释。
对于指纹列,类型被分为等价类。等价类是一组数据类型,可以通过代表性数据类型明确比较其是否相等。
等价类允许将相同的指纹分配给相同的语义值,而不管原始表示形式如何。但是,两个等价类中的相同值不会生成相同的指纹列。
例如,无论 INTEGRAL
值 42
最初是 SMALLINT
、INT
还是 BIGINT
,都将为其分配相同的指纹。此外,INTEGRAL
值 0
永远不会与 BOOLEAN
值 FALSE
匹配(由值 0
表示)。
指纹列支持以下等价类和相应 AWS Clean Rooms 的数据类型:
等价类 | 支持的 AWS Clean Rooms 数据类型 |
---|---|
BOOLEAN |
BOOLEAN |
DATE |
DATE |
INTEGRAL |
BIGINT , INT , SMALLINT |
STRING |
CHAR , STRING , VARCHAR |