カテゴリー別アーカイブ: 8.データ接続

IN-DBから必要に応じてインメモリロード

オンデマンドロード

前回はIN-DBの仕組みについて説明しました。
SpotfireのIN-DBとIN-メモリという仕組みはそれぞれ、ビッグデータに強い・アナリティクスに強い、という特徴があるのですが、
実際にデータを分析する際には両方の要素が必要な場合が多々あります。

実はSpotfireのオンデマンド機能を使えば、IN-DBで選択した範囲のデータだけをIN-メモリにロードすることができます。

0

手順としてはまずIN-DBの接続を作成し、そちらから選択した範囲を別データテーブルに取り込むようにします。

IN-DB接続

IN-DBの接続定義です。
「ファイル」→「データテーブルの追加」

1

「追加」から任意のデータベースを選択します。

2

認証情報を入力し

3

今回はBASEBALLというアメリカ大リーグのデータを使用します。

4

接続した状態です。
右下の「外部データ」によりIN-DB接続であることがわかります。

5

このグラフをチーム別の年収ランキングにしました。
先頭の2チームの年収合計が群を抜いて高いため、この選手データをオンデマンドでINメモリにロードしてきます。

6

オンデマンド設定

オンデマンドの設定も途中までは先ほどのデータ接続と同じです。
「ファイル」→「データテーブルの追加」で同様のテーブルを読み込みます。

7

「データテーブルの追加」画面まで進みます。
ここで重要な2つのチェックボックスがあります。
まずは「ロードする方法」で「データテーブルをインポート」を選択し、INメモリロード指定します。
また「オンデマンドでロード」をチェックし条件を指定してロードする設定にします。

9

「設定」ボタンを押してオンデマンドの設定を実施しましょう。

「オンデマンド設定」画面が開きます。
今回は、IN-DBの「TEAM」を元にデータをロードしたいので
パラメータ「TEAM」を設定します。「入力」欄をダブルクリックしてください。

10

抽出条件の取得先設定をします。

すでに作成したBASEBALLデータテーブルのTEAMで選択されているデータをロードしたいので、データテーブルとカラムを設定します。
11

条件が設定できました。
ちなみに「自動的にロード」をONにしておくとマークの変更に応じて自動的にロードされます。
チェックがない場合は、更新ボタンが表示されます。

12

オンデマンドの動作

オンデマンドロードの設定が完了です。
このような選択されている2チーム分のデータ(48ロー)がロードされています。

13

条件を変更して他TEAMを選択すると、再度データがロードされ対応する13件のデータが
ロードされます。

14

カスタムクエリ接続

カスタムクエリ接続

前回の記事ではSpotfireからデータベース接続する方法について触れました。
今回はデータ接続機能の「カスタムクエリ」について説明します。

※カスタムクエリはSpotfire6.5以上の機能になります。

カスタムクエリ

カスタムクエリとは簡単に言うとSQLを記載したデータベースアクセスです。
記事の中にある通りSQLを編集して再度実行することもできますので、
グラフはそのままで、絞り込み条件を変更しながら分析することも可能です。

接続方法

「ファイル」→「データテーブルの追加」から
「追加」を選択し「データ接続」の中から任意のデータベースを選択します。

1

私は自分の端末の中にPostgreSQLが入っているのでこちらを選択します。
接続がグレーアウトして選択できない場合はドライバーをインストールする必要がありますので
それぞれのデータベースに対応するドライバーをこちらで調べてください。

2

サーバーとログイン情報を入力して「接続」を押します。

3

「接続内のビュー」が表示されアクセス可能なテーブル一覧が表示されます。
ここまでは通常の接続と同じですが、こちらで「カスタムクエリ」を選択してください。

4

クエリを記載する画面になりますので、必要なSQLを記載してください。
※時間が無かったので汚い作法のクエリを書いてしまってすいません。。。

「確認」を押して結果カラムにカラム名が表示されればロード可能です。
また、一番上のクエリ名に任意の名前を入力します。

5

OKを押すと「接続内のビュー」に戻りますが、こちらでカスタムクエリで作成した
joinTableが表示されています。
これを選択して「追加」を押し、右に移動させ、OKを押します。

6

これでカスタムクエリの準備は終了です。
この画面では「ロードする方法」が選択できますので
インメモリで分析する場合は「データテーブルをインポート」
インDBで分析する場合は「データテーブルを外部に保つ」
を選択してください。

7

