# データ生成ファンクション

入力データとは異なる出力データを生成できます。

| ファンクション | ランダム生成 | 一貫した生成 | 全単射生成 | 入力データの検証 |
| --- | --- | --- | --- | --- |
| [Generate from pattern] (パターンから生成) | Yes | 不可 | なし | なし |
| [Generate Uuid] (UUIDの生成) | Yes | 不可 | なし | なし |
| シーケンスの生成 | Yes | 不可 | なし | なし |
| [Generate from file/list] (ファイル/リストから生成) | Yes | あり | 不可 | なし |

## パターンから生成

このファンクションでは、ユーザー定義のパターンに基づいて値が生成されます。このファンクションは文字列にのみ適用されます。

| オプション | 説明 |
| --- | --- |
| 追加パラメーター | このファンクションには追加パラメーターが必要です。<br><br>追加パラメーターは、次のルールに従うパターンです。<br><br><ul> <li> <span>A</span>はランダムなラテン文字の大文字に置き換えられます。</li> <li> <span>a</span>はランダムなラテン文字の小文字に置き換えられます。</li> <li> <span>9</span>はランダムな数字で置き換えられます。</li> <li> <span>H</span>はランダムなひらがな文字に置き換えられます。</li> <li> <span>K</span>はランダムな全角カタカナ文字に置き換えられます。</li> <li> <span>k</span>はランダムな半角カタカナ文字に置き換えられます。</li> <li> <span>C</span>は、ランダムな漢字に置き換えられます。</li> <li> <span>G</span>はランダムなハングル文字に置き換えられます。</li> </ul><br><br>その他のすべての文字は、そのまま生成された値にコピーされます。<br><br>サポートされる文字タイプと関連するUnicode範囲は、[マスキングコンポーネントでのデータマスキングファンクション](https://help.qlik.com/talend/ja-JP/components/8.0/data-privacy/data-masking-functions-in-masking-components)をご覧ください。<br><br>次の構文を使用して、番号付き前方参照(\\&lt;number&gt;)を使用することもできます: &lt;pattern&gt;\\&lt;number&gt;,&lt;group1&gt;,&lt;groupN&gt;<br><br><ul> <li> <kbd>&lt;pattern&gt;</kbd>は出力値の生成に使用するパターンに対応します。</li> <li> <kbd>\\&lt;number&gt;</kbd>は番号付きの前方参照です。<kbd>&lt;number&gt;</kbd>はコンマ("<kbd>,</kbd>")の後のグループの位置を識別します。</li> <li> <kbd>&lt;group1&gt;,&lt;groupN&gt;</kbd>はコンマで区切りの文字グループとなります。各グループは1つの単位として扱われます。前方参照でグループが呼び出された場合、生成値にそのまま追加されます。</li> </ul><br><br>パターン(A、a、9、H、h、K、k、C、G)で使用されている文字を、生成値と同じようにコピーする場合は、前方参照を使用します。 |

パターンにコンマ(,)が使用されている場合、このファンクションは正しく機能しません。

次のサンプルでは以下のことが行われます。

* aの文字はランダムなラテン文字の小文字に置き換えられます。
* sの文字は生成された出力でマスクされません。
* \\2は、2番目のコンマ(,)の後ろにあるグループ、@talend.comを呼び出します。

| 入力値 | 追加パラメーター | マスク値の例 |
| --- | --- | --- |
| A26 | "aaaass\\2,@gmail.com,@talend.com" | hjdfss@talend.com |

次のサンプルでは以下のことが行われます。

* \\3は、3番目のコンマ(,)の後ろにあるグループ、aを呼び出します。
* 9はランダムな数字でマスクされています。

| 入力値 | 追加パラメーター | マスク値の例 |
| --- | --- | --- |
| A26 | "\\39999,D,Z,a" | a4825 |

## [Generate UUID] (UUIDの生成)

このファンクションは、ランダムに生成された汎用一意識別子(UUID)で入力値をマスクします。

このファンクションは、Javaが提供するUUID.randomUUID()メソッドを使います。このJavaメソッドはシードを使いません。つまり、ジョブを2度実行すると、ファンクションは異なるUUIDを生成します。

このファンクションは文字列に適用されます。

このファンクションには追加パラメーターは不要です。

次の例のマスク値は、ランダムに生成されたUUIDです。

| 入力値 | マスク値の例 |
| --- | --- |
| A26 | 28e92000-aafa-4ec3-bd56-240f192a4a8c |

## シーケンスを生成

このファンクションは、追加パラメーターを返し、各行に対してこの数値を1増加させます。

このファンクションは日付以外のすべてのデータ型(Integer、Long、Strings、その他)に適用できます。

情報メモ注: このファンクションは、Sparkバージョンのコンポーネントではサポートされていません。

| オプション | 説明 |
| --- | --- |
| 追加パラメーター | このファンクションには追加パラメーターが必要です。<br><br>追加パラメーターは数字である必要があります。<br><br>追加パラメーターが数値でない場合は、0に設定されます。 |

次の例では、生成されたシーケンスは追加パラメーターとして設定された数で開始します。

| 入力値 | 追加パラメーター | マスク値の例 |
| --- | --- | --- |
| 21<br><br>A48 | "0" | 0<br><br>1 |

## ファイル/リストから生成

このファンクションは、入力値をユーザー定義の値の1つにランダムに置換します。

このファンクションは、文字列または数値のデータ型に適用されます。

| オプション | 説明 |
| --- | --- |
| メソッド | [Randomly] (ランダム)メソッドでは、値がリスト(またはファイル)からランダムに選択されます。その結果、2つの類似する入力値が異なる入力値でマスクされる場合があります。<br><br>[Consistently] (一貫性)メソッドでは、類似する入力値が2つあれば、必ず同じ出力値でマスクされます。<br><br>[Consistently] (一貫性)メソッドを使う場合、重複が生成される確率は次の式を使って計算できます。<br><br><ul> <li>P = 1 if K &lt; N、または</li> <li>P = 1-K*(K-1)*(K-2)*…*(K-N+1) / K^N</li> </ul><br><br>ここで、Pは重複を生成する確率であり、Nは入力データサイズであり、Kはパラメーターとして指定された入力リストのサイズです。<br><br>このアプローチを使用して、グループ内で同じ値を共有するペアを見つける確率を計算できます。<br><br>たとえば、n人のグループで、2人の誕生日が同じである確率は次のとおりです。<br><br><ul> <li>5人のグループで2.7%、</li> <li>20人のグループで41.1%、</li> <li>2月29日を含む366の誕生日があるため、367人のグループで100％。</li> </ul> |
| 追加パラメーター | このファンクションには追加パラメーターが必要です。<br><br>追加パラメーターは次の場合があります。<br><br><ul> <li>最小の2つの値のコンマ区切りリスト、または</li> <li>値を含むファイルへのパス。</li> </ul><br><br>値は文字列型で保管し、コンマで区切って指定する必要があります: "item1, item2, item3, etc."。このファンクションは、Javaから提供されているhashCode()メソッドを使ってリストからエレメントを選択します。<br><br>Apache Sparkバージョンのコンポーネントを使用する場合は、ファイルパスを次のように設定します。<br><br><ul> <li>ローカルモードの場合:<ul> <li>Apache Spark 3.1以前のバージョンでは、<span>prefix://file path</span>または<span>file:///file path</span>となります。</li> <li>Apache Spark 3.2以降のバージョンでは、<span>file:///file path</span>となります。</li> </ul></li> <li>スタンドアロンおよびYarnモードの場合は、<span>prefix://file path</span>となります。</li> <li>インデックスがクラスターにある場合は、<span>hdfs://hdpnameservice1/file path</span>となります。 </li> </ul><br><br>フォルダーへのパスはサポートされていません。<br><br>追加パラメーターが設定されていない場合、ファンクションは空の文字列または0を返します。 |

次の例では、マスク値は追加パラメーターとして設定された値の1つです。

| 入力値 | メソッド | 追加パラメーター | マスク値の例 |
| --- | --- | --- | --- |
| 21 | Randomly | "help,documentation" | help |