購入履歴データから月間の購入回数のヒストグラムを作りたい

user_idと購入日付のデータがあります。購入日付の年月ごとにユーザーが購入した回数をカウントし、横軸が一ヶ月間の購入回数、縦軸がユーザー数のヒストグラムをつくりたいです。

countOver関数は指定したグループごとにカウントを行う関数です。
以下の式で指定したキー{user_id}, {年月}ごとに、対象フィールドの件数を数えてくれます。

式:countOver({年月}, [{user_id}, {年月}], PRE_AGG)
countOver - Amazon QuickSight

【元データ】

user_id 年月
A 2025/7/1
A 2025/7/15
B 2025/7/20
A 2025/8/1

【集計後】

user_id 年月 購入回数
A 2025年7月 2回
B 2025年7月 1回
A 2025年8月 1回
1 Like

@kawasakitr222 さん、その後いかがでしょうか。Hiroyuki_Onamiさんの回答で解決していましたらSolutionマークの付与をお願いいたします。もし疑問点があれば遠慮なく追加でご質問ください。

@kawasakitr222
ちなみに私の方からも少し補足させていただくと、ヒストグラムは数値フィールドを指定し、その分布を描画する仕様になっているため、購入日付と言う日付型のフィールドを指定してしてカウントの分布を出すことはできません。

以下のように垂直棒グラフを使い、購入日付のフィールドをX軸に指定することで、各日付におけるレコード数(=購入回数)をヒストグラムのように可視化することができますので、お試しいただけますと幸いです。

作成したいグラフをExcelで作ってみました。ご教示いただいた購入回数フィールドを、購入日を月で集計して、1か月の購入回数ごとのユーザー数のヒストグラムを作りたいです。

@kawasakitr222 イメージのご共有ありがとうございます。

以下の流れで実現できると思いますので、ご確認いただけますでしょうか。

  1. 前提:以下のような元データがあるとします

  2. 月単位で集計するための「年月パーティション」を計算フィールドとして作成します
    ※この計算フィールドは後でパラメータとして利用するため、データセット側で定義しておきます。

    concat(toString(extract('YYYY', 購入日付)), '-', toString(extract('MM', 購入日付)))
    

  3. パーティションを利用して「購入回数」の計算フィールドを作成します
    ※こちらの計算フィールドは分析側で定義します。
    ※同じユーザーのレコードが重複してカウントされないよう、rank関数を使い、その月の最初のレコードにだけ集計した購入回数を追加するようにしています。

    ifelse(
        rank([購入日付 ASC], [年月パーティション, {user_id}], PRE_FILTER) = 1,
        countOver(購入日付, [年月パーティション, {user_id}], PRE_FILTER),
        0
    )
    

    以下のように計算フィールドが追加されます

  4. 出来上がった「購入回数」をX軸、「user_id」を値として垂直棒グラフを作成します
    ※この時点では全期間のデータです。
    ※値(Y軸)のラベルはビジュアルのプロパティから「user_id」→「ユーザー数」に変更しています。

  5. フィルター用のパラメータを作成します

  6. パラメータを使いコントロールを作成します
    ※コントロールの値はデータセット内の年月パーティションにリンクさせておきます。

  7. 垂直棒グラフで、年月パーティションのフィールドに対し、パラメータを使ったフィルターを作成します

  8. 同じく垂直棒グラフで、購入回数のフィールドに対し、1以上の購入回数のみ表示するフィルターを作成します

  9. 完成

1 Like

ありがとうございます。作りたいグラフを作れました。