Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
ラビット
Contributor
Contributor

年月を列に置いたピボットテーブルで前月売上があったが今月売上がない顧客数を表示したい

初歩的な質問で申し訳ありません。
ピボットテーブルないしは線グラフで、支店別に失った顧客数(前月売上があったが、今月売上がない顧客)をカウントしたいと思っております。また顧客ごとの売上は商品の売り上げ明細の集計を月ごとに行って算出しております。
 
sum(
   if(前月の売上が0超,
     if(今月の売上が0以下,1,0)
    )
  )
 
しかし、失った顧客ですので、同月の売上明細の中には、その顧客名は登場しないためピボットテーブルで売上がnullになってしまうため、一度if(isnull(),,)でnullを0にする処理が必要かと思い、以下の様に作成しましたが、上手く動きません。
 
sum(
if(aggr(sum(
If(
IsNull(
aggr({<[配達日.autoCalendar.Year]={'$(=year([配達日])-0)'},[月]={'$(=month([月])+0)'}>}sum(売上金額),"=Dual(Year([配達日])&'-'&Month([配達日]),MonthStart([配達日]))",[支店名],[顧客データ.得意先名])
            ),
            0,
aggr({<[配達日.autoCalendar.Year]={'$(=year([配達日])-0)'},[月]={'$(=month([月])+0)'}>}sum(売上金額),"=Dual(Year([配達日])&'-'&Month([配達日]),MonthStart([配達日]))",[支店名],[顧客データ.得意先名])
       )),"=Dual(Year([配達日])&'-'&Month([配達日]),MonthStart([配達日]))",[支店名],[顧客データ.得意先名])
   >0,
if(aggr(sum(
If(
    IsNull(
aggr(sum(売上金額),"=Dual(Year([配達日])&'-'&Month([配達日]),MonthStart([配達日]))",[支店名],[顧客データ.得意先名])
            ),
            0,
            aggr(sum(売上金額),"=Dual(Year([配達日])&'-'&Month([配達日]),MonthStart([配達日]))",[支店名],[顧客データ.得意先名])
      )),"=Dual(Year([配達日])&'-'&Month([配達日]),MonthStart([配達日]))",[支店名],[顧客データ.得意先名])
      <1,
   1,0))
)

 

こういったケースでどのようにすると良いかご相談出来ないでしょうか?

1 Reply
hka
Employee
Employee

SET分析の数式の検索を使用すると実現できると思います。

https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalys...

上記ヘルプの数式を応用して下記のような数式を使うとできると思います。

Count(<Customer = {"=Sum({<日付.autoCalendarMonthsAgo={0}.>}Sales) = 0 and Sum({<日付.autoCalendarMonthsAgo={1}.>}Sales) > 0"}> distinct Customer)

autoCalendarはデータマネージャで生成されるカレンダーです。

MonthsAgoはTodayをベースにして当月を0、前月を1、前々月を2として定義されています。

これらを使用すると当月Salesが0 かつ 前月Salesが0より大きいCustomerの数を計算します。