複数のExcelの売上ファイル、1つのテーブルに集約 元ファイルの場所までわかる
本記事はCDataが提供する「CData Software Blog」に掲載された「Excel & CSV ドライバ : ファイル集約時に元のファイルの場所を取得する」を再編集したものです。
CData Excel Drivers やCData CSV Drivers はExcel ファイルやCSV ファイルの内容をテーブルとしてアクセスしSQL での操作を可能にします。また、これらのドライバは複数のファイルのデータを一つのテーブルに集約する機能があります。例えば月ごとに分かれた時系列データを集約し、1年分のデータが格納された1つのテーブルとして扱いたいときなどに便利です。
本記事ではCData Excel Drivers やCData CSV Drivers で複数ファイルのデータを集約する方法と、集約時にソースとなるファイルの場所を取得する方法を紹介します。ここではCData Excel Drivers での設定方法を説明しますがCData CSV Drivers でも同様の方法を利用できます。
はじめに、以下のように3つのファイルに分かれた売上データ(Sales.xlsx)を1つのテーブルに集約する方法を示します。
これら3つのファイルは「C:\Work\Excel\Sales」にあると仮定します。デフォルトの設定でこれをCData Excel Drivers でアクセスすると以下のようにそれぞれのファイルに対してスキーマが作成されます。
プロパティ設定
クエリ
-- テーブル一覧を取得する
select SchemaName, TableName, Description from sys_tables;
結果
ここで、以下のようにAggregateFilesプロパティをTrueに設定すると、各ファイルのデータが1つのテーブルに集約されます。
プロパティ設定
クエリ
-- テーブル一覧を取得する
select SchemaName, TableName, Description from sys_tables;
結果
集約されたテーブルsales にクエリすると、以下のように売上データを記録した3つのファイルデータが集約されたテーブルにアクセスできます。
クエリ
-- salesテーブルのレコードを取得する
select * from sales;
結果
集約されたテーブルはソースとなるファイル情報は隠ぺいされます。一方でソースとなるファイルごとにデータを取捨選択したいといったケースがあります。このような要望に対し、ドライバは集約テーブルのレコードごとにソースとなるファイルの場所を表示することができます。
これを取得するにはIncludeResourceColumnプロパティをTrueに設定します。CData Excel Drivers ではv24.1 でこのプロパティがサポートされました。
このプロパティを設定したときの動作例を示します。集約テーブルにURI というカラムが追加され、各レコードのソースとなるファイルのパスが取得できます。
プロパティ設定
クエリ
-- salesテーブルのレコードを取得する
select * from sales;
結果
この記事の編集者は以下の記事もオススメしています
-
デジタル
GoogleスプシからDr.Sumへ ゼロETLでデータをインポートする -
デジタル
似て非なるデータ仮想化とデータ統合 ユーザーに最適な選択肢とは? -
デジタル
ODBCドライバーとは? ODBCの仕組みからドライバーの使い方まで解説! -
デジタル
イベント管理SaaSとBIがノーコードで連携できると、参加者動向がガッツリ分析できて便利 -
デジタル
Google Analytics 4の生データをAmazon Redshiftに継続的レプリケーション -
デジタル
使い慣れたExcelからSalesforceのデータを絞り込んで、担当者ごとに検索できるようにする方法 -
デジタル
もう迷わない Oracle DB接続 CData Drivers & CData Syncを設定する