# 入力フローからの複製データの生成

このシナリオでは、確率論と3つのカラム、*[Name] (名前)*、*[City] (市区町村)*、および*[DOB] (生年月日)*への特定の基準を使って、複製データのサンプルを入力フローから生成する基本的なジョブについて説明します。

このシナリオは、Talend Data Management Platform、Talend Big Data Platform、Talend Real-Time Big Data Platform、Talend Data Services Platform、Talend Data Fabricにのみ適用されます。

このシナリオで使うコンポーネントは、以下のとおりです。

* tFileInputDelimited (入力コンポーネントとして)。
* tDuplicateRow: 入力フローから複製データを生成します。
* tFileOutputDelimited: 顧客データを区切りファイルに出力します。

![tFileInputDelimited、tGenKey、tFileOutputDelimitedコンポーネントを使うジョブ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow2.png)

以下は、入力フローのサンプルデータをキャプチャーしたものです。

![サンプルデータの例。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow.png)

## ジョブを設定

### 手順

1. [Palette] (パレット)から、tFileInputDelimited、tDuplicateRow、およびtFileOutputDelimitedをデザインワークスペースにドロップします。
2. [Row] (行) &gt; [Main] (メイン)リンクを使用してコンポーネントを接続します。

## 入力データを設定

### 手順

1. tFileInputDelimitedをダブルクリックして[Basic settings] (基本設定)ビューを表示し、コンポーネントプロパティを定義します。

   ![tFileInputDelimitedコンポーネントの設定](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow3.png)
2. [File name/Stream] (ファイル名/ストリーム)フィールドで、メイン入力に使用するファイルに移動します。

   このファイルには、顧客に関する情報が含まれています。
3. 対応するフィールドのヘッダーとフッター(ある場合)の行とフィールドの区切り文字を定義します。
4. [Edit schema] (スキーマを編集)の横にある[...]ボタンをクリックしてダイアログボックスを開き、入力スキーマを定義します。

   入力ファイルストラクチャーを基に、このスキーマは10のカラムで構成されます。 ![tFileInputDelimitedコンポーネントのスキーマ。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow4.png)
5. [+]ボタンをクリックし、上図に示すように、ダイアログボックスの入力カラムを定義します。[OK]をクリックしてダイアログボックスを閉じます。
6. 必要に応じて、tFileInputDelimitedを右クリックし、[Data Viewer] (データビューアー)を選択して入力データのビューを表示します。

## 複製データの設定

### 手順

1. tDuplicateRowをダブルクリックして[Basic settings] (基本設定)ビューを表示し、コンポーネントプロパティを定義します。

   ![tDuplicateRowコンポーネントの設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow5.png)
2. [Edit schema] (スキーマを編集)ボタンをクリックして入力および出力カラムを表示し、必要に応じて出力スキーマに変更を施します。

   ![入力スキーマと出力スキーマの例。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow6.png)

   このコンポーネントの出力スキーマには、読み取り専用カラム*ORIGINAL\_MARK*が1つ含まれています。レコードが元レコードまたは複製レコードである場合、このカラムはtrue とfalseによって識別されます。元レコードは複製の各グループに1つのみです。
3. [Percentage of duplicated records] (複製レコードの割合)フィールドに、出力フローに含める複製行の割合を入力します。
4. [Distribution of duplicates] (複製の分布)エリアで、複製の生成に使用するベルヌーイ分布(確率論)を選択します。
5. 各グループに含める複製レコードの平均数を設定します。
6. [Modifications] (変更)テーブルの下にある[+]ボタンをクリックして、テーブルに4つの行を追加します。

   このテーブルでは、特定のカラムで変更する値、および複製の生成のためにそれらの値を変更する方法を定義できます。
   1. [Input Column] (入力カラム)フィールドで、複製を生成する入力フローのカラムを選択します。この例では、*[Name] (名前)*、*[City] (市区町村)*、*[DOB]*を選びます。

      カラムを2回テーブルに追加し、別々のファンクションを選択すると、同じフィールドから異なる値の複製が生成されます。たとえば、このシナリオでは、確率を50%に指定し、*Soundex replace*ファンクションを使って複製名を変更してから、もう一度確率を50%にし、*Exchange characters*ファンクションで複製名を変更します。つまり、複製レコードの*[Name] (名前)*フィールドは、確率が*(1-0.5)×(1-0.5) = 0.25*である場合、2回目のファンクションを実行後も変更されない可能性があります。

      すべての複製レコードを確実に変更するには、[Modification Rate] (変更率)を*1*に設定する必要があります。
   2. [Modification Rate] (変更率)カラムに、入力カラムから生成する複製レコードの割合を入力します。
   3. -Function (ファンクション)リストから、複製する値をどのように変更するかを決めるファンクションを選択します。

      この例では、複数の読み方と特性の複製名が存在することになり、異なる読み方の市区町村名が複製されます。生年月日カラムの日付値はここではランダムに変更されます。
   4. Max Modification Count (最大変更数)カラムに、各フィールドで変更する値の最大数を入力します。
7. [Advanced settings] (詳細設定)タブをクリックし、[Seed for random generator] (ランダムジェネレーターをシード)フィールドにランダムな数値を入力します。

   このフィールドに数値を設定することで、ジョブの各実行で複製データの同じサンプルが生成されます。別のサンプルを生成する場合は値を変更します。

