データベースからのデータの取り込み

データベースからのデータの取り込み

Pocket

前回、前々回で、ウィザードを使ったアプリケーション作成と、ウィザードを使わずにExcelやCSVからデータを取り込む方法をご紹介しました。
今回はデータベースからデータを取り込んでみましょう。

QlikViewはExcel、CSVなどのファイルだけでなく、ORACLE、SQL Server、Accessなどのデータベースからデータを取り込めます。
QlikViewはデータベースに接続する際、ODBCまたはOLE DBを使用します。そのため、これらに対応したデータベースであればQlikViewから接続可能です。
主要なデータベースでは必ずといっていいほど、ODBCまたはOLE DBのドライバーをベンダーが提供していますので、一般的なデータベースであればなんでも接続できると捉えていただいていいでしょう。

データベースからデータを取り込む際も、ファイルから取り込むときと同じように、GUIの画面からマウス操作だけで設定ができます。

ファイルのダウンロード
ロードスクリプトの編集画面の起動
データベースへの接続
テーブルの選択
テーブルの追加
チャートの作成
振り返り
最後に…
補足説明


ファイルのダウンロード

ここでは以下のファイルを使用しますので、ダウンロードしてください。
uriage-jisseki-access.zip
Zip形式ですので、ダウンロード後解凍してください。
uriage-jisseki.mdb
dataload-from-database-101売上のデータが格納されたMicrosoft Accessのデータベースです。売上明細というテーブルをはじめ、全部で4つのテーブルが格納されています。
今回使用するのは、Access 2003までの形式であるMDB形式のファイルですが、Access 2007以降をお使いの方や、Microsoft Officeをお持ちでない方でも、データベースに接続することは可能です。(MDB形式のファイルに接続するためのドライバーがWindowsに同梱されているため。)

売上明細テーブル
売上の明細データが格納されています。
dataload-from-database-102
商品分類1テーブル、商品分類2テーブル、商品テーブル
それぞれ商品の大分類、中分類、商品の情報が格納されています。
dataload-from-database-103


ロードスクリプトの編集画面の起動

データベースからデータを取り込みます。
前回同様、QlikViewを起動してデータを取り込むための[ロードスクリプトの編集]画面を起動するところまでやってみましょう。

QlikViewを起動してスタートページを表示します。
[ファイル]→[新規作成]を選択します。
dataload-from-database-201ウィザードが起動したら[キャンセル]ボタンを押してウィザードを終了します。

空のドキュメントが表示されます。
ツールバーの[ロードスクリプトの編集]ボタンをクリックします。
dataload-from-database-202[ロードスクリプトの編集]ウィンドウが表示されます。
ここまでは、前回と同様です。


データベースへの接続

データベースからデータを取り込むには、まずデータベースへの接続の設定をして、つぎに、取り込むテーブルや項目の設定をします。
ここではデータベースへの接続の設定をしてみましょう。

ロードスクリプトで「SET」の下の行をクリックして、最下行にカーソルをあわせます。
この状態で画面左側のドロップダウンから[OLE DB]を選択し、[接続]ボタンをクリックします。
dataload-from-database-30164bit版のQlikViewをお使いの方は、[32Bit互換モード]にチェックを入れてください。
これは64bit版のQlikViewで32bit版のOLE DB(ODBC)ドライバーを使用するためのものです。
[32Bit互換モード]の詳細はこちらをご確認ください。[1]
dataload-from-database-64bit-1このチュートリアルではOLE DBを使用します。ODBCを使用する場合はこちらをご確認ください。[2]

OLE DBのドライバーを選択する画面が表示されます。ここでは接続するデータベースにあわせて適切なものを選択します。
今回はAccess 2003のデータベース(MDB形式のファイル)に接続するドライバーである「Microsoft Jet 4.0 OLE DB Provider」を選択します。
[次へ]ボタンをクリックします。
dataload-from-database-302ここに目的のドライバーが表示されない場合は、ドライバーを追加でインストールする必要があります。
ご自身の環境で必要なドライバーについては、Web上の情報などをご確認いただくか、データベースのベンダーにご確認ください。

画面右の[…]のボタンをクリックします。
dataload-from-database-303
uriage-jisseki.mdbを選択します。
dataload-from-database-304
[接続のテスト]ボタンをクリックしてテストが成功することを確認します。
dataload-from-database-305
dataload-from-database-306
以上で接続の設定は完了です。
[OK]ボタンをクリックします。
dataload-from-database-307
[ロードスクリプトの編集]画面に戻りました。
「OLEDB CONNECT」というコマンドが設定されています。この一文がデータベースに接続するための設定です。
64bit版のQlikViewをお使いの場合は、「OLEDB CONNECT32」というコマンドが設定されます。
dataload-from-database-308


テーブルの選択

