3.2標準
注文履歴から顧客ごとに最新の1件だけを取得する。
同じ時刻の注文でも決定的な結果にしたい。
最も適切な分析方法はどれか。
× 不正解
ROW_NUMBERで顧客別順位を付け、order_timeとorder_idで同順位を決定的に解決する。
詳細解説
正しいROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_time DESC, order_id)を使う
顧客ごとに順位を付け、1位だけを外側で選べる。
顧客ごとに順位を付け、1位だけを外側で選べる。
誤りGROUP BY customer_idだけでMAX(order_time)を取得する
最新時刻は得られても、他の列の注文情報を安全に対応付けられない。
最新時刻は得られても、他の列の注文情報を安全に対応付けられない。
誤りS3 Lifecycleで古い注文を削除する
履歴を削除して最新だけにするのは分析要件と保持要件を損なう。
履歴を削除して最新だけにするのは分析要件と保持要件を損なう。
誤りDynamoDB TTLで最新行を選ぶ
TTLは期限削除で、SQLの順位付けを行わない。
TTLは期限削除で、SQLの順位付けを行わない。
実際に確かめる
一時的な検証環境で実行できる例です。
Amazon Athena window functions、ROW_NUMBER、ORDER BYの公式説明を確認する。期待される結果
MAX時刻だけでは行全体を特定できない理由を説明できる。理解のポイント
- Window function
- ROW_NUMBER
- PARTITION BY
- 決定性
確認時の注意
- 確認環境: AWS公式DEA-C01試験ガイドと各サービスの公式ドキュメントの確認
- AWS公式DEA-C01 Domain 3・Task 3.2と各サービスの公式ドキュメントを確認する。
基礎のおさらい
順位と集約
集約関数は値を縮約し、ウィンドウ関数は元行を保ったまま計算する。
同順位処理
時刻だけでなく一意IDを順序へ追加し、実行ごとの揺れを防ぐ。
問題IDAWS-DEA-199
確認環境AWS公式DEA-C01試験ガイドと各サービスの公式ドキュメントの確認
最終技術確認2026-08-20
誤り・権利侵害を報告