
データベースからのデータの取り込み
前回、前々回で、ウィザードを使ったアプリケーション作成と、ウィザードを使わずに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

今回使用するのは、Access 2003までの形式であるMDB形式のファイルですが、Access 2007以降をお使いの方や、Microsoft Officeをお持ちでない方でも、データベースに接続することは可能です。(MDB形式のファイルに接続するためのドライバーがWindowsに同梱されているため。)
売上明細テーブル
売上の明細データが格納されています。

商品分類1テーブル、商品分類2テーブル、商品テーブル
それぞれ商品の大分類、中分類、商品の情報が格納されています。

ロードスクリプトの編集画面の起動
データベースからデータを取り込みます。前回同様、QlikViewを起動してデータを取り込むための[ロードスクリプトの編集]画面を起動するところまでやってみましょう。
QlikViewを起動してスタートページを表示します。
[ファイル]→[新規作成]を選択します。

空のドキュメントが表示されます。
ツールバーの[ロードスクリプトの編集]ボタンをクリックします。

ここまでは、前回と同様です。
データベースへの接続
データベースからデータを取り込むには、まずデータベースへの接続の設定をして、つぎに、取り込むテーブルや項目の設定をします。ここではデータベースへの接続の設定をしてみましょう。
ロードスクリプトで「SET」の下の行をクリックして、最下行にカーソルをあわせます。
この状態で画面左側のドロップダウンから[OLE DB]を選択し、[接続]ボタンをクリックします。

これは64bit版のQlikViewで32bit版のOLE DB(ODBC)ドライバーを使用するためのものです。
[32Bit互換モード]の詳細はこちらをご確認ください。[1]

OLE DBのドライバーを選択する画面が表示されます。ここでは接続するデータベースにあわせて適切なものを選択します。
今回はAccess 2003のデータベース(MDB形式のファイル)に接続するドライバーである「Microsoft Jet 4.0 OLE DB Provider」を選択します。
[次へ]ボタンをクリックします。

ご自身の環境で必要なドライバーについては、Web上の情報などをご確認いただくか、データベースのベンダーにご確認ください。
画面右の[…]のボタンをクリックします。

uriage-jisseki.mdbを選択します。

[接続のテスト]ボタンをクリックしてテストが成功することを確認します。


以上で接続の設定は完了です。
[OK]ボタンをクリックします。

[ロードスクリプトの編集]画面に戻りました。
「OLEDB CONNECT」というコマンドが設定されています。この一文がデータベースに接続するための設定です。
64bit版のQlikViewをお使いの場合は、「OLEDB CONNECT32」というコマンドが設定されます。

テーブルの選択
接続の設定が完了したら、つぎにデータベースから取り込むテーブルを選択します。ロードスクリプトの最下行にカーソルをあわせて、[選択]ボタンをクリックします。

以下の画面が表示されます。ここからテーブルを選択できます。

「売上明細」テーブルを選択します。
画面右の[ロード文を先行]にチェックを入れて、[OK]ボタンをクリックします。

売上明細テーブルからデータを取り込むための指定が追加されました。[OK]ボタンをクリックします。

単純にデータを取り込むだけであれば、[ロード文を先行]のチェックは不要(「LOAD」から「SQL」の前までの指定は不要)なのですが、詳細設定をする場合に(たとえば項目名を変更する場合などに)「LOAD」の指定が必要になります。
そのため、最初は必要ないと思っても[ロード文を先行]にはチェックを入れておく方が無難です。
データを取り込んでみましょう。
ファイルのときと同様、リロードを実行するまでデータは取り込まれません。
[リロード]ボタンをクリックします。

まだファイルを保存していない場合は、リロード前にファイルの保存を求められます。
任意の名前でファイルを保存してください。


[ロードスクリプトの進捗]画面で進捗を確認してください。
売上明細テーブルには2万件のデータが格納されています。
[ロードスクリプトの進捗]画面が開いたままの場合は、閉じてください。

最新バージョンのQlikView 11.2 SR4でパッチが適用されていない場合、この時点で以下のエラーが表示されます。
インストーラーに同梱される「QlikView Patch X86.msp」を実行して、パッチを適用してください。

データが正しく取り込まれたかどうか簡単に確認してみましょう。
シートの余白を右クリック→[リストボックスの追加]を選択してください。
[項目]タブに項目が表示され、データが取り込まれていることが分かります。
確認できたら[キャンセル]ボタンをクリックして、画面を閉じてください。

テーブルの追加
追加で、商品分類1、商品分類2、商品の3テーブルを取り込んでみましょう。[ロードスクリプトの編集]ボタンをクリックします。

カーソルを最下行にあわせて[選択]ボタンをクリックします。

「商品」を選択して、[追加]ボタンをクリックします。

同様にして、「商品分類1」を選択して[追加ボタン]、「商品分類2」を選択して[追加]ボタンをクリックします。


以上で設定は完了です。[OK]ボタンをクリックします。

選択した3テーブルを取り込むための指定が追加されました。
[追加]ボタンを使用した場合、指定した箇所の上下に「//」ではじまる指定も追加されます。
これは一括で指定した範囲をあらわすためのコメントの指定ですので、不要であれば削除しても問題ありません。
ロードスクリプトでは、//はコメント行をあらわし、//よりも右側の記述は実行時には無視されます。その他のコメントの指定についてはこちらをご覧ください。[3]

以上で設定は完了です。[OK]ボタンをクリックします。

再度データを取り込んでみましょう。[リロード]ボタンをクリックします。

データが取り込まれました。[閉じる]ボタンをクリックします。

チャートの作成
データの取り込みはここまでで完了ですが、最後にチャートを作成してみましょう。シートの余白を右クリック→[シートオブジェクトの追加]→[チャート]を選択します。

棒グラフを選択して[次へ]ボタンをクリックします。

軸項目を選択します。ここでは[分類名1]を選択して[追加]ボタンをクリックします。

[次へ]ボタンをクリックします。

最後に数式を以下のように設定します。
集計関数:合計値
テーブル:売上明細
項目:納品数量
設定後[貼り付け]ボタンをクリックします。

以下の数式が貼り付きました。
Sum (納品数量)

以上で完成です。[完了]ボタンをクリックします。

棒グラフができました。

以上で今回のチュートリアルは終了です。
振り返り
ここではデータベースからデータを取り込む方法についてご覧いただきました。以下に重要なポイントをまとめます。- 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互換モード]にチェックを入れてください。
「QlikView」の文字に続けて「x64」と表示されている場合は64bit版です。


(OSやQlikViewと同じように、ODBCやOLE DBのドライバーにも32bit版と64bit版が用意されているものがあります。)

MDBファイルのドライバーには64bit版がないため、32bit版のドライバーを使う必要があります。そのため、今回のチュートリアルでは、[32Bit互換モード]にチェックを入れています。
もとの記事に戻る。
ODBC接続
ODBCを使用する場合は、事前にODBCのデータソースの登録が必要です。Windowsのコントロールパネル→管理ツールなどから、ODBCアドミニストレーターを起動します。

データソースを事前に登録しておけば、QlikViewから使用できます。


なお、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 コメント コメント ;
もとの記事に戻る。