2014年12月25日木曜日

QlikViewが遅い時は数式の最適化を検討する

インメモリ技術と圧縮技術による高速処理が売りのQlikViewですが、リレーションやチャートの実装内容によっては計算処理に時間がかかりパフォーマンスが悪化します。遅いだけでなく、メモリを使い切りハングしてしまうこともあるため、数式の最適化は重要です。

以下にパフォーマンスを改善する上でのトピックを記載します。

QlikView計算処理の負荷が小さいもの


・Sum

・SET分析

・関数

QlikView計算処理の負荷が大きいもの


・Count

件数をカウントする場合、整合性を確保する意味でもcountの利用は注意が必要です。
QlikViewではSQLのようにテーブル名で修飾することができないため、キー項目をカウントする場合はマスタの件数なのか、トランザクションの件数なのか判断できないことがあります。
 

QlikViewのカウント処理


顧客コードで関連付けられる下記のようなテーブルがあるとき、count(顧客コード)の結果はマスタとトランザクションを合計したレコード数が返却されます。

マスタテーブル

顧客マスタ:
 ・顧客コード
 ・顧客名
 
トランザクションテーブル

売上明細:
 ・明細番号
 ・売上日
 ・顧客コード
 ・商品コード
 ・売上金額

Distinctを付けた場合、(マスタに存在しない顧客コードはトランザクションに存在しないという前提なら)マスタのレコード件数を取得することが出来ますが、下記のようにロードスクリプトでカウンタ用の項目を保持するのがQlikViewに適した実装になります。

顧客マスタ:
LOAD 1 as 明細件数,
顧客コード,
顧客名・・・

・if文

・不要な正規化


if文による判定とSet分析の判定では処理速度に3~20倍も差が開くことがあります。

チャートに数式を埋め込む場合は、可能な限りSet分析で置き換えられないか検討してください。


関連記事


QlikViewパーソナルエディションをインストールする

国内導入実績No1、Dr.SumとQlikViewを比較する

QlikViewの開発は命名規則が重要

ロードスクリプトはタブ分けすることで開発生産性が高まる

QlikViewが遅い時は数式の最適化を検討する

ロードスクリプトはタブ分けすることで開発生産性が高まる

ロードスクリプトは処理内容別にタブで分け、分かりやすい名前をつけて置くと生産性・保守性が高まります。

タブを分割した場合、ロードスクリプトは左から右に処理されるため、順序性には注意しましょう。

よくあるタブ分けの例を示します。


・マスタタブ

住所マスタなど、マスタデータに関するロードスクリプト。

・カレンダータブ

カレンダーデータに関するロードスクリプト。月別日数の計算や時系列インデックスの生成はここで行います。

・トランザクションタブ

ファクトテーブルのロードスクリプト。クレンジングはこのタブ内で完結するように集約します。

・統計データタブ

統計関連データに関するロードスクリプト。

・システム関連タブ

システムの制御に関するロードスクリプト。

・事業部別タブ

事業部専用データに関するロードスクリプト。事業部毎の予算や補正データに関する処理はここで行います。


関連記事


QlikViewパーソナルエディションをインストールする

国内導入実績No1、Dr.SumとQlikViewを比較する

QlikViewの開発は命名規則が重要

ロードスクリプトはタブ分けすることで開発生産性が高まる

QlikViewが遅い時は数式の最適化を検討する

QlikViewの開発は命名規則が重要

QlikViewは項目名でデータの関連付けが行われるため、開発生産性、保守性を高める上で命名規則の設計が重要になります。

命名規則を決めずに属人的なルールで開発を進めていると、複数人での開発や、引き継ぎの際に混乱が生じるばかりか、品質面でも重大な課題を抱えてしまうリスクがあります。データの分析範囲が広がり、取り込むデータソースが増えるにつれて項目名の一貫性が保ちにくくなるため、設計当初から複数事業部、様々な利用目的を想定しておくことが大切です。


命名規則の設計例


QVWファイル名


DocumentCALはQVWファイル単位で設定するため、QVWのファイルが変更になるとDocumentCALの再登録が必要になります。

データソース取込フォルダ


利用部署や目的、データ更新サイクルが異なるデータソースが混在していると移行やメンテナンス時に漏れが生じる可能性が高くなります。

項目名


項目名でリレーションが行われるQlikViewにとって、項目名は大変重要な項目になります。

リレーションだけでなく、チャート上の項目見出しとしても整合性が取れている内容か慎重に判断する必要があります。

以下に項目名の命名パターンを列挙します。

・変数項目 V_

事業部別の項目 COS_ (化粧品事業)  CARE_ (介護事業)

・キー項目 _key

・フラグ項目 _flg

・ワーク項目 _work

※後続の処理でDROP Fields、DROP Table文で削除します

たとえば、売上金額などの項目は事業部ごとの売上金額を個別に集計したいケースがあります。

その際にSet分析で条件を指定(QlikView独自の文法。if文よりも高速)することも出来ますが、ロードスクリプトでCOS_売上金額など、事業部別のプレフィックスを設定した項目に金額を振分けることで、より高速に集計することが出来ます。

BIをスモールスタートで導入する場合、後に分析対象の事業部が増えることが想定されますので、複数事業部の項目が混在しても分かりやすいような命名規則を設計することが重要です。



関連記事


QlikViewパーソナルエディションをインストールする

国内導入実績No1、Dr.SumとQlikViewを比較する

QlikViewの開発は命名規則が重要

ロードスクリプトはタブ分けすることで開発生産性が高まる

QlikViewが遅い時は数式の最適化を検討する

