以下にパフォーマンスを改善する上でのトピックを記載します。
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が遅い時は数式の最適化を検討する