Excel から Actian Zen にアクセスしてデータを簡単抽出
システム担当者様の中には、ユーザー部門から集計データなどの抽出を要望されることもあるかと思います。システム担当の方から「データベースに詳しくない人でも簡単にデータを扱えるツールがあると便利」というご意見もちらほら耳にします。
そこで今回は、操作性、費用面ともに「簡単」なツールである Excel から Zen にアクセスする方法をご紹介します。
Excel には「Microsoft Query」という機能が付属しており、これを使って直接 Zen のデータにアクセスしてデータを抽出することができます。なお、事前準備として以下2点が必要です。
*1. Btrieve ファイルを SQL で扱えるようにテーブルとして登録する。
*2. Microsoft Query を使う PC で ODBC アクセス用の DSN を作成する。
*1…以下に手順として紹介しておりますのでご参照ください。
「Btrieve ファイルを データベース に登録する方法」
https://www.agtech.co.jp/products/actian/psql/pdf/Actian_Zen_API2SQL.pdf
*2…DSN を作成するには、その PC に Zen の ODBC ドライバがインストールされている必要があります。ODBC ドライバは Actian Zen のインストールモジュールに含まれています。評価版でも構いません(評価期限終了後もドライバ自体は使用可能です)
Microsoft Query とは
Microsoft Query は Excel に標準で付属している機能で、ODBC 接続を使用して外部データソースに接続し、そのソース内のデータを任意で抽出して、Excel ワークシートにインポートすることができます。SQL を使わず、GUI で簡単に条件指定して抽出できます。
操作手順
Actian Zenの「DEMODATA」に接続してみます。
Actian Zen にはデモ用のデータベース「DEMODATA」が搭載されています。
Excelから Microsoft Query を呼び出します。
データ>その他のデータソース>Microsoft Queryから を選択します。
※単一のテーブルのインポートだけなら「データ接続ウィザードから」でも可能です。
1. クエリウィザードで操作する
まずはクエリウィザードで操作してみます。
「クエリウィザードを使ってクエリを作成」にチェックを入れたまま、接続用 DSN「demodata」を選択し、OK をクリックします。
DEMODATA に接続しました。
Billing テーブルから項目「Student_ID」「Amount_Owed」「Amount_Paid」を選択します。
Amount_Owed が 2000.00 ドルを超えるデータ(> 2000.00)を条件設定します。
同様に Amount_Paid が 1500.00 ドルを超えるデータ(> 1500.00)を設定します。
続いて、データの並べ替え順を指定します。ここでは Student_ID の昇順で設定します。
最後にデータの抽出先を指定します。ここでは Excel(新規シート)にインポートします。
Amount_Owed が 2000 ドル以上で Amount_Paid が 1500 ドル以上のデータが Student_ID 昇順にインポートされました。(実際には 402 レコードが抽出されています)
以上が基本的な操作です。
クエリウィザードでは同じフィールド名を持つ項目どうしを自動的に内部結合するので、2つ以上のテーブルで紐づくデータを抽出することもできますが、本来同じ属性のデータ項目なのにフィールド名が異なっていると自動結合されません。そんなときはウィザードを使用せず、直接 Microsoft Query で操作します。
2. Microsoft Query で操作する
今度はクエリウィザードから、Billing テーブルの 3 項目に加えて、Person テーブルの「First_Name」「Last_Name」を抽出するとします。ここで Billing テーブルの「Student_ID」と Person テーブルの「ID」は共通の学生ID であり、データベースとしてはリレーション可能なキーです。
[次へ]をクリックすると、以下のアラートが表示されるので、[OK]をクリックします。
すると、Microsoft Query の画面に選択した 5 項目が表示されますが、1つの Student_ID に全ての First_Name と Last_Name が紐づいてしまっています。
ここで、上部の2つのボックス内の項目「Student_ID」と「ID」をマウスのドラッグアンドドロップでつなぐと内部結合により、Student_ID に氏名が紐づきました。(1つの ID に1つの First_Name と Last_Name が紐づきました)
続いて、クエリウィザードのときと同じく Amount_Owed が 2000 ドル、かつ Amount_Paid が 1500 ドルを超えるデータを抽出します。
[表示]タブから[抽出条件]をクリックし、抽出条件フィールドを表示させ、それぞれ値を入力します。
ツールバーの左から4番目[データを返す]をクリックして、インポート先に Excel の新規シートを指定すると、先ほどと同じようにワークシート上に 402 件のデータが返されます。(Student_ID に氏名が紐づいた状態です)
Microsoft Query を使えば簡単にデータベースからデータを抽出でき、さらに使い慣れた Excel の機能で2次加工も簡単にできます。
運用担当者様の負荷削減対策の一つとして試してみてはいかがでしょうか?