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回 |
@kawasakitr222 さん、その後いかがでしょうか。Hiroyuki_Onamiさんの回答で解決していましたらSolutionマークの付与をお願いいたします。もし疑問点があれば遠慮なく追加でご質問ください。
@kawasakitr222
ちなみに私の方からも少し補足させていただくと、ヒストグラムは数値フィールドを指定し、その分布を描画する仕様になっているため、購入日付と言う日付型のフィールドを指定してしてカウントの分布を出すことはできません。
以下のように垂直棒グラフを使い、購入日付のフィールドをX軸に指定することで、各日付におけるレコード数(=購入回数)をヒストグラムのように可視化することができますので、お試しいただけますと幸いです。
@kawasakitr222 イメージのご共有ありがとうございます。
以下の流れで実現できると思いますので、ご確認いただけますでしょうか。
-
前提:以下のような元データがあるとします
-
月単位で集計するための「年月パーティション」を計算フィールドとして作成します
※この計算フィールドは後でパラメータとして利用するため、データセット側で定義しておきます。concat(toString(extract('YYYY', 購入日付)), '-', toString(extract('MM', 購入日付)))
-
パーティションを利用して「購入回数」の計算フィールドを作成します
※こちらの計算フィールドは分析側で定義します。
※同じユーザーのレコードが重複してカウントされないよう、rank関数を使い、その月の最初のレコードにだけ集計した購入回数を追加するようにしています。ifelse( rank([購入日付 ASC], [年月パーティション, {user_id}], PRE_FILTER) = 1, countOver(購入日付, [年月パーティション, {user_id}], PRE_FILTER), 0 )
以下のように計算フィールドが追加されます
-
出来上がった「購入回数」をX軸、「user_id」を値として垂直棒グラフを作成します
※この時点では全期間のデータです。
※値(Y軸)のラベルはビジュアルのプロパティから「user_id」→「ユーザー数」に変更しています。
-
フィルター用のパラメータを作成します
-
パラメータを使いコントロールを作成します
※コントロールの値はデータセット内の年月パーティションにリンクさせておきます。
-
垂直棒グラフで、年月パーティションのフィールドに対し、パラメータを使ったフィルターを作成します
-
同じく垂直棒グラフで、購入回数のフィールドに対し、1以上の購入回数のみ表示するフィルターを作成します
-
完成
ありがとうございます。作りたいグラフを作れました。