本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
加密计算中支持的文件和数据类型 Clean Rooms
C3R 加密客户端可识别以下文件类型:
-
CSV 文件
-
Parquet 文件
您可以在 C3R 加密客户端中使用 --fileFormat
标志来明确指定文件格式。如果明确指定,则文件格式不取决于文件扩展名。
CSV 文件
假定扩展名为 .csv 的文件采用 CSV 格式并包含 UTF-8 编码的文本。C3R 加密客户端将所有值视为字符串。
.csv 文件中支持的属性
C3R 加密客户端要求 .csv 文件具有以下属性:
-
可能包含也可能不包含唯一命名每列的初始标题行。
-
逗号分隔。(目前,不支持自定义分隔符。)
-
UTF-8 编码的文本。
从 .csv 条目中修剪空格
.csv 条目中的前导和尾部空格都会被修剪。
自定义 NULL 对.csv 文件进行编码
.csv 文件可以使用自定义 NULL 编码。
使用 C3R 加密客户端,您可以为以下对象指定自定义编码 NULL 使用--csvInputNULLValue=<csv-input-null>
标志在输入数据中输入条目。通过使用 --csvOutputNULLValue=<csv-output-null>
标志,C3R 加密客户端可以在生成的输出文件中为 NULL 条目使用自定义编码。
注意
A NULL 条目被认为缺少内容,特别是在更丰富的表格格式(例如 SQL 表)的上下文中。尽管由于历史原因,.csv 并未明确支持这种描述,但通常的惯例是将仅包含空格的空条目视为空白条目 NULL。 因此,这是 C3R 加密客户端的默认行为,可以根据需要对其进行自定义。
C3R 如何解释 .csv 条目
下表提供了如何编组.csv 条目的示例 (cleartext 到 cleartext 为了清楚起见)基于为--csvInputNULLValue=<csv-input-null>
和--csvOutputNULLValue=<csv-output-null>
标志提供的值(如果有)。在 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 加密客户端可以处理任何非复杂(即原始类型)数据 Parquet 表示支持的数据类型的文件 AWS Clean Rooms。
但是,只能将字符串列用于 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 |