Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
sskt
Contributor III
Contributor III

積み上げたデータでメッコチャート作成

お世話になっております。

環境はQlik Sense 2025 Enterpriseです。
添付のテストデータで、メッコチャートを年齢AGEのみのデータに絞って作成したいと考えております。

列:TRTP
セル:{$<BDSTESTCD={'AGE'}>}[BDSVAL]
メジャー:count({$<BDSTESTCD={'AGE'}>}SUBJID)


のように作りましたが、SET分析でAGEのみに絞っているはずなのに、AGE以外のHEIGHTなどのデータが入ってきてしまいます。
どのようにすればAGEのみのメッコチャートを作成出来ますでしょうか。
(ロードスクリプトで項目ごとに絞ってデータセットを作成する方法は、AGEやHEIGHTなどの項目が多すぎるため、避けたいと考えております。)

なお、qvfファイルは権限的に開けない状況です。
詳しい方、教えていただけますと幸いです。
よろしくお願いいたします。

Labels (1)
1 Solution

Accepted Solutions
hka
Employee
Employee

データ構造上、スクリプトでGeneric関数を使用して分解するしかないです。
以下、参考スクリプトです。
この場合、メジャーにはDISTINCTを入れる必要が出てくる可能性があります。
 
[Sheet1]:
LOAD
  *
FROM [lib://DataFiles/test_qlik.xlsx]
(ooxml, embedded labels, table is Sheet1);
 
generic:
Generic
Load 
[SUBJID],
[BDSTESTCD],
[BDSVAL]
Resident Sheet1;
 
データモデルです。

hka_0-1775790311128.png

 

View solution in original post

6 Replies
hka
Employee
Employee

セルは単純にBDSVALにすれば出ます。
メジャーでSET分析を使ってAGEを指定している時点で、軸やセルでは条件は必要ないです。
また、軸やメジャーでSETを使いたいのであればaggr関数+集計関数で記述しないと
正しく表示されません。

Gui_Approbato
Partner - Creator III
Partner - Creator III

Hi, find attached the qvf. Like what Hka explained, the cells are dimensions so you can't use set analysis with the field name (unless you aggregate the field). The chart should look like this:

image.png

Guilherme Approbato

sskt
Contributor III
Contributor III
Author

ありがとうございます。
メジャーのみでSET分析することで無事出来ました。

もう一点お聞きしたいのですが、今回のように縦の形式のデータから抽出してグラフを作成した場合、
部分集団をシート上でクリックして分析しようとするとグラフが消えてしまいます。

例えば、画像1のように年齢50歳、身長170センチを閾値として集計した場合、

(参考:=If(BDSVAL>=50,'>=50','<50'))

年齢50歳未満で絞ったときの身長の分布のデータを出したいと思ったのですが、
クリックしても画像2のように「このチャートには選択からデータが生成されませんでした。」と出てしまいます。
データセットを分解せずにこれを改善する方法はありますでしょうか。

hka
Employee
Employee

データ構造上、スクリプトでGeneric関数を使用して分解するしかないです。
以下、参考スクリプトです。
この場合、メジャーにはDISTINCTを入れる必要が出てくる可能性があります。
 
[Sheet1]:
LOAD
  *
FROM [lib://DataFiles/test_qlik.xlsx]
(ooxml, embedded labels, table is Sheet1);
 
generic:
Generic
Load 
[SUBJID],
[BDSTESTCD],
[BDSVAL]
Resident Sheet1;
 
データモデルです。

hka_0-1775790311128.png

 

sskt
Contributor III
Contributor III
Author

Generic関数を知りませんでした。
これだと変数の数だけスクリプトを書かずとも勝手に分割してくれるので非常に使いやすく、求めていた変換が出来ました。
ボックスプロットについても解決しました。ありがとうございました。

hka
Employee
Employee

テーブル構造をシンプルにするスクリプトです。
こちらを実行するとgenericテーブルを統合できます。

generic:
Generic
Load 
[SUBJID],
[BDSTESTCD],
[BDSVAL]
Resident Sheet1
where [BDSTESTCD] <> 'SEX';
 
BDSTESTCD:
Load Distinct
[BDSTESTCD]
Resident Sheet1
where [BDSTESTCD] <> 'SEX';
 
for i=1 to NoOfRows('BDSTESTCD')
let vsetTable = 'generic.' & peek('BDSTESTCD',$(i)-1,'BDSTESTCD');
    let vColum = peek('BDSTESTCD',$(i)-1,'BDSTESTCD');
    if $(i) = 1 then
    genericTable:
        NoConcatenate
    Load
[SUBJID],
[$(vColum)]
    Resident $(vsetTable);    
    else
    Left Join(genericTable)
    Load
[SUBJID],
$(vColum)
    Resident $(vsetTable);
    End If;
    Drop Table $(vsetTable);
Next i;
 
Drop Table BDSTESTCD;