元の「店舗別売上詳細データ」というデータセットを元に、GroupByを行った結果のデータセット「店舗別月次売上データ」を作成したい。
用途としては店舗、年、月で1レコードとなっている「店舗別月次予算テーブル」とJOINを行ってダッシュボード化したいためです。
元からSQLを使ってデータソースを別に作成すれば出来ることはわかっていますが、データソースの更新をできれば元の「店舗別売上詳細データ」のみにできればと思っております。
もしくは分析の方で同様の事ができればそちらでも問題ありません。
@Kitajima さん、QuickSight Communityへようこそ!ご質問ありがとうございます。
あいにく現状では既存のデータセットから別のデータセットを作成する過程(ご参考)ではGROUP BYのような処理を行うことはできません。
そのため、代替策としては以下のいずれかになるかと思います。
A. データソースがAthena、Redshift、RDSのようなリレーショナルなものであれば、カスタムSQLでGROUP BYをかけたデータセットを別途作成する。(既にご認識いただいている方法)
B. 「店舗別売上詳細データ」をそのまま「店舗別月次予算テーブル」とJOINし、分析でのビジュアル作成時に集計を行う。
ご期待に沿わない回答だとは思いますが、ご検討いただけますと幸いです。なお、本トピックはFeature-Requestとしてタグ付けして製品チームにフィードバックさせていただきます。
B. 「店舗別売上詳細データ」をそのまま「店舗別月次予算テーブル」とJOINし、分析でのビジュアル作成時に集計を行う。
こちらに関してお聞きします。例えば
Aテーブル(詳細)
店舗ID|売上年|売上月|売上金額|売上日時
a店舗|2025|4|15000|2025-04-01
a店舗|2025|4|10000|2025-04-02
b店舗|2025|4|20000|2025-04-02
Bテーブル(月次予算)
店舗ID|予算年|予算月|予算売上金額|予算粗利額
a店舗|2025|4|250000|100000
b店舗|2025|4|350000|150000
a店舗|2025|5|300000|120000
b店舗|2025|5|400000|180000
上記のデータ設置を店舗ID、年、月でJOINした場合下記のようなデータセットになると思います
a店舗|2025|4|15000|2025-04-01|250000|100000
a店舗|2025|4|10000|2025-04-02|250000|100000
b店舗|2025|4|20000|2025-04-02|350000|150000
上記の場合、分析ビジュアル(主要業務指数KPI)を作成し、4月でフィルタした場合に売上金額が「45000」売上予算額(KPI)は「600000」と表示されるようにターゲット値を作成したいのですが、その際に、どのような集計を行うと出せますでしょうか?
@Kitajima さん、ご検討いただきありがとうございます。
ご提示いただいたようなJOIN後のデータセットがあるとします。
店舗ID | 予算年 | 予算月 | 売上金額 | 売上日時 | 予算売上金額 | 予算粗利額 |
---|---|---|---|---|---|---|
a店舗 | 2025 | 4 | 15000 | 4/1/2025 | 250000 | 100000 |
a店舗 | 2025 | 4 | 10000 | 4/2/2025 | 250000 | 100000 |
b店舗 | 2025 | 4 | 20000 | 4/2/2025 | 350000 | 150000 |
これに対し以下の計算フィールドを定義することで、売上予算額を重複なく集計するというご要望が実現可能です。
▼ 1. 予算年月
予算年と予算月から予算年月の日付型フィールドを作成
parseDate(concat(toString(予算年), '/', toString(予算月), '/', '1'), 'yyyy/MM/dd')
▼ 2. 売上予算額(計算用元データ)
1.で作成した予算年月および店舗IDのパーティションにおいて、一番最初の予算売上金額だけをKPI計算用として抽出
ifelse(売上日時 = minOver(売上日時, [予算年月, 店舗ID], PRE_FILTER), 予算売上金額, null)
▼ 3. 売上予算額(KPI)
2.のデータを予算年月のパーティション内で集計
sumOver({売上予算額(計算用元データ)}, [予算年月], PRE_FILTER)
以下は最終的に出来上がったデータのテーブルとKPIのビジュアルです。
お試しいただけますでしょうか。
@Kitajima
本件、いかがでしょうか?
問題ないようでしたら、Solutionの付与をお願いします。
ありがとうございます。無事意図した結果となりました!