Amazon S3 のCSVデータを集計クエリとサブフォルダーの展開を使って読み取る:CData CSV Driver V20 Update その4

by 杉本和也 | 2020年09月18日

こんにちは。CData Software Japan リードエンジニアの杉本です。

過去3回に渡って、CData CSV Driver V20 Updateを紹介してきました。

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp

どれも良い機能なんですが、おそらく昨今こういったデータの扱いはAmazon S3やAzure Blob Storageなどのクラウドストレージに配置することも多いのではないかと思います。

CData CSV Driver は前回のアップデートでローカルのCSVファイルだけでなく、12種類のクラウドストレージやSFTPといったリモートアクセスベースのCSV読み取りにも対応しました。

cdn.cdata.com

f:id:sugimomoto:20200918115406p:plain

今回の記事では、先の記事で紹介した「集計クエリ」「サブフォルダー読み取り」「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

f:id:sugimomoto:20200915104921p:plain

f:id:sugimomoto:20200918115414p:plain

通常の 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

f:id:sugimomoto:20200918115421p:plain

これで、 Power BIなどから接続してみると、対象フォルダのルートに配置されているCSVファイルだけ読み取ることができます。

f:id:sugimomoto:20200918115429p:plain

サブフォルダー読み取り:Include Subdirectories

次に「Include Subdirectories」をTrueにした状態で接続を行ってみます。他のプロパティは変更ありません。

f:id:sugimomoto:20200918115435p:plain

すると、以下のようにサブフォルダーに存在するCSVファイルも一つ一つ独立したテーブルとして読み取ることができるようになりました。

f:id:sugimomoto:20200918115751p:plain

集計クエリ:Aggregate Files

続いて、「Include Subdirectories」に追加する形で「Aggregate Files」のプロパティもTrueにして接続してみます。

f:id:sugimomoto:20200918115445p:plain

今度は、以下のようにそれぞれのCSVファイルを一つのテーブルとしてアクセスできるようになりました。

Amazon S3などのクラウドストレージでもこのように複数フォルダ・複数CSVファイルをまとめてクエリできるようになっています。

f:id:sugimomoto:20200918115451p:plain

ZIPファイル読み取り

最後にZIPファイルも試してみましょう。

別なフォルダに先程までアクセスしていたファイル構造をZIP化したものを配置しました。

f:id:sugimomoto:20200918115457p:plain

接続設定は先程までのプロパティに追加する形で、「Include Files」のプロパティに「ZIP」を加えるだけです。

f:id:sugimomoto:20200918115505p:plain

これでPower BIからアクセスしてみると、以下のようにZIPファイルの中身に存在する各サブフォルダーのCSVファイルをまとめて読み込むことができました。

f:id:sugimomoto:20200918115512p:plain

このように今まで紹介してきた各種機能はクラウドストレージでも同じ様に利用できます!

注意点

こんな便利なCSV Driverですが、ひとつ注意があります。この集計クエリ機能やサブフォルダーの読み取り機能は一度Driver内部のメモリにロードした上で、テーブル化やクエリを実行していますので、ファイルの種類が増えるとクエリパフォーマンスに影響を及ぼす可能性があります。

そんな時はCDataSyncというデータレプリケーション製品で、BigQueryやAmazonRedshiftなどのDWHにレプリケーションするのがオススメです。

https://www.cdata.com/jp/sync/

f:id:sugimomoto:20200918115518p:plain

CDataSyncも内部ではCData CSV Driverが使われているので、今回のようなアクセスが利用できます。

是非こちらのアプローチも試してみてください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。