> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: データ転送後のファイル移動・削除を使いこなす

> Integrate.io ETLのワークフローFile MoverタスクとFile Storage Sourceコンポーネントの処理済みファイル移動オプションを使い、データ転送後に元ファイルを自動で移動・削除する方法を紹介します。

## はじめに

データパイプラインを構築する際、「ファイルを読み込んだ後、元のファイルはどうすればいい？」という疑問は誰もが抱くはずです。読み込み済みのファイルをそのままにしておくと、次回の実行時に二重取り込みが発生したり、ストレージが散らかったりと、運用上の問題が生じます。

Xplentyには、こうした課題をエレガントに解決する機能が２つ用意されています。**ワークフローの「File Mover タスク」** と、**File Storage Source コンポーネントの「Move processed files to another folder(処理済みファイルの移動)」オプション** です。本記事では、それぞれの使い方と使い分けについて解説します。

## 1. ワークフローの「File Mover タスク」でファイルを移動・削除

### File Mover タスクとは

Xplentyの ワークフローには、**「File Mover」タスク**が搭載されています。これはデータフローの実行とは独立して、ファイルストレージ間でのファイルの移動・コピーを行う専用タスクです。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part06-jp/image-1.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=2d40468dc2921a2ff568cba6463f7ae4" alt="filestorage-part06-jp image 1" width="364" height="270" data-path="images/japanese-knowledge-base/filestorage-part06-jp/image-1.webp" />
</Frame>

たとえば、「データフローが正常終了したら元ファイルを別ディレクトリへ移動する」「失敗したときはファイルをそのまま残す」といった条件付きのファイル操作が、コードなしで実現できます。

### File Mover タスクの設定方法

タスク選択画面で **「File Mover」** を選び、以下の項目を設定します。

* **Source location(移動元)の設定**

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part06-jp/image-2.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=7817d56465e22785644fcf627b5db9a8" alt="filestorage-part06-jp image 2" width="967" height="614" data-path="images/japanese-knowledge-base/filestorage-part06-jp/image-2.webp" />
</Frame>

* **Source connection(ソースコネクション)**：ファイルストレージのコネクション(Amazon S3、Google Cloud Storage、Azure Blob Storage、SFTP など)を選択

* **Source bucket(ソースバケット)**：対象のバケット名を入力（オブジェクトストレージの場合）

* **Source path(ソースパス)**： ワイルドカードを使った移動対象のファイルまたはディレクトリのパスを入力

* **「Delete files from source」**：ファイルを移動先にコピーした後、移動元からファイルを削除します。実質的な「移動」操作となります。

* **「Fail if the source is empty」**：移動元にファイルが存在しない場合、タスクをエラーにします。空振り実行を防ぎたいときに有効です。

* **Destination location(移動先)の設定**

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part06-jp/image-3.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=5ce6247db0e47c157169d5907158a091" alt="filestorage-part06-jp image 3" width="976" height="742" data-path="images/japanese-knowledge-base/filestorage-part06-jp/image-3.webp" />
</Frame>

* **Destination connection(デスティネーションコネクション)**：移動先のファイルストレージコネクションを選択（ソースと異なる接続も指定可能）
* **Destination bucket(デスティネーションバケット)**：移動先バケット名を入力
* **Destination path(デスティネーションパス)**：移動先のパスを入力
* **Append string to filename**：移動先に移されたファイルのファイル名を付与文字列にて変更
  * 付与文字列 - `_done`
  * ファイル名の変更
    * 移動元 : `menulist_20260317.csv`
    * 移動先 : `menulist_20260317_done.csv`
* **Compress output to ZIP**：移動先に移されたファイルをZIP圧縮して保存

> **ポイント**：移動先のパスに含まれるディレクトリは、実行前にあらかじめ存在している必要があります。ファイル名を変更したい場合は、パスにファイル名と拡張子まで含めて指定します（例：`archive/2024/processed_data.csv`）。

また、パス名にはパッケージ変数（`$変数名`）やワイルドカード（`*`）も使用可能なため、日付変数を使った動的なアーカイブ先の指定なども実現できます。

### 典型的なワークフロー構成例

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part06-jp/image-4.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=0bbe3e2936684900dbf9f543c794b69f" alt="filestorage-part06-jp image 4" width="918" height="425" data-path="images/japanese-knowledge-base/filestorage-part06-jp/image-4.webp" />
</Frame>

このように組み合わせることで、「データ取り込み成功 → 元ファイルをアーカイブ」や「データ取り込み失敗 → 元ファイルをリトライに回す」などの一連の処理を自動化できます。

## 2. File Storage・ソースの処理済みファイルの移動

もう一つのアプローチは、データフローパッケージ内の File Storage・ソース に備わっている **「Move processed files to another folder」** オプションを使う方法です。

データ読み込みが完了したファイルが自動的に指定のディレクトリへ移動します。次回実行時に同じファイルを再処理するリスクを防ぐシンプルな方法です。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part06-jp/image-5.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=19962bcd3c7b2427b148ea0c8b27a2c3" alt="filestorage-part06-jp image 5" width="534" height="277" data-path="images/japanese-knowledge-base/filestorage-part06-jp/image-5.webp" />
</Frame>

* Destination path - 上で設定したコネクターのSource bucketにあるディレクトリです。ディレクトリが存在しない場合、自動生成されます。

ワークフローを使わず単体のデータフローで完結させたい場合に適しています。

## 3. どちらを使うべきか？

| 観点         | File Mover タスク                | File Storage Source のオプション |
| ---------- | ----------------------------- | -------------------------- |
| 使用パッケージタイプ | ワークフロー                        | データフロー                     |
| 実行タイミング    | データフローの前後・独立して実行可能            | データ読み込みと同時                 |
| 条件分岐       | 成功・失敗・完了で柔軟に制御可能              | なし                         |
| ファイル削除     | 「Delete files from source」で対応 | 移動のみ（削除は非対応）               |
| 適したケース     | 複雑なパイプライン、条件付き処理              | シンプルな単一フロー                 |

**複雑な処理フローや失敗時のハンドリングが必要な場合**はワークフローの File Mover タスクが適しています。一方、**単純に「読んだら移動」で十分な場合**は、File Storage Source の設定だけで完結します。

## まとめ

Xplentyを使えば、データ転送後のファイル管理もノーコードで自動化できます。

* **ワークフローの File Mover Task**：タスクの実行順序や成功・失敗条件と組み合わせた柔軟なファイル操作が可能。ファイルの削除にも対応。
* **File Storage・ソースの「Move processed files」オプション**：データフロー内でシンプルに処理済みファイルを移動したいときに最適。

どちらの機能も、データパイプラインの信頼性を高め、手動の後処理作業をなくすための重要なツールです。ぜひ自身のユースケースに合わせて活用してみてください。
