QlikSense

QlikSenseで特定の文字が含まれるか判断する2つの関数

QS文字列
記事内に商品プロモーションを含む場合があります

今回、文字列の中に特定の文字が含まれるかどうかで集計条件を変更したいというニーズがありました。

QlikSenseでフィルターをかけるには予め変数として条件値を取得しておいた方が便利です。

そこで、ロードスクリプト内で特定の文字が含まれる場合は「対象」、含まれない場合は「非対象」という値を取得することにしました。

NULL値は条件指定できません。

(NULLのものを選択することはできないためNULL選択する際はAlt関数などを使ってNULL値を変換する必要があります。)

QlikSenseで特定の文字が含まれるか判断する2つの関数

具体的には「特定の文字が含まれるかどうか判断する」というより「特定の文字が何文字目に出現するか?何回出現するか?もしくは0か?」という判断をします。

特定の文字が出現することを確認するには以下の2つの関数があります。

FineOneOf関数は特定の「文字(1CHAR)」、SubstringCount関数は特定の「文字列」である点が異なりますので用途に応じて使い分けましょう!

また、FindeOneOf関数は出現する位置、SubstringCount関数は出現する回数が戻り値である点も異なる点です。

FindOneOf関数

FindOneOf関数は文字の一覧から指定した文字のいずれかが出現する位置を返します。

例えば住所のデータから「都道府県」のいずれかの文字が出現した位置を取得するなどの使い方があります。

FindOneOf(文字列, 検索文字のリスト [,位置])

(例)文字列:東京都中央区1-1-1

FineOneOf(文字列,’都道府県’) ➡ 3

この関数を利用して住所から都道府県のみ取得することができます。

Left(文字列, FindOneOf(文字列,’都道府県’)) ➡ 東京都

※ただし、「京都府」の場合この方法では「京都」になってしまいますのでこの関数のみで完全に都道府県を取得することは困難です。

SQLの文法
【SQL Server】住所から都道府県を抜き出すSQLスクリプト【SQL Server】住所に都道府県を含んでいる場合に都道府県のみを抽出するSQL文を作成しました。2通りの方法がありますので条件に合う方をご活用ください。...

第3引数の[位置]は複数の出現位置がヒットした場合、何番目の位置を返すのか指定できます。

SubStringCount関数

SubstringCount関数は文字列の中に指定した文字列が含まれる数を返します。

例えば文字列から「腰痛」という文字が出現した位置を取得するなどの使い方があります。

SubstringCount(文字列, 検索文字列)

(例)体調を記録した文字列に「腰痛」というキーワードが含まれるか否か確認する。

サンプル文字列:肩こり・腰痛などの自覚症状がある

SubstringCount(文字列,’腰痛’) ➡ 1

この関数を利用して「腰痛」というキーワードの出現回数を取得します。

出現回数が1以上であれば「該当」、出現回数が0であれば「非該当」と判断します。

LOADスクリプトサンプル

今回はSubStringCount関数を利用してニーズを実現することにしましたのでLOADスクリプトのサンプルは以下の通りです。

腰痛情報:
LOAD 
  ID,
    if(substringcount(自覚症状, '腰痛')>0, '該当', '非該当') AS 腰痛症状有;
SQL 
  SELECT 
 	ID,
      自覚症状
FROM 問診データ;

 

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。