## 出力コンポーネントを設定

### 手順

1. tFileOutputDelimitedをダブルクリックして[Basic settings] (基本設定)ビューを開き、コンポーネントのプロパティを定義します。

   ![tFileOutputDelimitedコンポーネントの設定。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow7.png)
2. [File Name] (ファイル名)フィールドで、複製データ(この例では*duplicated\_records*)を書き込むファイルへのパスを指定します。
3. 必要に応じて、該当するフィールドに行とフィールドの区切りを定義します。

## ジョブを実行

### 手順

1. ジョブを保存し、F6を押して実行します。

   複製データが生成されて出力ファイルに書き込まれます。
2. 出力コンポーネントを右グリックして[Data Viewer] (データビューアー)を選択し、複製データを表示します。

   複製レコードは*ORIGINAL\_MARK*カラムで*false*とマークされています。

   ![データビューアーからの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow8.png)

   *[Name] (名前)*、*[City] (市区町村)*、および*[DOB]*フィールドの一部のデータが、[Modifications] (変更)テーブルで設定した基準に従って変更されており、複製レコードがこれらの変更に基づいて生成されています。

   たとえば、元の名前*Mrs Morgan Ross*と複製名*Mrs M rganosRiss*を比較すると、複製レコードに2つのファンクションが使われていることがわかります: 文字*o*はスペースに置き換えられ、サウンドも*ロス*と*リス*に置き換えられました。ただし、soundexコードは、置き換えられた読み方に変えられていません。
3. tDuplicateRowの基本設定と[Distribution of duplicates] (複製の分布)エリアで、*ベルヌーイ分布*など別の分布を選択してジョブを実行します。

   以下の図に示すように、選択した分布に従って、同じ入力フローからさまざまな複製が生成されます。

   ![Bernoulliディストリビューションを使った結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow9.png)

## 各確率分布のグラフ結果の表示

複製が3つの確率分布のそれぞれに応じてどのように生成されたかを確認する最良の方法は、各結果で一致分析を作成して、グラフを比較することです。

### 手順

1. Profiling パースペクティブの[Metadata] (メタデータ)を右クリックして、ジョブで生成した*duplicated\_records*出力ファイルへのファイル接続を作成します。

   詳細は、Talend Studioユーザーガイドで[データプロファイリングとデータクオリティ](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0/profiling-and-data-quality)をご覧ください。
2. [Metadata] (メタデータ)下の新しいファイル接続を展開して、[Analyze matches] (一致を分析)を選択します。
3. ウィザードのステップに従って、分析メタデータを定義し、[Finish] (終了)をクリックして分析エディターを開きます。
4. [Matching Key] (照合キー)テーブルの*[Code] (コード)*カラムに照合キーを定義して、ID別にレコードをグルーピングします。同じコードを持つレコードがグルーピングされます。

   ![\[ Matching key\] (マッチングキー)ウィンドウの概要。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow10.png)
5. テーブルの下の[Chart] (グラフ)をクリックして、ジョブで選択済みのベルヌーイ分布に従って生成された複製を表示します。
6. Integration パースペクティブに再び切り替えて、tDuplicateRowの基本設定で[Poisson distribution] (ポアソン分布)を選択し、ジョブを実行します。
7. Profiling パースペクティブで、[Matching Key] (マッチングキー)テーブルの下にある[Chart] (グラフ)をクリックして、[Poisson distribution] (ポアソン分布)に従って生成された複製を表示します。
8. [Geometric distribution] (幾何分布)でジョブを実行し、[Profiling] (プロファイリング)の[Chart] (グラフ)をクリックして、幾何分布に従って生成された複製を表示します。

### タスクの結果

生成された重複の結果は、tDuplicateRowコンポーネントで選択した確率分布によって異なります。

[Bernoulli distribution] (Bernoulliディストリビューション): カーブは対称的です。複製のグループは各サイドに均等に分布されており、この例の平均値は4です。この平均値は複製グループの平均的な複製数であり、この値はtDuplicateRowコンポーネントの基本設定の[Average group size] (平均グループサイズ)フィールドで設定した数値です。 ![Bernoulliディストリビューションの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow-bernoulli_results.png)

[Poisson distribution] (Poissonディストリビューション): カーブは対称的ではありません。複製のグループは不均等に分布されています。 ![Poissonディストリビューションの結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow-poisson_results.png)

[Geometric distribution] (幾何分布): tDuplicateRowの基本設定で設定した複製レコードの割合によって決まります。割合が高いほど、レコード数が多いグループは少なくなります。この例では、複製レコードの割合は*80%*に設定されています。そのため、2つの複製レコードを持つ多くのグループが生成され(*148*グループ)、複製レコードの数が*14*、*15*、*16*のグループは1つしかありません。 ![幾何分布の結果。](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/use_case-tduplicaterow-geometric_results.png)

**関連資料**

[tDuplicateRow](https://help.qlik.com/talend/ja-JP/components/8.0/data-privacy/tduplicaterow "データクオリティファンクションテスト用に、有意なデータで複製を作成します。")

**関連情報**

[tFileInputDelimited](https://help.qlik.com/talend/ja-JP/components/8.0/delimited/tfileinputdelimited)

[tFileOutputDelimited](https://help.qlik.com/talend/ja-JP/components/8.0/delimited/tfileoutputdelimited)