実績がなくてもピボットで表示させたい

以下のようなデータがあるとします。

行に商品、列に店舗を配置し、販売数を集計し、日付でフィルターをすると
2024/12/1の場合は以下のようになり

2024/12/2の場合は以下のようになると認識しています。
image

実績がなくても商品がでるようにしたいです。
以下のような感じです。
image

データとしてBの店舗がぶどうを持てばよいのですが、現実的ではありません。
どうにか関数などを駆使して対応することはできないでしょうか?

@optarc.yamaji さん、ご質問ありがとうございます。
おっしゃるようにBの店舗に対しぶどうのデータが存在していないので、QuickSightのなかに完結して実現するのは難しいのではないかと思います。

もしデータが外部のリレーショナルなデータセット(例. Redshift, Athena, RDSなど)のものであれば、カスタムSQLを使い、日付・店・商品の組み合わせに対し販売数が無い箇所は明示的にゼロでレコードを作るようにしておけば、一応ご要望は実現できるかと思います。ただし、データ量に応じてデータソース側でのクエリ負荷が増えていきますのでご注意ください。

ご参考までに、ご提示いただいたのと同じデータセットを、Athenaを使いカスタムSQLで処理した例です↓

WITH all_combinations AS (
    SELECT DISTINCT sales_date, store, item
    FROM (
        SELECT DISTINCT sales_date FROM store_sales
    ) sales_dates
    CROSS JOIN (
        SELECT DISTINCT store FROM store_sales
    ) stores
    CROSS JOIN (
        SELECT DISTINCT item FROM store_sales
    ) items
)
SELECT
    ac.sales_date, ac.store, ac.item, coalesce(ss."order", 0) as "order"
FROM 
    all_combinations ac
LEFT JOIN store_sales ss 
    ON ac.sales_date = ss.sales_date
    AND ac.store = ss.store
    AND ac.item = ss.item
GROUP BY 
    ac.sales_date, ac.store, ac.item, ss."order"

1 Like

データ上にない場合は難しいとのこと承知いたしました。
データ量が多くクエリ負荷が懸念されますので、対応は難しそうです。

ご確認いただきありがとうございました。