Qlik Training Blog

ビジュアライゼーション・分析

アンケートの複数回答を分析しよう!

公開日:
更新日:
ビジュアライゼーション・分析
#Qlik Sense
#Qlik Cloud
#開発者
#データロード

アンケートなどで複数選択の項目があった場合、回答を集計すると1行に複数の選択肢が入ってくることがあります。

例)Aさんの回答…選択肢1
  Bさんの回答…選択肢1,選択肢2,選択肢5

このようなデータをQlik Senseに取り込み、分析する際のポイントをご紹介します。

目次

※本記事は「2022年02月時点のSaaS」で作成しています。

はじめに

以下のようなアンケート結果のデータがあります。

▼アンケート結果(元データ)

会員番号

回答

00001

A

00002

B,C

00003

B,C,D

このままロードすると、以下のような表示になり、Bなどが単体で選択できません。
この状態では正しく分析できません。

▼「回答」のフィルターパネル(元データの場合)

データを以下のような持ち方に変更できれば、正しく分析できるようになります。
こんな時に便利なのが、SubField関数です!

▼元データの持ち方を変更したデータ

会員番号

回答

00001

A

00002

B

00002

C

00003

B

00003

C

00003

D

▼「回答」のフィルターパネル(変更後のデータの場合)

SubField関数の基本


SubField関数は、特定の文字ごとに文字列を区切って取得できます。
なお、データマネージャーではSubField関数が使用できません。

<基本的な構文>

SubField(値,'区切り文字',取得位置)

今回のアンケート結果を例に、以下のように記述すると、B・C・Dの値を1つずつ取得できます。
▼例

数式

戻り値

SubField('B,C,D',',',1)

B

SubField('B,C,D',',',2)

C

SubField('B,C,D',',',3)

D

特定の文字ごとに行を分ける方法(データロードエディタ)


3つ目の引数を省略すると、特定の文字ごとに行を分けることができます。
以下の形式は、データロードエディタでのみ使用できます。

SubField(値,'区切り文字')

スクリプトを記述して、結果を見てみましょう。

LOAD
会員番号,
SubField(回答,',') as 回答
FROM [lib://DataFiles/アンケート.xlsx]
(ooxml, embedded labels, table is Sheet1);

▼ロード結果

会員番号

回答

00001

A

00002

B

00002

C

00003

B

00003

C

00003

D

▼「回答」のフィルターパネル

データの持ち方が変わり、正しく分析できる状態になりました。
各値が単体で選択できるようになり、選択した際の絞り込み結果も想定どおりです。

▼テーブルの絞り込み結果

さいごに

今回、SubField関数で以下内容が可能なことをご紹介しました。

  • 特定の文字ごとに文字列を区切って取得可能

  • 特定の文字ごとに行を分けることが可能

(元データの持ち方を変更するため、データロードエディタでのみ可能)

▼場所別の使用可否

データマネージャー

データロードエディタ

チャート

SubField(値,'区切り文字',取得位置)

使用×

使用○

使用○

SubField(値,'区切り文字')

使用×

使用○

使用×

SubField関数のように、チャート/スクリプトのどちらでも使用できる関数があります。
今回のように元データの持ち方を変更したり加工して扱いたい場合は、スクリプトで使用して、ロード時に処理を済ませておきましょう。

一般的に、ロード時に処理した方が、アプリ操作時のパフォーマンスが良くなるためです。
チャートの軸やメジャーは、アプリの画面が描画される度に処理されます。
選択肢を変えるだけでも画面は描画されますので、集計処理が複雑だったり、データ量が多かったりすると、その分パフォーマンスに影響が出ることになります。

おおまかですが、以下のように覚えておくと良いですね。

  • 元データの加工…ロード時に済ませておく

  • データの計算……チャートで行う