接続の設定が完了したら、つぎにデータベースから取り込むテーブルを選択します。
ロードスクリプトの最下行にカーソルをあわせて、[選択]ボタンをクリックします。
dataload-from-database-401
以下の画面が表示されます。ここからテーブルを選択できます。
dataload-from-database-402
「売上明細」テーブルを選択します。
画面右の[ロード文を先行]にチェックを入れて、[OK]ボタンをクリックします。
dataload-from-database-403
売上明細テーブルからデータを取り込むための指定が追加されました。[OK]ボタンをクリックします。
dataload-from-database-404[ロード文を先行]にチェックを入れたため「SQL SELECT」の前に「LOAD」というコマンドが追加されています。
単純にデータを取り込むだけであれば、[ロード文を先行]のチェックは不要(「LOAD」から「SQL」の前までの指定は不要)なのですが、詳細設定をする場合に(たとえば項目名を変更する場合などに)「LOAD」の指定が必要になります。
そのため、最初は必要ないと思っても[ロード文を先行]にはチェックを入れておく方が無難です。

データを取り込んでみましょう。
ファイルのときと同様、リロードを実行するまでデータは取り込まれません。
[リロード]ボタンをクリックします。
dataload-from-database-405
まだファイルを保存していない場合は、リロード前にファイルの保存を求められます。
任意の名前でファイルを保存してください。
dataload-from-database-406
dataload-from-database-407
[ロードスクリプトの進捗]画面で進捗を確認してください。
売上明細テーブルには2万件のデータが格納されています。
[ロードスクリプトの進捗]画面が開いたままの場合は、閉じてください。
dataload-from-database-408※ご注意
最新バージョンのQlikView 11.2 SR4でパッチが適用されていない場合、この時点で以下のエラーが表示されます。
インストーラーに同梱される「QlikView Patch X86.msp」を実行して、パッチを適用してください。
dataload-from-database-err-001
データが正しく取り込まれたかどうか簡単に確認してみましょう。
シートの余白を右クリック→[リストボックスの追加]を選択してください。
[項目]タブに項目が表示され、データが取り込まれていることが分かります。
確認できたら[キャンセル]ボタンをクリックして、画面を閉じてください。
dataload-from-database-409


テーブルの追加

追加で、商品分類1、商品分類2、商品の3テーブルを取り込んでみましょう。
[ロードスクリプトの編集]ボタンをクリックします。
dataload-from-database-501
カーソルを最下行にあわせて[選択]ボタンをクリックします。
dataload-from-database-502
「商品」を選択して、[追加]ボタンをクリックします。
dataload-from-database-503[追加]ボタンを使用すれば、一回一回画面を閉じずに、複数のテーブルを一括で指定できます。
同様にして、「商品分類1」を選択して[追加ボタン]、「商品分類2」を選択して[追加]ボタンをクリックします。
dataload-from-database-504dataload-from-database-505
以上で設定は完了です。[OK]ボタンをクリックします。
dataload-from-database-506
選択した3テーブルを取り込むための指定が追加されました。
[追加]ボタンを使用した場合、指定した箇所の上下に「//」ではじまる指定も追加されます。
これは一括で指定した範囲をあらわすためのコメントの指定ですので、不要であれば削除しても問題ありません。
ロードスクリプトでは、//はコメント行をあらわし、//よりも右側の記述は実行時には無視されます。その他のコメントの指定についてはこちらをご覧ください。[3]
dataload-from-database-507
以上で設定は完了です。[OK]ボタンをクリックします。
dataload-from-database-508
再度データを取り込んでみましょう。[リロード]ボタンをクリックします。
dataload-from-database-509
データが取り込まれました。[閉じる]ボタンをクリックします。
dataload-from-database-510


チャートの作成

データの取り込みはここまでで完了ですが、最後にチャートを作成してみましょう。
シートの余白を右クリック→[シートオブジェクトの追加]→[チャート]を選択します。
dataload-from-database-601
棒グラフを選択して[次へ]ボタンをクリックします。
dataload-from-database-602
軸項目を選択します。ここでは[分類名1]を選択して[追加]ボタンをクリックします。
dataload-from-database-603
[次へ]ボタンをクリックします。
dataload-from-database-604
最後に数式を以下のように設定します。
集計関数:合計値
テーブル:売上明細
項目:納品数量
設定後[貼り付け]ボタンをクリックします。
dataload-from-database-605
以下の数式が貼り付きました。
Sum (納品数量)
dataload-from-database-606SumというのはQlikViewの関数で、値を集計するものです。関数が分かるようであれば上記の数式を手入力で指定することもできます。

以上で完成です。[完了]ボタンをクリックします。
dataload-from-database-607
棒グラフができました。
dataload-from-database-608

以上で今回のチュートリアルは終了です。


振り返り

ここではデータベースからデータを取り込む方法についてご覧いただきました。以下に重要なポイントをまとめます。
  • ODBCまたはOLE DBに対応したデータベースであれば、QlikViewから接続可能。
  • データベースからデータを取り込む際は、接続の設定をしたあと、取り込むテーブルを選択する。
    • 接続の設定は、[ロードスクリプトの編集]画面左側の[接続]ボタン
    • 取り込むテーブルの選択は、[ロードスクリプトの編集]画面左側の[選択]ボタン
      • テーブル選択時に[ロード文を先行]にチェックを入れておくのが無難。
      • 複数のテーブルを取り込む場合は、[追加]ボタンが便利。
