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

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

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

ジョブの説明。

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

手順

  1. [Palette] (パレット)からデザインワークスペースに、次のコンポーネントを配置します:
    • tFileListコンポーネントを2つ
    • tIterateToFlowコンポーネントを2つ
    • tFileOutputDelimitedコンポーネントを2つ
    • 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] (サブジョブがOKの場合)接続を使って3つのサブジョブをリンクし、トリガーが次々に発生するようにします。
    ジョブでのコンポーネントのロールがわかりやすいようにラベルを付けます。

コンポーネントを設定

手順

  1. 最初のtFileListコンポーネントの[Basic settings] (基本設定)ビューで、[Directory] (ディレクトリー)フィールドに、ファイル名を読み取る最初のフォルダーへのパスを入力します(この例ではE:/DataFiles/DI/images)。他の設定はそのままにします。
    tFileListの[Basic settings] (基本設定)ビュー。
  2. tFileCopyコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを表示します。
    tIterateToFlowの[Basic settings] (基本設定)ビュー。
  3. [Edit schema] (スキーマを編集)の横にある[...]ボタンをダブルクリックして[Schema] (スキーマ)ダイアログボックスを開き、次のコンポーネントがファイル名を書き込むテキストファイルのスキーマを定義します。終了したら[OK]をクリックしてダイアログボックスを閉じ、スキーマを次のコンポーネントにプロパゲートします。
    この例では、スキーマに含まれるカラムはFilenameの1つだけです。
    [Filename] (ファイル名)カラムを持つスキーマ。
  4. [Mapping] (マッピング)テーブルの[Value] (値)フィールドでCtrl + スペースを押して変数のオートコンプリートリストにアクセスし、グローバル変数((String)globalMap.get("tFileList_1_CURRENT_FILE"))を選択して、入力ディレクトリー内の各ファイルの名前を読み取ります。これはデータフローに入れられ、次のコンポーネントに渡されます。
  5. 最初のtFileOutputDelimitedコンポーネントの[Basic settings] (基本設定)ビューで、[File Name] (ファイル名)フィールドに、受信フローからのファイル名を保管するテキストファイルのパス(この例ではD:/temp/tempdata.csv)を入力します。これで最初のサブジョブの構成が完了しました。
    tFileOutputDelimitedの[Basic settings] (基本設定)ビュー。
  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のみが含まれています。
    tFileInputDelimitedの[Basic settings] (基本設定)ビュー。
  8. tUniqRowコンポーネントの[Basic settings] (基本設定)ビューで、唯一のカラム(この例ではFilename)の[Key attribute] (キー属性)チェックボックスをオンにします。
    tUniqRowの[Basic settings] (基本設定)ビュー。
  9. tLogRowコンポーネントの[Batic settings] (基本設定)ビューで、表示効果を高めるために[Table (print values in cells of a table)] (テーブル(テーブルのセルに値を印刷))オプションを選択します。

ジョブを実行

手順

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

タスクの結果

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

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

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