2014年12月24日水曜日

国内導入実績No1、Dr.SumとQlikViewを比較する

BIツール国内導入シェアNo1であるDr.SumとQlikViewを比較した場合、1番の違いはライセンス形態です。ユーザーライセンスのQlikViewが1ユーザー毎に費用が発生するのに対し、サーバーライセンスのDr.Sumはユーザー数の制約はありません。全社的な見える化など、数百人、数千人がBI分析ツールを利用するようなシーンでコストメリットが発生します。

反対にBI分析ツールを利用する担当者が限られている場合、下記の観点でQlikViewが勝っている、もしくは同等以上と言えるほど、QlikViewに弱点はありません。

データ分析に力を入れている企業では、全社的な見える化(定型分析)にはDr.Sum、マーケティング分析(非定形分析)にはQlikViewと用途に応じてBIツールを使い分けている企業もあります。

※よく知られている例では回転寿司のスシローが上記のパターンに該当します

Dr.SumとQlikViewの製品比較


1.導入実績

 QlikView : ○ 

 世界3万社以上、国内700社以上の導入実績。

 Dr.Sum  : ◎ 

 正確なデータは不明ですが、国内数千社以上は導入されています。

2.集計速度(レスポンスタイム)

 QlikView : ◎ 

 インメモリ型DB、連想技術で超高速

 Dr.Sum  : ◎

 インメモリ型DB

※実装次第で大きく変わることもあります

3.ライセンス料

 QlikView : △ 

 450万円~ ユーザー数に応じて変動

 Dr.Sum  : ○ 

 500万円~ データ件数に応じて変動

4.保守サポート

 QlikView : ◎
 
 国内で言えばITのパッケージベンダーであるアシストのサポートが有名です。

 競争力の高い海外製のBIツールは多々ありますが電話サポートや開発支援まで対応できる代理店んを持つ製品はまだまだ少数です。

 Dr.Sum  : ◎

 国産ブランドの強みを活かし、抜群のサポート体制です。代理店や開発パートナーが多いのも魅力。

5.リードタイム

 QlikView : ◎

 多少の文法違いはありますがER図やリレーションナルDBの設計経験、SQLの開発経験が3年程度あるSEなら1ヶ月程度のリードタイムで十分使いこなせる状態になります。

 オラクルマスターシルバー程度のスキルと、帳票設計、データウェアハウスやデータ分析の経験があれば鬼に金棒です。

 Dr.Sum  : ○

6.開発生産性

 QlikView : ◎

 驚異的と言ってもいい程の生産性の高さはQlikView最大の魅力と言っても過言ではないでしょう。

 数ヶ月単位から2週間単位へ、データマートなど事前の集計処理が必要であった従来型のBIツールに比べ、数倍の開発スピードで分析サイクルを回すことができます。

 Dr.Sum  : ○

7.移植性

 QlikView : ◎

 IISで構成されるQlikViewはサーバ構築から設定まで1度経験すれば理解することができます。

 Dr.Sum  : △

 モーションボードなど、幾つかの製品群で構成されるDr.Sumの移植性は容易とは言えません。

8.セキュリティー

 QlikView : ◎

 ADとの認証統合やOS認証によるシングルサインオン、Windowsのアクセス権限を利用したファイル保護、QlikView独自の機能であるセクションアクセスなど、QlikViewのセキュリティーは堅牢です。

 セクションアクセスを実装することでシート単位のアクセス制御や、チャート、データ単位での制御を容易に実装することが出来ます。

 Dr.Sum  : ◎

9.操作性

 QlikView : ◎

 クリックして絞り込む。もう一度クリックして絞り込みを解除する。これまで幾つかの会社へQlikViewを導入してきましたが、マニュアルが必要になったことは一度も有りません。

 Dr.Sum  : ◎



関連記事


QlikViewパーソナルエディションをインストールする

国内導入実績No1、Dr.SumとQlikViewを比較する

QlikViewの開発は命名規則が重要

ロードスクリプトはタブ分けすることで開発生産性が高まる

QlikViewが遅い時は数式の最適化を検討する

QlikViewパーソナルエディションをインストールする

QlikViewパーソナルエディションは個人利用に限定されますがQlikViewの分析機能を無期限でフルに使うことができる分析プラットフォームです。商用版移行後も開発クライアントとして活用できるため、QlikViewパーソナルエディションで学んだ知識は無駄になりません。

※厳密には他のクライアントで作成されたQlikViewドキュメントファイル(QVW)を開くことが出来ないなどの制限があります

ではさっそくQlikViewパーソナルエディションをインストールしてみましょう。

QlikViewパーソナルエディションはクリックテック・ジャパン株式会社のダウンロードページから無償でダウンロードできます。

http://www.qlik.com/jp/explore/products/qlikview/free-download

32bit/64bit版のインストーラを選択し、ダウンロードしたexeファイルをダブルクリックします。


ウィザードに従いインストール作業を進めます。

基本的にデフォルトで問題ありません。














QlikViewパーソナルエディションのインストールが完了したら、起動確認を行います。

「すべてのプログラム」 より 「QlikView」 を展開し 「QlikView11」 を起動して下さい。

下記の画面が表示されるとQlikViewパーソナルエディションは正しくインストールされています。




関連記事


QlikViewパーソナルエディションをインストールする

国内導入実績No1、Dr.SumとQlikViewを比較する

QlikViewの開発は命名規則が重要

ロードスクリプトはタブ分けすることで開発生産性が高まる

QlikViewが遅い時は数式の最適化を検討する