Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Ochanoko
Creator
Creator

Qlik Sense 特定のテーブルの全項目による絞込を無視する方法

お世話になります。

Qlik Senseに「Aテーブル」と「Bテーブル」を取り込んだとして、

AテーブルとBテーブルを「基準日」という項目で紐づけているとします。

基準日ごとの「Aテーブルの項目A」と「Bテーブルの項目α」の合計値を取得しようする時に、

「Aテーブルの何かしらの項目」で絞り込みを行っている場合、

「Aテーブルでデータが発生していない基準日」のBテーブルのデータは無視されてしまいます。

 

これを回避する為に、「項目A=,項目B=,項目C=,項目D=」といった

Aテーブルの全項目を無視するように定義した変数「TableA_Except」を作成して、

「Bテーブルの項目α」の集計時にSUM({<$(TableA_Except)>}項目α)といった形で適用しています。

この方法で問題無く対応できているのですがいささか手間がかかるので、

もっと良い方法をご存じの方がおられましたらご教授いただますと幸いです。

 

 

 

1 Solution

Accepted Solutions
hka
Employee
Employee

変数で定義して実装する形になります。

ただ、UI上で変数を定義するのではなく、スクリプトで変数定義するようにするのはどうでしょうか。

LET TableA_Except = '';

LET NoField = NoOfFields('TableA');

for i = 1 to NoOfFields('TableA')
  if $(i) = NoOfFields('TableA') then
   LET TableA_Except = '$(TableA_Except)' & FieldName($(i),'TableA') & ' = ';
  Else
   LET TableA_Except = '$(TableA_Except)' & FieldName($(i),'TableA') & ' = ,';
  End If;
next i;

少しは楽になると思います。

View solution in original post

2 Replies
hka
Employee
Employee

変数で定義して実装する形になります。

ただ、UI上で変数を定義するのではなく、スクリプトで変数定義するようにするのはどうでしょうか。

LET TableA_Except = '';

LET NoField = NoOfFields('TableA');

for i = 1 to NoOfFields('TableA')
  if $(i) = NoOfFields('TableA') then
   LET TableA_Except = '$(TableA_Except)' & FieldName($(i),'TableA') & ' = ';
  Else
   LET TableA_Except = '$(TableA_Except)' & FieldName($(i),'TableA') & ' = ,';
  End If;
next i;

少しは楽になると思います。

Ochanoko
Creator
Creator
Author

返事が遅れ申しわけありません。

 

お教えいただいた方法を用いることで、

今まで手作業で行っていた変数の修正を行う必要がなくなり、

変数の編集忘れによる事故も減らせそうです。

大変有益な方法を教えて頂きありがとうございます。