Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
hmapgo03032006
Contributor II
Contributor II

QlikView ストレートテーブルの行数のカウントについて

QlikViewのストレートテーブルの行数のカウント方法について

何かいいものがあれば教えてください。

 

軸は変数により表示・非表示を切り替えられるようにしております。

現状下記でカウントしておりますが軸項目が数十項目あるため

このカウントが非常に重くなっております。

=count(distinct
if(v_変数1=1,項目1,'')
&if(v_変数2=1,項目2,'')
&if(v_変数3=1,項目3,'')
&if(v_変数4=1,項目4,'')
&if(v_変数5=1,項目5,'')

 

チャートを選択するとステータスバーに行数が表示されるので

この数字を取得できる方法があればうれしいのですが

他に簡単にカウントできる方法があればご教示ください。

 

何卒、宜しくお願い致します。

6 Replies
kentaroWakamatsu
Creator II
Creator II

Pick関数の方が、早いかもしれません。

また、変数もドキュメント内には少なく保持する方が、全体のパフォーマンスも良いので'v_変数'だけにして、変数の値によって切り分ける用にしてはどうでしょうか?

添付のサンプル1のチャートがこれにあたり、入力ボックスで値を変更すると軸と計算結果が切り替わります。

サンプル2は、変数も使用していません。かわりに軸CDと軸名のテーブルを用意して、リストボックスの「軸」で選択した結果が反映されます。

一度ためしてみて下さい。

kentaroWakamatsu
Creator II
Creator II

それと、Count、If、ともに処理としては重たい処理なので、可能なケースは避けた方が良いです。

今回のCountは、Distinct処理があるので無理ですが、単純なカウントの場合なら、該当テーブルに列を増やして'1'を用意し、SUMで計算する方が断然速いです。

hmapgo03032006
Contributor II
Contributor II
Author

ご回答ありがとうございます。

ある一定の行数を超えた場合にチャートが表示されないように制御したのです。

sumの結果を変数等に入れることはできないでしょうか?

 

何卒、宜しくお願い致します。

kentaroWakamatsu
Creator II
Creator II

という事は、軸の数(distinct)で判断すると言う事でしょうか?

添付ファイルは、先程の「サンプル2」に演算実行条件を追加しています。(サンプル2.1)

演算実行条件の指定先は、「基本設定」タブにあります。

Count(distinct  項目名)よりもGetPossibleCountの方が早いと思うので、こちらを利用しています。

軸でも項目でも良いので、リストボックスで値を絞り込んでいただき、チャートの行(軸の数)が2以下になると実行されるようにしています。

この計算式を変数に入れても大丈夫です。

(計算式)

Pick(軸CD,GetPossibleCount(軸1)
,GetPossibleCount(軸2)
,GetPossibleCount(軸3)
,GetPossibleCount(軸4)
,GetPossibleCount(軸5))<=2

GetPossibleCount関数は、絞込値の数がかえりますので、distinctしたCountと結果は同じです。

kentaroWakamatsu
Creator II
Creator II

変数1~5の各変数が 0 or 1 の管理であれば、下記のような計算式の変更だけでも多少速くなると思います。

 

Count(DISTINCT Pick(v_変数1,項目1)&'_'&Pick(v_変数2,項目2)&'_'&Pick(v_変数3,項目3)&'_'&Pick(v_変数4,項目4)&'_'&Pick(v_変数5,項目5))

上記では、念のため各項目値の間は、アンダーバーを入れていますが、何かしら区切り文字を入れている方が良いとは思います。

 

サンプルつけておきます。

入力ボックスの変数を0または1で切り替えると、軸の数も変動します。

チャートの下のテキストボックスに、計算式を入れています。

hmapgo03032006
Contributor II
Contributor II
Author

ありがとうございます!

参考にさせて頂きます。