Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります。
次のようなデータを取り込み、棒チャートで解析するアプリを作成しました。
テスト用:
Load * Inline
[
事業部,商品グループ,商品名,カウント
'事業部A','Aグループ','A商品',1
'事業部B','Bグループ','B商品',1
'事業部C','Cグループ','C商品',1
'事業部A','Aグループ','A商品',1
'事業部B','Bグループ','B商品',1
'事業部C','Cグループ','C商品',1
'事業部D','Dグループ','D商品',1
'事業部D','Dグループ','E商品',1
]
;
「事業部」を軸に設定し、
「グループ」「商品名」の組み合わせが同じもの同士をグループとして
「カウント」の集計を行うと「事業部」ごとに2件返ってきます。
これは以下の数式で実現できます。
sum(aggr(sum(カウント),商品グループ,商品名))
ここから条件を追加して、
「グループ」「商品名」の組み合わせが同じもの同士のグループとして
「カウント」の集計を行い、結果が1以下の場合は
「事業部」ごとの集計に含まないという事を実現したいです。
テスト用データの場合
事業部Dのみ0件で、それ以外の事業部は2件を返すようにしたいです。
ifを組み合わせてどうにか実現できないか色々試しましたが、
自分では実現できず質問させて頂きました。
分かる方が居られましたらお教え頂ければ幸いです。
※テストデータを取り込んだアプリを添付しておきます。
これでどうでしょうか?
sum(if(aggr(sum(カウント),商品グループ,商品名)>1,aggr(sum(カウント),商品グループ,商品名)))
もしくは
sum({<事業部={"=aggr(sum({<事業部>}カウント),商品グループ,商品名)>1"}>}カウント)
でいけると思います。
これでどうでしょうか?
sum(if(aggr(sum(カウント),商品グループ,商品名)>1,aggr(sum(カウント),商品グループ,商品名)))
もしくは
sum({<事業部={"=aggr(sum({<事業部>}カウント),商品グループ,商品名)>1"}>}カウント)
でいけると思います。
ご回答頂きありがとうございます。
数式だけで実現できるんですね。
自分なりに考えた方法では、
以下をロード分に追加
グループ:
Left Join
Load
[商品グループ],
商品名,
sum(カウント) as グループカウント
Resident テスト用
Group by [商品グループ],商品名;
数式を以下に変更
sum(aggr(sum({<[グループカウント]={">=2"}>}カウント),商品グループ,商品名))
この様にロード時にグループごとの集計を取得しておくことで実現できたのですが、
数式だけで実現できるならそれに越したことはないので大変助かりました。
ありがとうございました。