ADFのコピーアクティビティにはzipファイルを展開してくれる機能がありますが、いくつか注意点があります。
- zipファイルはバイナリファイル、展開されたファイルはフラットファイル (Json、CSV等) になるので、コピーアクティビティの入力フォーマットは「Binary」、出力フォーマットは「Json、DelimitedText等」になると思われますが、コピーアクティビティでは入力フォーマットが「Binary」の場合は、出力フォーマットも「Binary」として定義する必要があります。
- ワイルドカードでファイル指定をする場合は、データセットでファイルを指定せず、コピーアクティビティの設定でファイルを指定します。
- コピーアクティビティにはファイル処理の中でエラー行をスキップする機能があるのですが、zipファイルが破損している場合、破損ファイルをスキップすることができません。つまり、複数のzipファイルをコピーアクティビティで処理させる場合には、事前にzipファイルの破損の有無をチェックしておく必要があります。
- 入力用のデータセットの設定
- フォーマットを「Binary」としてデータセットを作成
- File pathには、zipファイルが格納されているフォルダ (例:filesystem1/folder1) まで指定
- Compression typeには、「ZipDeflate」を指定
- 出力用のデータセットの設定
- フォーマットを「Binary」としてデータセットを作成
- File pathには、展開されたファイルを格納するフォルダ (例:filesystem1/folder2) を指定
- Compression typeには、「none」を指定
- コピーアクティビティのソースの設定
- Source datasetには、1で作成したデータセットを指定
- File path typeには、「Wildcard file path」を指定
- Wildcard pathには、ファイル名 (例:filesystem1/folder1/*.zip) まで指定
- コピーアクティビティのシンクの設定
- Sink datasetには、2で作成したデータセットを指定
- Copy behaviorには、zipファイル内部の構造やファイル名を維持する場合は「Preserve hierarchy」、維持せずフラットな構造にする場合は「Flatten hierarchy」を指定
- 「Preserve hierarchy」を指定した場合は、zipファイル名のフォルダが作成され、その配下にzipファイルが展開されます
- 「Flatten hierarchy」を指定した場合は、指定されたフォルダの直下に全てのzipファイルが展開されますが、ファイル名は勝手に生成されます