区切り文字で分割したい_Subfield関数
更新日:2023年9月26日
値が「_」や「-」などで区切られているような場合に、値を分割して新たな軸として利用したいケースがあります。Qlik SenseではSubfield関数を利用すると便利です。
マスタデータがきれいに揃っていない場合は、データ分析の段階で「軸」となる項目を準備する必要があります。特に「商品名称」や「組織名称」など、大 → 中 → 小 といった分類の階層があるようなデータは各分類ごとに集計できるよう軸となる項目を準備することが重要です。
【悩み】
今回は各部および各課ごとに勤務時間を分析しようとしたのですが、データには「所属課」という課単位の項目しかなかったケースで悩みました。よくある「Left関数」や「Right関数」などでうまく分割できないかとも考えたのですが、部名の文字数などはランダムなので定義ができません・・・。
【対策】
調べてみたところ「Subfield関数」というものがとても便利に使うことができました。
この関数は値の中にある特定の文字列を区切りとしてその前後にある文字列を返してくれます。構文は次のような感じです。
= Subfield(値,'区切り文字',何番目を返すか)
今回の上図の例で説明すると、[所属課]の値には部名と課名が含まれています。これを部名だけ取り出して[部]という項目を作りたいとします。[所属課]の値には「部」という文字がすべてに含まれていて、これを区切りに1番目の値を返すと「部」より左にある文字列を返すことができます。
例えば、
= Subfield(所属課,'部',1)
とすると、「営業一部1課」⇒「営業一」、「営業支援部企画課」⇒「営業支援」を返してくれます。(Subfield (所属課 , ’部’ , 2) とすると「営業一部1課」⇒ 「1課」を返します)
こうすることで、簡単に部名のみを取り出すことができるので、最終的には次のような数式で対応しました。
最後に「&’部’」を付けることで「***部」と表示するようしています。
= Subfield(所属課,'部',1) &’部’
Subfield関数は区切り文字を柔軟に定義することができる上に、区切られた文字の何番目を返すかという指定もできるので、先の図にあるコードの値などでも便利に利用できます。
コード「AA_001_1234」という値の場合、
= Subfield(コード,'_',1) だと「AA」を返します
= Subfield(コード,'_',2) だと「001」を返します
= Subfield(コード,'_',3) だと「1234」を返します
初期の分析においては、このSubfield関数を知っているだけでだいぶ柔軟性が上がるのでオススメの関数です!
【参考】
Comments