メイン コンテンツをスキップする 補完的コンテンツへスキップ

2つのフォルダー間で重複するファイルを見つける

このシナリオでは、2つのフォルダー内のファイルで反復しているジョブについて説明します。反復の結果をデータフローに変換し、ファイル名のリストを取得し、リストからすべての重複をピックアップし、[Run] (実行)コンソール上に表示します。これはたとえば、2つのフォルダーをマージする前のプレパレーションステップとして行うものです。

コンポーネントをドロップしてリンク

Procedure

  1. [Palette] (パレット)から、2つのtFileListコンポーネント、2つのtIterateToFlowコンポーネント、2つのtFileOutputDelimitedコンポーネント、1つのtFileInputDelimitedコンポーネント、1つのtUniqRowコンポーネント、および1つのtLogRowコンポーネントをデザインワークスペースにドロップします。
  2. [Row] (行) > [Iterate] (反復処理)接続を使って最初のtFileListコンポーネントを最初のtIterateToFlowコンポーネントにリンクし、[Row] (行) > [Main] (メイン)接続を使って最初のtIterateToFlowコンポーネントを最初のtFileOutputDelimitedコンポーネントに接続して、最初のサブジョブを作成します。
  3. [Row] (行) > [Iterate] (反復処理)接続を使って2番目のtFileListコンポーネントを2番目のtIterateToFlowコンポーネントにリンクし、[Row] (行) > [Main] (メイン)接続を使って2番目のtIterateToFlowコンポーネントを2番目のtFileOutputDelimitedコンポーネントに接続して、2番目のサブジョブを作成します。
  4. [Row] (行) > [Main] (メイン)接続を使ってtFileInputDelimitedコンポーネントをtUniqRowコンポーネントにリンクし、[Row] (行) > [Duplicates] (重複)接続を使ってtUniqRowコンポーネントをtLogRowコンポーネントに接続して、3番目のサブジョブを作成します。
  5. 連続して次々にトリガーされるように、[Trigger] (トリガー) > On Subjob Ok接続を使って3つのサブジョブをリンクし、ジョブ内でのロールを識別しやすくするために、コンポーネントにラベルを付けます。

コンポーネントを設定

Procedure

  1. 最初のtFileListコンポーネントの[Basic settings] (基本設定)ビューで、[Directory] (ディレクトリー)フィールドに、ファイル名を読み取る最初のフォルダーへのパスを入力します(この例ではE:/DataFiles/DI/images)。他の設定はそのままにします。
  2. tFileCopyコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを表示します。
  3. [Edit schema] (スキーマを編集)の横にある[...]ボタンをダブルクリックして[Schema] (スキーマ)ダイアログボックスを開き、次のコンポーネントがファイル名を書き込むテキストファイルのスキーマを定義します。終了したら[OK]をクリックしてダイアログボックスを閉じ、スキーマを次のコンポーネントにプロパゲートします。
    この例では、スキーマに含まれるカラムはFilenameの1つだけです。
  4. [Mapping] (マッピング)テーブルの[Value] (値)フィールドで[Ctrl]+[Space]を押して変数のオートコンプリートリストにアクセスし、グローバル変数((String)globalMap.get("tFileList_1_CURRENT_FILE"))を選択して、入力ディレクトリー内の各ファイルの名前を読み取ります。これはデータフローに入れられ、次のコンポーネントに渡されます。
  5. 最初のtFileOutputDelimitedコンポーネントの[Basic settings] (基本設定)ビューで、[File Name] (ファイル名)フィールドに、受信フローからのファイル名を保管するテキストファイルのパス(この例ではD:/temp/tempdata.csv)を入力します。これで最初のサブジョブの構成が完了しました。
  6. 上記の手順を繰り返して、2番目のサブジョブの設定を完了します。ただし、
    • 2番目のtFileListコンポーネントの[Basic settings] (基本設定)ビューの[Directory] (ディレクトリー)フィールドに、ファイル名を読み取る別のフォルダー(この例ではE:/DataFiles/DQ/images)を入力します。

    • 以前にテキストファイルに書き込まれたファイル名が上書きされないように、2番目のtFileOutputDelimitedコンポーネントの[Basic settings] (基本設定)ビューの[Append] (追加)チェックボックスをオンにします。

  7. tFileInputDelimitedコンポーネントの[Basic settings] (基本設定)ビューで、[File name/Stream] (ファイル名/ストリーム)フィールドに、ファイル名のリストを保管するテキストファイルのパス(この例では D:/temp/tempdata.csv)を入力します。続いて、ファイルスキーマを定義します。ファイルスキーマには、この例では1つのカラムFilenameのみが含まれています。
  8. tUniqRowコンポーネントの[Basic settings] (基本設定)ビューで、唯一のカラム(この例ではFilename)の[Key attribute] (キー属性)チェックボックスをオンにします。
  9. tLogRowコンポーネントの[Batic settings] (基本設定)ビューで、表示効果を高めるために[Table (print values in cells of a table)] (テーブル(テーブルのセルに値を印刷))オプションを選択します。

ジョブを実行

Procedure

  1. [Ctrl]+[S]を押し、ジョブを保存します。
  2. [Run] (実行)をクリックするか[F6]を押して、ジョブを実行します。
    選択したフォルダ間のすべての重複ファイルがコンソールに表示されます。

Results

tFileListを使う他のシナリオについては、tFileCopyをご覧ください。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。