Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
nishi
Partner - Contributor
Partner - Contributor

Kmeans2D(もしくはKmeansND)を利用したクラスタリングについて

Kmeans2D(もしくはKmeansND)を利用して、クラスタリングしたいと考えています。

なお、下記の記事のサンプルを使用させていただいております。
https://community.qlik.com/t5/Japan/K%E5%B9%B3%E5%9D%87%E6%B3%95%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6...

支社と得意先名ごとに商品名でクラスタリングしたものを一覧化したいです。

クラスタリングした結果(グループ)には、現状下記のように記述しております。
=aggr(KMeans2D(3,Sum([売上金額])/sum(売上数量),Sum([粗利金額])/Sum([売上金額]))+1,商品名,支社,得意先名)

ただしこの記述では、支社と得意先でフィルタ選択すると、クラスタリングした結果(グループ)が変わってしまいます。

■フィルタ前

nishi_0-1719899134680.png

■支社、得意先名でフィルタした後

nishi_1-1719899175998.png

支社と得意先名ごとに商品名でクラスタリングしたものを一覧化することは可能でしょうか。
もしできる場合は、グループにはどのように記述すればよいかご教示ください。

どうぞよろしくお願いいたします。

 

4 Replies
hka
Employee
Employee

要望の結果になるかわかりませんが、初期のグループを表示するということであればSET分析の{1}を使用して選択を無視する方法があります。

=aggr(KMeans2D(3,Sum({1}[売上金額])/sum({1}売上数量),Sum({1}[粗利金額])/Sum({1}[売上金額]))+1,商品名,支社,得意先名)

 

nishi
Partner - Contributor
Partner - Contributor
Author

@hka さま

ご返信ありがとうございます。

今回、支社と得意先名ごとに商品名でクラスタリングしたものを一覧化したいので、
支社と得意先名をフィルタ選択した状態の値が求めたい値となります。
(問い合わせ時の画面ショットだと、九州支社、酒蔵でん、ナイトワインの場合、グループが「2」というのが
 求めたい値で、それをフィルタしてもしなくても「2」を表示させたい)

お問い合わせの内容が不明瞭で申し訳ありません。

いただいた式だと、フィルタ選択前の値とフィルタ選択後の値は同じになりますが
フィルタ選択前の値となるので、求めているものとは異なります。

どのような式にしたらよいか、アドバイスいただきたくよろしくお願いいたします。

hka
Employee
Employee

関数の性質上、ユニーク値に対するグループ分けなのでフィルタ後の結果をフィルタ前に表示するのは難しいように思います。
都度、支社、得意先の選択を切り替えて確認する形にしてもらうのが良いと思います。
他に良いアイディアのある方の意見をお待ちください。

nishi
Partner - Contributor
Partner - Contributor
Author

@hka  さま

ご返信ありがとうございます。

関数の性質上、難しいのですね。承知しました。

他に良いアイディアのある方の意見をお待ちしたいと思いますので、

解決済みとせずそのままとしています。

 

何かありましたら、アドバイスいただければと思います。

どうぞよろしくお願いいたします。