

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Cryptographic Computing for 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 エントリに対してカスタムエンコーディングを使用できます。

**注記**  
特に SQL テーブルのようなよりリッチな表形式のコンテキストでは、NULL エントリは欠落したコンテンツとみなされます**。.csv は歴史的な理由からこの特性を明示的にサポートしていませんが、空白だけを含む空のエントリは NULL と見なすのが一般的な慣習です。したがって、これは C3R 暗号化クライアントのデフォルト動作であり、必要に応じてカスタマイズできます。

### C3R による .csv エントリの解釈
<a name="interpretation-csv-entries"></a>

次の表は、`--csvInputNULLValue=<csv-input-null>` および `--csvOutputNULLValue=<csv-output-null>` のフラグに指定された値 (存在する場合) に基づいて、.csv エントリを (わかりやすくするために cleartext から cleartext に) 整列化する方法の例を示しています。引用符の外側にある先頭と末尾の空白は、C3R が値の意味を解釈する前に削除されます。


| `<csv-input-null>` | `<csv-output-null>` | 入力エントリ | 出力エントリ | 
| --- |--- |--- |--- |
| None | None | ,任意の製品, | ,任意の製品, | 
| None | None | , 任意の製品 , | ,任意の製品, | 
| None | None | ,"任意の製品", | ,任意の製品, | 
| None | None | , "任意の製品" , | ,任意の製品, | 
| None | None | ,, | ,, | 
| None | None | , , | ,, | 
| None | None | ,"", | ,, | 
| None | None | ," ", | ," ", | 
| None | None | , " " , | ," ", | 
| "任意の製品" | "NULL" | ,任意の製品, | ,NULL, | 
| "任意の製品" | "NULL" | , 任意の製品 , | ,NULL, | 
| "任意の製品" | "NULL" | ,"任意の製品", | ,NULL, | 
| "任意の製品" | "NULL" | , "任意の製品" , | ,NULL, | 
| None | "NULL" | ,, | ,NULL, | 
| None | "NULL" | , , | ,NULL, | 
| None | "NULL" | ,"", | ,NULL, | 
| None | "NULL" | ," ", | ," ", | 
| None | "NULL" | , " " , | ," ", | 
| "" | "NULL" | ,, | ,NULL, | 
| "" | "NULL" | , , | ,NULL, | 
| "" | "NULL" | ,"", | ,"", | 
| "" | "NULL" | ," ", | ," ", | 
| "" | "NULL" | , " " , | ," ", | 
| "\$1"\$1"" | "NULL" | ,, | ,, | 
| "\$1"\$1"" | "NULL" | , , | ,, | 
| "\$1"\$1"" | "NULL" | ,"", | ,NULL, | 
| "\$1"\$1"" | "NULL" | ," ", | ," ", | 
| "\$1"\$1"" | "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 暗号化クライアントでは、 AWS Clean Roomsでサポートされているデータ型を表す Parquet ファイル内の複雑でない (つまり、プリミティブ型の) データを処理できます。

ただし、sealed列には文字列の列しか使用できません。

以下の Parquet データ型 がサポートされています。
+ 以下の論理アノテーション付きの `Binary` プリミティブ型
  + `--parquetBinaryAsString` が設定されている場合は不要 (`STRING` データ型)
  + `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` データ型)

## 文字列以外の値の暗号化
<a name="encrypt-non-string-values"></a>

現在、sealed列では文字列値のみがサポートされています。

.csv ファイルの場合、C3R 暗号化クライアントはすべての値を UTF-8 でエンコードされたテキストとして扱い、暗号化前にそれらを異なる方法で解釈しようとはしません。

フィンガープリント列では、データ型は等価クラスにグループ化されます。等価クラスは、代表的なデータ型を使用して同等かどうかを明確に比較できるデータ型のセットです。

等価クラスを使用すると、元の表現に関係なく、同一のフィンガープリントを同じセマンティック値に割り当てることができます。ただし、2 つの等価クラスで同じ値があっても、同じフィンガープリント列にはなりません。

例えば、`42` の `INTEGRAL` 値には、元の値が `SMALLINT`、`INT`、または `BIGINT` であったかどうかにかかわらず、同じフィンガープリントが割り当てられます。また、`0` の `INTEGRAL` 値が `FALSE` の `BOOLEAN` 値 (値 `0` で表される) と一致することはありません。

フィンガープリント列では、次の等価クラスと対応する AWS Clean Rooms データ型がサポートされています。


| 等価クラス | サポートされている AWS Clean Rooms データ型 | 
| --- | --- | 
| BOOLEAN | BOOLEAN | 
| DATE | DATE | 
| INTEGRAL | BIGINT, INT, SMALLINT | 
|  STRING | CHAR, STRING, VARCHAR | 