我想在AWS Quicksight中创建一个分析表,该表根据给定月份进行了购买的用户显示给定月份和随后月份的销售量。
假设我有一个名为user_orders
的数据集,其中包含以下数据:
+---------+----------+------------+
| user_id | quantity | order_date |
+---------+----------+------------+
| 1 | 2 | 2020-04-01 |
+---------+----------+------------+
| 1 | 3 | 2020-04-02 |
+---------+----------+------------+
| 1 | 1 | 2020-05-23 |
+---------+----------+------------+
| 1 | 2 | 2020-06-02 |
+---------+----------+------------+
| 2 | 1 | 2020-05-03 |
+---------+----------+------------+
| 2 | 1 | 2020-05-04 |
+---------+----------+------------+
| 3 | 2 | 2020-04-07 |
+---------+----------+------------+
| 3 | 1 | 2020-04-10 |
+---------+----------+------------+
| 3 | 1 | 2020-06-23 |
+---------+----------+------------+
例如,使用上表,我希望能够显示4月进行购买的用户在4月,5月,6月等(最多12个月)内销售了多少数量。 结果表应如下所示:
+-----------+----------+
| | quantity |
+-----------+----------+
| 04-2020 | 8 |
+-----------+----------+
| 05-2020 | 1 |
+-----------+----------+
| 06-2020 | 3 |
+-----------+----------+
我可以使用以下代码轻松地使用PHP和MySQL制作上表:
# first get all the user ids who made a purchase in April
$user_ids = sql_query("SELECT DISTINCT user_id FROM user_orders WHERE order_date BETWEEN '2020-04-01' AND '2020-04-30'");
# get the quantity sold for each month by users who made a purchase in April
$purchases = sql_query("SELECT MONTH(order_date), SUM(quantity) FROM user_orders WHERE user_id IN ({$user_ids}) AND order_date BETWEEN '2020-04-01' AND '2021-03-31' GROUP BY MONTH(order_date);")
(显然,April仅是一个例子,我希望能够使用QuickSight控件动态更改开始月份)
如上面的示例所示,它需要两个查询才能执行此分析。首先是获取用户的user_id,其次是实际获取用户销售的数量。
过去3天,我一直在尝试使用Quicksight实现此目的,但尚未找到任何方法。 我希望有人能指出我正确的方向。 谢谢!
答案 0 :(得分:0)
您可以通过创建一个像这样的计算字段并对其进行过滤
来实现distinctCountOver(ifelse(truncDate('MM',{order_Date})= parseDate('2020-04-01'),1,NULL),[{user_id}],PRE_AGG)
(当然,您可以将parseDate部分更改为日期参数)
现在,假设上述计算字段的名称为SpecificMonthUser。您可以添加一个过滤器总和(SpecificMonthUser)!= 0。
然后使用OrderDate,行中的用户ID和值中的sum(quantity)创建数据透视表。您应该会得到理想的结果。