今回作成したロードスクリプトは以下のとおりです。
※前半の「SET」文は省略しています。
※「CONNECT」文の指定は環境によるため、このスクリプトをコピーして使用する場合は「CONNECT」文の部分は、ご利用の環境で設定しなおしてください。

OLEDB CONNECT TO [Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Users\qlikview\Desktop\uriage-jisseki-access\uriage-jisseki.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False];

LOAD `更新日時`,
    `商品番号`,
    `担当者番号`,
    `得意先番号`,
    `納品数量`,
    `納品日付`,
    `納品番号`,
    `納品明細番号`,
    `売上原価`,
    `売上実績番号`,
    `販売単価`,
    `部門管理番号`;
SQL SELECT *
FROM `売上明細`;

//-------- Start Multiple Select Statements ------
LOAD `希望小売価格`,
    `商品番号`,
    `商品名`,
    `商品名カナ`,
    `分類番号2`;
SQL SELECT *
FROM `商品`;

LOAD `分類番号1`,
    `分類名1`;
SQL SELECT *
FROM `商品分類1`;

LOAD `分類番号1`,
    `分類番号2`,
    `分類名2`;
SQL SELECT *
FROM `商品分類2`;
//-------- End Multiple Select Statements ------


最後に…

これまで3つのチュートリアルを掲載しましたが、QlikViewのごく基本的な使い方はご理解いただけたのではないでしょうか。
これ以降は、リストボックスやチャートのプロパティを学んだり、関数を学んだりすることで、目的のアプリケーションを作成できるようになることと思います。

また、基礎をマスターした後は、より高度な関数(Aggr関数など)を学んだり、グループ機能(ドリルダウングループ、サイクリックグループ)、SET分析、並列ステート、変数といったさらに高度な機能を学んでいくとよいでしょう。
しかしながら、まずはここまでの3つのチュートリアルをしっかりご理解いただくことが肝要です。ぜひ復習してみてください。
最初のアプリケーション作成
ウィザードを使わないデータの取り込み

次回以降は、オブジェクトのプロパティや関数などについて解説していく予定です。
また、QlikViewの特長や内部的なアーキテクチャーについても、より深く解説していきます。

お疲れ様でした。


補足説明

32bit互換モード

64bit版のQlikViewをお使い方は、Access 2003のデータベース(MDBファイル)に接続する場合は、[32bit互換モード]にチェックを入れてください。
dataload-from-database-64bit-1お使いのQlikViewが64bit版かどうかは、ウィンドウのタイトルで確認できます。
「QlikView」の文字に続けて「x64」と表示されている場合は64bit版です。
dataload-from-database-64bit-2[32bit互換モード]は64bit版のQlikViewでのみ使う機能です。32bit版のQlikViewではチェックを入れても入れなくても結果は変わりません。

dataload-from-database-64bit-464bit版のQlikViewでは、[32bit互換モード]にチェックが入っていない場合、64bit版のドライバーを使用します。
(OSやQlikViewと同じように、ODBCやOLE DBのドライバーにも32bit版と64bit版が用意されているものがあります。)

dataload-from-database-64bit-3[32Bit互換モード]にチェックが入っている場合、32bit版のドライバーを使用します。


MDBファイルのドライバーには64bit版がないため、32bit版のドライバーを使う必要があります。そのため、今回のチュートリアルでは、[32Bit互換モード]にチェックを入れています。
もとの記事に戻る。


ODBC接続

ODBCを使用する場合は、事前にODBCのデータソースの登録が必要です。
Windowsのコントロールパネル→管理ツールなどから、ODBCアドミニストレーターを起動します。
dataload-from-database-odbc-1
データソースを事前に登録しておけば、QlikViewから使用できます。
dataload-from-database-odbc-2
dataload-from-database-odbc-3
なお、64bit版のWindowsをお使いの場合は、ODBCアドミニストレーターにも32bit版と64bit版があります。
上記の画面から起動されるODBCアドミニストレーターは64bit版です。(64bit版のドライバーを設定するためのものです。)
32bit版のODBCアドミニストレーターは、以下のファイルを実行することで起動できます。
C:\Windows\SysWOW64\odbcad32.exe

詳細はマイクロソフトサポートオンラインの以下のページをご覧ください。
http://support.microsoft.com/kb/2458256/ja

もとの記事に戻る。


ロードスクリプトでのコメント

ロードスクリプトでは、以下の3種類の書き方でコメントを記述できます。
コメントは実行時には無視されるため、ロードスクリプトの中にメモを残す場合などにお使いください。
//
1行のコメント
「//」よりも右側の記述はコメントになります。

/* */
複数行のコメント
「/*」と「*/」で囲んだ部分はコメントになります。複数行をコメントにしたい場合に使用します。

rem ;
複数行のコメント
「rem」と「;」で囲んだ部分はコメントになります。/* */と書き方が違うだけで効果は同じです。
//コメント
//コメント

/*
コメント
コメント
*/

rem
コメント
コメント
;

もとの記事に戻る。