Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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,'')
チャートを選択するとステータスバーに行数が表示されるので
この数字を取得できる方法があればうれしいのですが
他に簡単にカウントできる方法があればご教示ください。
何卒、宜しくお願い致します。
Pick関数の方が、早いかもしれません。
また、変数もドキュメント内には少なく保持する方が、全体のパフォーマンスも良いので'v_変数'だけにして、変数の値によって切り分ける用にしてはどうでしょうか?
添付のサンプル1のチャートがこれにあたり、入力ボックスで値を変更すると軸と計算結果が切り替わります。
サンプル2は、変数も使用していません。かわりに軸CDと軸名のテーブルを用意して、リストボックスの「軸」で選択した結果が反映されます。
一度ためしてみて下さい。
それと、Count、If、ともに処理としては重たい処理なので、可能なケースは避けた方が良いです。
今回のCountは、Distinct処理があるので無理ですが、単純なカウントの場合なら、該当テーブルに列を増やして'1'を用意し、SUMで計算する方が断然速いです。
ご回答ありがとうございます。
ある一定の行数を超えた場合にチャートが表示されないように制御したのです。
sumの結果を変数等に入れることはできないでしょうか?
何卒、宜しくお願い致します。
という事は、軸の数(distinct)で判断すると言う事でしょうか?
添付ファイルは、先程の「サンプル2」に演算実行条件を追加しています。(サンプル2.1)
演算実行条件の指定先は、「基本設定」タブにあります。
Count(distinct 項目名)よりもGetPossibleCountの方が早いと思うので、こちらを利用しています。
軸でも項目でも良いので、リストボックスで値を絞り込んでいただき、チャートの行(軸の数)が2以下になると実行されるようにしています。
この計算式を変数に入れても大丈夫です。
(計算式)
Pick(軸CD,GetPossibleCount(軸1)
,GetPossibleCount(軸2)
,GetPossibleCount(軸3)
,GetPossibleCount(軸4)
,GetPossibleCount(軸5))<=2
GetPossibleCount関数は、絞込値の数がかえりますので、distinctしたCountと結果は同じです。
変数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で切り替えると、軸の数も変動します。
チャートの下のテキストボックスに、計算式を入れています。
ありがとうございます!
参考にさせて頂きます。