基于查询或其他数据集的结果的AWS QuickSight过滤

时间:2020-06-29 09:04:22

标签: amazon-quicksight

我想在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        |
+-----------+----------+
  • 4月份售出8台,因为user_id 1进行了5次购买,user_id 3进行了3次购买,而user_id 2没有进行任何购买。
  • 5月份仅售出1件商品,因为5月份只有user_id 1进行了购买,4月份也有购买。 user_id 2也在5月份进行了购买,但4月份没有进行购买,因此不算在内。

我可以使用以下代码轻松地使用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实现此目的,但尚未找到任何方法。 我希望有人能指出我正确的方向。 谢谢!

1 个答案:

答案 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)创建数据透视表。您应该会得到理想的结果。