CData Software Blog

クラウド連携のCData Software の技術ブログです。

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

こんにちは。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が使われているので、今回のようなアクセスが利用できます。

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