mio
1
お世話になっております。
図A~E列のようなデータセットがありますが、これに全体数のフィールド(F列)を追加して
全体との比較を行いたいと思っています。
まず、E列(売上)を合計しようと以下の計算フィールドを作ったところエラーになりました。
【計算フィールド】sum({売上})
【エラーコメント】「SUMやSUM~~~~のような集計関数のネスティングは許可されません。
元々{売上}も計算フィールドで①+②-③をして作成した項目だから
このようなエラーになるのでしょうか?
そして、sumOverでも作成したところ、こちらもエラーとなりました。
【計算フィールド】sumOver(売上,[ ],PRE_FILTER) ※実際は"[“と”]"の間にスペースはありません。
【エラーコメント】計算レベルPRE_FILTERおよびPRE_AGGではオペランドは集計できません。
どのようにすればよいか、ご教示いただけますでしょうか。
よろしくお願いいたします。
@mio さん、ご質問ありがとうございます。
ExcelのテーブルをそのままQuickSight上で同様のテーブルとして以下のように表現したいものと理解しましたが、認識齟齬があればご指摘ください。
この場合、各値は商品名をディメンションとして既に集計されていますが、今回のように、それをさらにディメンションを跨って集計したい場合、既にお試しいただいているようにテーブル計算関数であるsumOverを使うのが最適です。
sumOver関数の計算レベル(calculation level)ですが、今回はビジュアルで集計された後の値をそのまま足し合わせれば良いため、POST_AGG_FILTERとなります。特に明示的に指定しなくてもデフォルト値はPOST_AGG_FILTERですので、以下のような計算式でOKです。
sumOver(sum(売上), [])
ご確認いただけますでしょうか。
mio
3
ご確認いただきありがとうございます。
認識いただいた通りで問題ありません。
テーブルやグラフで商品毎の売上と全体の売上を比較できるようなビジュアルを作成したいです。
試してみたところ、やはりエラーとなりました。
(項目名が違いますが、質問の[売上]と同じものです)

対処方法はありますでしょうか。
mio
4
何度もすみません。
ちなみにフィルターもコントロールに付けて、
特定の商品のみ絞って表示することもしたいと考えています。
手さぐりですが下記のように作成しフィルターを設定したところ、
[売上]、[全体]ともにフィルターが反映された同じ値が表示されてしまいました。
sumOver(売上,[ ])
@mio ご確認ありがとうございます。
エラーメッセージを拝見すると、{発生収益} フィールドは以下の計算式になっている理解です。
sum({①初回保証委託料金額}) + sum({②初回保証料ダイレクト金額}) + sum({③初回手数料金額}) + sum({④収益その他}) - sum({⑤代理店手数料})
全てのフィールドをsumで集計いただいていますが、ビジュアルのグループ化の条件のフィールドウェルに{商品名}フィールドを設定していれば、各値はデフォルトで「合計」で自動的に集計されるため、sum関数は以下のように取り払っていただいて良いのではないかと思います。
{①初回保証委託料金額} + {②初回保証料ダイレクト金額} + {③初回手数料金額} + {④収益その他} - {⑤代理店手数料}
次に、フィルターに影響されずに全体の値を集計して表示したい場合、計算フィールドを以下のようにし、PRE_FILTERの計算レベルを指定することで、フィルターが適用される前にsumOverの集計を実行することが可能です。
sumOver(発生収益, [], PRE_FILTER)
以上2点、ご確認いただけますでしょうか。
mio
6
早速ありがとうございます。
はい、元々はそれぞれの項目を一旦sumにして計算フィールドを作っています。
なぜなら、sumをしないと数字が合わないためです。
下図のようになり、sumにした119~のほうが正しい結果となってしまいます。
→こちらも原因が不明なのでもしお分かりであればご教示いただきたいです。
また、ご教示いただいたsumOverを[発生収益2]のほうで作成しテーブルにしたところ
結果が表示されませんでした。
何度も申し訳ございません。
よろしくお願いいたします。
ymatz
7
横からすいません。
今一度やりたいことと、データを整理した方が良いと感じました。
データは以下の構造であってますでしょうか?商品名は重複なく1行ですか?
上記だとして、やりたいことは以下で合ってますでしょうか?
計算フィールドは以下の通りです。
発生収益:
{①初回保証委託料金額} + {②初回保証料ダイレクト金額} + {③初回手数料金額} + {④収益その他} - {⑤代理店手数料}
全体発生収益:
sumOver(sum(発生収益), [])
SUMしないと全体合計が合わないとのことでしたので、例えば各金額が小数点以下存在する、同一商品が複数行ある、といった話があるのかな?と思った次第です。
ご確認よろしくお願いします。
mio
8
ご確認ありがとうございます。
データの構造は下図の通り、(加盟店+営業所+商品)で一意となります。
やりたいことは作成いただいた通りで合っております。
この内容で作成すると、全体数の表示はできましたが、
やはり全体数が①+②+③+④-⑤の計算結果と一致しません。
一番下の表は個別にみた時の表ですが、
こちらの表では①+②+③+④-⑤の計算結果が[発生収益2]と一致しますが、
赤枠で囲っているようにテーブルで加盟店・営業所・商品を表示するとしないとで
値が異なってしまいます。
また、小数点以下が存在する項目はありません。
よろしくお願いいたします。
@mio さん、情報のご提供ありがとうございます。
例示いただいたExcelのデータそのままに試すとsumOver関数↓
sumOver(発生収益, [], PRE_FILTER)
が正しく機能しているのがお分かりいただけるかと思います。
そのため解決の方向性としては正しそうなのですが、sumOverで集計した数字が合わないというのは何か別のところに原因がありそうに思えます。
最後に頂いたテーブル2つについて、私が貼った画像のように、フィールドリストおよびフィールドウェルの設定も含め、テーブルの項目を漏らさずに画面ショットで共有いただくことは可能でしょうか。(問題が再現できていればダミーデータで構いません。)
お手数ですがよろしくお願いします。
mio
10
お世話になっております。
確かに作成頂いた図が理想の集計です。
テーブル2つのキャプチャーです。
今回の集計に関係ない部分は一部隠しています。
また、こちらの都合でお返事が2/12以降になってしまいます。
お手数ですがよろしくお願いいたします。
ytakahr
11
@mio さん、ありがとうございます。
それぞれのテーブルにはどのようなフィルタが設定されているかも教えていただけますでしょうか?フィルタの対象が計算フィールドの場合には、その計算内容も教えていただけると助かります。