構成比の作成について

以下のようなアウトプットを作成しようとしています。

ピボットテーブルで作成しており、
行に日付を別の計算上必ずいれる必要があるためいれて、非表示にしています。

構成比の計算を行うのに、以下の計算フィールドを作成しておりますが、合計の数値は正しく計算できるのですが、都道府県別には正しく分析ができません。

sumOver(sum(kingaku),[{都道府県},{エリア}])/sumOver(sum(kingaku),[{エリア}])

どのように計算させると正しく計算できますでしょうか?

@optarc.yamaji

構成比は、percentOfTotal関数があるのでそれを使用した方が簡単にできると思います。

percentOfTotal(sum(kingaku),[都道府県,エリア])

どうしても、Sum関数を使用するのであれば、以下になると思います。LAC-W(Window関数)なので、集計で「最小」を選択し、合計を明示的に「合計」にする必要があるかと思います。

sumOver(kingaku,[種類,都道府県,エリア],PRE_AGG) / sumOver(kingaku,[都道府県,エリア],PRE_AGG)

@Wakana

ご回答ありがとうございます。

構成比は、percentOfTotal関数があるのでそれを使用した方が簡単にできると思います。

はい、わたしもそのように思い計算フィールドを作成したのですが、行の種類ごとに構成比が計算されてしまい、グループ毎に構成比にする方法がわからずご質問させていただきました。

sumOver(kingaku,[種類,都道府県,エリア],PRE_AGG) / sumOver(kingaku,[都道府県,エリア],PRE_AGG)

こちらについても、種類で出されているのでやりたいことになりませんでした。

また、「集計で「最小」を選択し、合計を明示的に「合計」にする必要があるかと思います。」こちらの対応について、どのようにしたらいいかが理解しきれなかったため、もう少し詳しく教えていただけると助かります。

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

行が階層構造になっていて、下位を展開した状態で、上位の値で構成比を表示したいということでしょうか?percentOfTotalは、行で指定しているディメンションの単位になるので、折り畳まれていると上位で集計しますが、展開すると下位のレベルで構成比を集計します。

上位で折り畳まれた状態

展開すると

@Wakana

展開した場合でも、添付頂いた画像のセクターで構成比が出るように計算フィールドを作成することはかのうでしょうか?

@optarc.yamaji

横から失礼いたします。
上記要件の場合、percentOfTotalでの実装は難しいかと思いますので、sumOver関数をお使いいただくアプローチで、以下計算式ではいかがでしょうか。
sumOver(kingaku,[{グループ},{都道府県},{エリア},PRE_AGG])/sumOver(kingaku,[{都道府県},{エリア}],PRE_AGG)

以下参考までに手元データのイメージを添付させて頂きます。


ご要望の通り産業(小カテゴリ)単位のレコードに対し、セクター(大カテゴリ)単位の構成比を出力することができております。

一点、ビジュアルの一番下段、行の集計行について、構成比の合計が100%とならない点については割り切って頂く必要がございます。

1 Like

上記構成比の合計が100%にならない件については、当該列のみ非表示にしてしまうのも一案かと思います。ご検討いただければ幸いです。

ご回答ありがとうございます。

内容拝見し、対応をしてみました。
すると、以下のような結果が出ました。
image

手元で計算を行うと
image

となり、値がいまいち合いませんでした。
また、合計列では、セクター(大カテゴリ)単位の構成比にはならず、ところどころで小カテゴリでの結果が表示されていました。
(大カテゴリの間で赤線を引いています)

値がいまいち合いませんでした。

お手数ですが、事象を再現可能な最小限(列、行ともに)かつ機密情報を含まない形でのサンプルデータをcsvファイル等でご提供頂くことは可能でしょうか?

合計列では、セクター(大カテゴリ)単位の構成比にはならず、ところどころで小カテゴリでの結果が表示されていました。

上記同様、最小サンプルデータをご提供頂ければと思いますが、こちらの手元データで確認できていることを以下共有させて頂きます。

合計列(ビジュアル最右列)について先ほど触れそびれておりましたが、ピボットテーブル上でブランクとなるセルがある場合、構成比の合計対象外となり、同一セクター(大カテゴリ)内であっても産業(小カテゴリ)間で、値が一致しないケースがありえます。以下イメージをご参照ください。

