

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 的密碼編譯運算中支援的檔案和資料類型 Clean Rooms
<a name="crypto-computing-file-types"></a>

C3R 加密用戶端會辨識下列檔案類型：
+ CSV 檔案
+ Parquet 檔案

您可以使用 C3R 加密用戶端中的 `--fileFormat`旗標明確指定檔案格式。明確指定時，檔案格式不會由副檔名決定。

**Topics**
+ [CSV 檔案](#csv-file-type)
+ [Parquet 檔案](#parquet-file-type)
+ [加密非字串值](#encrypt-non-string-values)

## CSV 檔案
<a name="csv-file-type"></a>

假設副檔名為 .csv 的檔案為 CSV 格式，並包含 UTF-8 編碼的文字。C3R 加密用戶端會將所有值視為字串。

### .csv 檔案中支援的屬性
<a name="csv-properties"></a>

C3R 加密用戶端需要 .csv 檔案具有下列屬性：
+ 可能或可能不包含可唯一命名每個資料欄的初始標頭列。
+ 逗號分隔。（目前不支援自訂分隔符號。)
+ UTF-8 編碼的文字。

#### 從 .csv 項目裁剪的空格
<a name="whitespace-trimming"></a>

前置和後置空格都會從 .csv 項目修剪。

#### .csv 檔案的自訂NULL編碼
<a name="custom-null-encoding"></a>

.csv 檔案可以使用自訂NULL編碼。

使用 C3R 加密用戶端，您可以使用 `--csvInputNULLValue=<csv-input-null>`旗標為輸入資料中的NULL項目指定自訂編碼。C3R 加密用戶端可以使用 `--csvOutputNULLValue=<csv-output-null>`旗標，在產生的輸出檔案中針對 NULL 項目使用自訂編碼。

**注意**  
NULL 項目被視為*缺少*內容，特別是在 SQL 資料表等更豐富的表格格式環境中。雖然 .csv 基於歷史原因未明確支援此特性描述，但一般慣例是將僅包含空格的空白項目視為 NULL。因此，這是 C3R 加密用戶端的預設行為，可以視需要自訂。

### C3R 如何解譯 .csv 項目
<a name="interpretation-csv-entries"></a>

下表提供 .csv 項目如何根據為 `--csvInputNULLValue=<csv-input-null>`和 `--csvOutputNULLValue=<csv-output-null>`旗標提供的值 (cleartext如果有的話） 進行封送 ( 到 cleartext 以獲得明確性） 的範例。在 C3R 解譯任何值的意義之前，會修剪引號外部的前後空格。


| `<csv-input-null>` | `<csv-output-null>` | 輸入項目 | 輸出項目 | 
| --- |--- |--- |--- |
| None | None | 、AnyProduct、 | 、AnyProduct、 | 
| None | None | 、AnyProduct、 | 、AnyProduct、 | 
| None | None | 、"AnyProduct"、 | 、AnyProduct、 | 
| None | None | 、「AnyProduct」、 | 、AnyProduct、 | 
| None | None | ,, | ,, | 
| None | None | , , | ,, | 
| None | None | ,"", | ,, | 
| None | None | ," ", | ," ", | 
| None | None | , " " , | ," ", | 
| 「AnyProduct」 | 「NULL」 | 、AnyProduct、 | 、NULL、 | 
| 「AnyProduct」 | 「NULL」 | 、AnyProduct、 | 、NULL、 | 
| 「AnyProduct」 | 「NULL」 | 、"AnyProduct"、 | 、NULL、 | 
| 「AnyProduct」 | 「NULL」 | 、「AnyProduct」、 | 、NULL、 | 
| None | 「NULL」 | ,, | 、NULL、 | 
| None | 「NULL」 | , , | 、NULL、 | 
| None | 「NULL」 | ,"", | 、NULL、 | 
| None | 「NULL」 | ," ", | ," ", | 
| None | 「NULL」 | , " " , | ," ", | 
| "" | 「NULL」 | ,, | 、NULL、 | 
| "" | 「NULL」 | , , | 、NULL、 | 
| "" | 「NULL」 | ,"", | ,"", | 
| "" | 「NULL」 | ," ", | ," ", | 
| "" | 「NULL」 | , " " , | ," ", | 
| "\\"\\"" | 「NULL」 | ,, | ,, | 
| "\\"\\"" | 「NULL」 | , , | ,, | 
| "\\"\\"" | 「NULL」 | ,"", | 、NULL、 | 
| "\\"\\"" | 「NULL」 | ," ", | ," ", | 
| "\\"\\"" | 「NULL」 | , " " , | ," ", | 

### 不含標頭的 CSV 檔案
<a name="csv-file-no-headers"></a>

來源 .csv 檔案不需要在第一列中具有唯一命名每個資料欄的標頭。不過，沒有標頭列的 .csv 檔案需要位置加密結構描述。位置加密結構描述是必要的，而不是用於具有標頭列和檔案的 .csv Parquet 檔案的一般映射結構描述。

位置加密結構描述會依位置而非名稱指定輸出資料欄。映射的加密結構描述會將來源資料欄名稱映射至目標資料欄名稱。如需詳細資訊，包括這兩種結構描述格式的詳細討論和範例，請參閱 [映射和位置資料表結構描述](create-schema.md#mapped-and-positional-schemas)。

## Parquet 檔案
<a name="parquet-file-type"></a>

假設副.parquet檔名為 的檔案Apache Parquet格式。

### 支援的Parquet資料類型
<a name="supported-parquet-data-types"></a>

C3R 加密用戶端可以處理檔案中Parquet代表 支援之資料類型的任何非複雜 （即基本類型） 資料 AWS Clean Rooms。

不過，只有字串資料欄可用於sealed資料欄。

支援下列 Parquet 資料類型：
+ `Binary` 具有下列邏輯註釋的基本類型：
  + 如果`--parquetBinaryAsString`已設定 則無 (`STRING` 資料類型）
  + `Decimal(scale, precision)` (`DECIMAL` 資料類型）
  + `String` (`STRING` 資料類型）
+ `Boolean` 沒有邏輯註釋的基本資料類型 (`BOOLEAN` 資料類型）
+ `Double` 沒有邏輯註釋的基本資料類型 (`DOUBLE` 資料類型）
+ `Fixed_Len_Binary_Array` 具有邏輯註釋的基本類型 `Decimal(scale, precision)` (`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` 資料類型）

## 加密非字串值
<a name="encrypt-non-string-values"></a>

目前，sealed欄僅支援字串值。

對於 .csv 檔案，C3R 加密用戶端會將所有值視為 UTF-8 編碼文字，並且在加密之前不會嘗試以不同的方式解譯這些值。

對於指紋資料欄，類型會分組為等效類別。等效類別是一組資料類型，可透過代表性資料類型明確比較相等性。

對等類別允許將相同的指紋指派給相同的語意值，無論原始表示法為何。不過，兩個等效類別中的相同值不會產生相同的指紋資料欄。

例如，無論該`INTEGRAL`值原本是 `SMALLINT`、 或 `INT`，`42`都會指派相同的指紋`BIGINT`。此外，該`INTEGRAL`值永遠`0`不會符合該`BOOLEAN`值 `FALSE`（以值 表示`0`)。

指紋資料欄支援下列等效類別和對應的 AWS Clean Rooms 資料類型：


| 對等類別 | 支援的 AWS Clean Rooms 資料類型 | 
| --- | --- | 
| BOOLEAN | BOOLEAN | 
| DATE | DATE | 
| INTEGRAL | BIGINT, INT, SMALLINT | 
|  STRING | CHAR, STRING, VARCHAR | 