Qlik Senseで真偽値判定【True OR False】
こんにちは。Deckです。
Qlik SenseではIf関数を使うときや、スクリプト、演算実行条件などで真偽値を扱うことが多くあります。
そこで、Qlik Senseでどういった値がTrue(=条件は真である)あるいはFalse(=条件は偽である)として取り扱われるのかを確認しておきましょう。
前提:Qlik SenseにおいてTrueとFalseとは?
そもそもQlik SenseにおいてTrueとFalseとは一体何なのでしょうか?
Qlik Senseのシート編集画面から「テーブル」を追加し、True()関数とFalse()関数を呼び出してみましょう。
「列の追加」→「軸」をクリックし、入力欄の先頭にイコールをつけて数式を入力します。
Qlik SenseのTrue()関数はDual値を返すため、そのままでは文字列に見えますが内部的には数値を持っています。
Num()関数、Text()関数を使って数値、文字列の表現を取り出してみましょう。
同様にFalse()関数の数値表現、文字列表現を取り出すと以下のようになります。
上記の結果から、次のことがわかります。
- True()関数は数値表現として-1を返している
- False()関数は数値表現として0を返す
つまり、「-1はTrueとして扱われる」「0はFalseとして扱われる」ということですね。
If()関数を使って確かめてみる
いろいろな値をIf()関数のパラメータに使い、どのような値がTrue,Falseとして扱われるのか試してみましょう。
次の値はTrueとして扱われる例です。
- 0以外のプラス・マイナスの数値
=If(1,'True','False') True =If(-1,'True','False') True - 0以外の数値のテキスト表現
=If('-1','True','False') True - 数値表現が0以外のDual値
=If(Dual('Text',1),'True','False') True
以下の値はFalseとして扱われる例です。
- 数値の0
=If(0,'True','False') False - 数値の0のテキスト表現
=If('0','True','False') False - 数値に変換できないテキスト表現
※文字列の『'True'』はFalseとして扱われるので注意しましょう!=If('True','True','False') False =If('False','True','False') False - 長さが0のテキスト表現
=If('','True','False') False - Null(有効な値ではない)
=If(Null(),'True','False') False
実際の活用例
0がFalseとなることを利用して、If()とLen()を組み合わせる
If(Len(文字列),'長さが1以上','長さが0')
空の文字列でもNullであるときも長さは0なので、データが有効な文字列であるかどうかを判別するときに便利です。
有効(=長さが1以上)な文字列はTrue、無効な(=長さが0)のデータはFalseとして判定されます。
この記事は、以上です。