こちらについては、合計行(最下段)が100%にならない件同様、構成比の合計を"なし(非表示)"とすることで合計列も非表示化が可能ですので、あわせてご検討頂けますと幸いです。

1 Like

ご回答ありがとうございます。

確かにブランクセルは含んでおります。

また、今回合計を利用するケースを検討しておりまして、最初に投稿したときにご共有しておりました計算フィールドでは合計は正しく計算されていたのですが、合計以外が合わないという結果でございました。

Sampleデータを提供したいのですが、csvの添付方法がわかりませんでした。
どのように提供させていただいたらよろしいでしょうか?

ArenaというQuickSight Communityの機能を使うと、CSVファイルをアップロードし、さらにはそれをInputにダッシュボードを作成&Communityメンバーに共有することが可能です。
英語ブログにて恐縮ですが、以下リンク先に動画付き操作ガイドがございます。

上記ご参照頂き、実際問題となっている計算フィールドとピボットテーブルを再現のうえ連携頂けますと幸いです。

1 Like

Arenaについて教えていただいてありがとうございます。

現状悩んでいるダッシュボードを作成しました。
構成比の作成について

構成比(元)が最初に問い合わせした時点での計算フィールド
sumOver(kingaku,[種類,都道府県,エリア],PRE_AGG) / sumOver(kingaku,[都道府県,エリア],PRE_AGG)

構成比(新)が教えていただいた計算フィールド
sumOver(kingaku,[{グループ},{都道府県},{エリア},PRE_AGG])/sumOver(kingaku,[{都道府県},{エリア}],PRE_AGG)

で作成しております。

手元で計算した正しい構成比は以下で、Quicksightでも同じように結果を出したいです。

グループ 千葉 合計
A 43.8% 52.9%
B 28.4% 26.6%
C 0.3% 0.2%
D 6.8% 5.4%
E 1.5% 1.1%
F 19.3% 13.9%

千葉のエリアをみるとどちらも同じ比率になっておりますが、手元で計算した正しい構成比にすることができていません。
合計では構成比(元)は、正しい構成比になっていますが、構成比(新)は計算結果が合いません。

どのような計算フィールドを作成することで実現ができますでしょうか?

Arenaにて共有いただき、ありがとうございます!

そうですね、構成比(新)は種類で構成比を出す計算をしているので、その上位のグループ単位で集計されてしまうと、正常には表示されません。それに対し、構成比(元)はグループで計算をしているので、グループで集計している場合は正しく構成されますが、種類に集計単位を変えると、種類単位で再計算します。

今回の要件は、下位の種類単位で表示した場合も、構成比はグループ単位のものを表示させたい、とユースケースかと思うので、難しいですね。構成比ではなく、単純な集計計算ならやり方があるかもしれませんが、単純に計算フィールドでは実現できないように思います。

ご確認ありがとうございます。

今回の要件は、下位の種類単位で表示した場合も、構成比はグループ単位のものを表示させたい、とユースケースかと思うので、難しいですね。構成比ではなく、単純な集計計算ならやり方があるかもしれませんが、単純に計算フィールドでは実現できないように思います。

実現が難しいとのこと承知しました。
構成比をどうしても実装したいとなると、グループ単位と種類単位と別でビジュアルを作成することで実現できますでしょうか?
その場合、もう少し単純に上でご紹介いただいたように、percentOfTotalで実装できないか試してみてArenaのダッシュボードを修正しました。

percentOfTotal(sum(kingaku),[都道府県,エリア])

しかし、正しい構成比の値になりません。

ビジュアルをわけても実現は難しいのでしょうか?

@optarc.yamaji
Arenaのダッシュボードを確認させていただきました。

ピボットテーブルにHiddenの行フィールド(月度)の指定がありますね。

この場合は、そのフィールドも指定する必要があるので、percentOfTotalは以下のように指定する必要があると思います。

1 Like

ご回答ありがとうございます。

教えていただいた通りに計算フィールドを作成することで、それぞれの構成比の作成ができました。
ユーザーの要望どおりにはできなかったですが、ビジュアルを分けるなど対応を検討しようと思います。

ありがとうございました。

1 Like