各製品の資料を入手。
詳細はこちら →Amazon S3 のCSVデータを集計クエリとサブフォルダーの展開を使って読み取る:CData CSV Driver V20 Update その4
こんにちは。CData Software Japan リードエンジニアの杉本です。
過去3回に渡って、CData CSV Driver V20 Updateを紹介してきました。
どれも良い機能なんですが、おそらく昨今こういったデータの扱いはAmazon S3やAzure Blob Storageなどのクラウドストレージに配置することも多いのではないかと思います。
CData CSV Driver は前回のアップデートでローカルのCSVファイルだけでなく、12種類のクラウドストレージやSFTPといったリモートアクセスベースのCSV読み取りにも対応しました。
今回の記事では、先の記事で紹介した「集計クエリ」「サブフォルダー読み取り」「ZIPファイル読み取り」がこのクラウドストレージ系でも動作するのか? 紹介したいと思います。
接続先はクラウドストレージサービスとして有名な Amazon S3としました。
通常の接続パターン
まず、普通に接続した場合、どのようになるか見てみましょう。
対象のデータはおよびフォルダ構造は以下の通りとなっています。
s3://csvdrivertest/AggregateFilesForSubFolders │ personal_infomation_1.csv │ ├─SubFolder1 │ personal_infomation_1.csv │ ├─SubFolder2 │ personal_infomation_2.csv │ └─SubFolder3 personal_infomation_3.csv
通常の Amazon S3 へのアクセスは以下のようにプロパティを設定します。 AWS Access Key・AWS Secret KeyにはAmazon S3へのアクセス権限があるものを指定してください。
- URI:対象のAmazon S3フォルダパス:s3://csvdrivertest/AggregateFilesForSubFolders
- AWS Access Key:Amazon S3へのアクセス権限が付与されているIAMユーザーのAccess Key
- AWS Secret Key:Amazon S3へのアクセス権限が付与されているIAMユーザーの Secret Key
これで、 Power BIなどから接続してみると、対象フォルダのルートに配置されているCSVファイルだけ読み取ることができます。
サブフォルダー読み取り:Include Subdirectories
次に「Include Subdirectories」をTrueにした状態で接続を行ってみます。他のプロパティは変更ありません。
すると、以下のようにサブフォルダーに存在するCSVファイルも一つ一つ独立したテーブルとして読み取ることができるようになりました。
集計クエリ:Aggregate Files
続いて、「Include Subdirectories」に追加する形で「Aggregate Files」のプロパティもTrueにして接続してみます。
今度は、以下のようにそれぞれのCSVファイルを一つのテーブルとしてアクセスできるようになりました。
Amazon S3などのクラウドストレージでもこのように複数フォルダ・複数CSVファイルをまとめてクエリできるようになっています。
ZIPファイル読み取り
最後にZIPファイルも試してみましょう。
別なフォルダに先程までアクセスしていたファイル構造をZIP化したものを配置しました。
接続設定は先程までのプロパティに追加する形で、「Include Files」のプロパティに「ZIP」を加えるだけです。
これでPower BIからアクセスしてみると、以下のようにZIPファイルの中身に存在する各サブフォルダーのCSVファイルをまとめて読み込むことができました。
このように今まで紹介してきた各種機能はクラウドストレージでも同じ様に利用できます!
注意点
こんな便利なCSV Driverですが、ひとつ注意があります。この集計クエリ機能やサブフォルダーの読み取り機能は一度Driver内部のメモリにロードした上で、テーブル化やクエリを実行していますので、ファイルの種類が増えるとクエリパフォーマンスに影響を及ぼす可能性があります。
そんな時はCDataSyncというデータレプリケーション製品で、BigQueryやAmazonRedshiftなどのDWHにレプリケーションするのがオススメです。
https://www.cdata.com/jp/sync/
CDataSyncも内部ではCData CSV Driverが使われているので、今回のようなアクセスが利用できます。
是非こちらのアプローチも試してみてください。