インDBで分析してみました。
円グラフで売り上げのシェアを表示して、選択ブランドのランキングを下の棒グラフで表示するようにしましたが、商品数が多すぎるので主要な商品だけに絞り込みたいと思います。

カスタムクエリの編集

8

一度定義したカスタムクエリを編集することも可能です。
「編集」から「データ接続のプロパティ」を開いてください。

9

「設定」をクリックします。

10

「編集」をクリックします。

11

先ほどの「接続内のビュー」画面が表示されるのでjoinTableを選択し、カスタムクエリから「カスタムクエリの編集」を選択します。

12

クエリの編集画面が表示されますので、こちらで編集後のSQLを記載します。
※一度汚いクエリを書くと連鎖的に広がってそのうち解読不可能になりそうですね。。。
ある一定以上の売り上げがあるプロダクトだけに絞り込んでみました。

13

SQL編集後の結果です。
売り上げが大きい商品に絞り込んで分析をすることができました。

データベース接続

データ接続

Spotfireからデータベースに接続する場合はデータ接続機能を使用すると便利です。
データ接続以外でもクライアントPCにドライバーがインストールされていれば、「開く」→「データベース」でデータを読み出すことが可能ですが、
データ接続でも一般的なデータベースであればサポートされていますし、機能も豊富です。

準備されているデータコネクターに関してはこちらのリストを御覧ください。
※バージョンにより異なります。

データベースに直接接続する場合と比較すると、インDBやカスタムクエリなどの機能を使うことが可能です。

インDBとは?

Spotfireはインメモリ技術による高速な集計が売りですが、
より大量なデータに対応するためにインDBというモードでも動作します。

インDBではSpotfireの操作に応じて動的にデータベースにSQLを発行し、
グラフ化に必要な集計データだけを取得します。

1

データベース側の処理がメインになりますので、クライアント側(Spotfire側)にはそれほど負荷がかかりません。
その反面データベース側には負荷がかかりますので、同時接続ユーザーが増える場合はデータベース側にそれなりのスペックが必要になってきます。

接続方法

インDBで接続するには「ファイル」→「データテーブルの追加」から
「追加」で「接続先」を選択します。
2

こちらに接続先一覧が表示されるのでご目当てのデータベースを選択します。
ちなみにグレーアウトされている場合はドライバーがインストールされていないので、
別途入手して端末にインストールしてください。

今回はSQL Serverを選択してみました。
サーバーを指定してユーザー名とパスワードを入力し「接続」すると
接続先データベースが選択できます。
3

テーブル一覧が表示されますので、必要なテーブルを選択します。
ちなみに複数テーブル選択することも可能です。

4

インDB接続

ここまではデータベースに接続する設定です。
次の画面でインメモリかインDBか選択します。

「ロードする方法」という項目があり
・データテーブルをインポート
を選択すると、通常通りインメモリで動作します。
・データテーブルを外部に保つ
を選択するとインDBで動作します。

5

インDBの制限

インDBだと、テーブルは1万件しか表示できなかったり
カスタム演算式や計算カラムの関数も制限されます(SQLで実行できる範囲内になるのでデータベースに準拠します)、またデータリレーションなどの統計機能も使用不可です。
フィルターパネルも自動的には作成されないので、必要な場合は手動で追加する必要があります。

6

操作とクエリ

実際にどのような動作をしているのかSQL Profilerを使用して確認してみます。

まずはテーブルを作成しました。
1

こちらがクエリの内容です。1万行で制限がかかっているのがわかります。
2

次はチーム別に棒グラフで集計してみました。

3

発行されるクエリもgroup by されていますね。
4

ついでに、縦軸をサラリーにし、チームでフィルターをかけてみました。
5

フィルターをかけるとクエリはsql_executeで実行されています。
6

機能的な制限

6.5
メニューからの機能でも使えないメニューはグレーアウトされます。

7
軸の集計でもインメモリとは異なりSQLで実行できる集計のみ表示されます。

接続設定の保存

データベース接続はできるようになったので、ひとまず安心ですが、
このままDXPファイルに保存すると、ファイルを開くたびにログイン情報を聞いてきます。

めんどくさい場合はログイン情報をファイル内に保存してしまいましょう。
「ファイル」から「データ接続のプロパティ」で「設定」をクリック

14

「データベース接続の設定」画面で「データソース」タブで「設定」をクリックします。

15

「資格情報」タブで接続情報を保存するか設定できますので、「はい」を選択してください。

これで保存すると次回からは自動的にDB接続が行われます。