具有两个聚合级别的切片。有可能超过同一个table吗?
Slice with two levels of aggregation. Is it possible over the same table?
我正在评估 Superset,我想尝试了解它是否可能以及如何在同一组数据上获得不同级别的聚合。我正在处理银行账户。我正在拍摄帐户余额的每日快照,因此我有一个具有以下结构(非常简化)的 table:
account_id date balance week
1 2018-01-01 .00 1
1 2018-01-02 .00 1
1 2018-01-03 .00 1
1 2018-01-04 .00 1
1 2018-01-05 .00 1
1 2018-01-06 .00 1
1 2018-01-07 .00 2
1 2018-01-08 .00 2
1 2018-01-09 .00 2
1 2018-01-10 .00 2
1 2018-01-11 .00 2
1 2018-01-12 .00 2
1 2018-01-13 .00 2
1 2018-01-14 .00 3
2 2018-01-09 .00 2
2 2018-01-10 .00 2
2 2018-01-11 .00 2
2 2018-01-12 .00 2
2 2018-01-13 .00 2
2 2018-01-14 .00 3
首先,我需要计算每天的总余额。这很简单。我可以使用日期作为时间列和余额指标 SUM 构建一个切片。使用上面的示例数据,结果必须是:
date total balance week
2018-01-01 .00 1
2018-01-02 .00 1
2018-01-03 .00 1
2018-01-04 .00 1
2018-01-05 .00 1
2018-01-06 .00 1
2018-01-07 .00 2
2018-01-08 .00 2
2018-01-09 .00 2
2018-01-10 .00 2
2018-01-11 .00 2
2018-01-12 .00 2
2018-01-13 .00 2
2018-01-14 .00 3
然后我需要计算每个帐户的每周平均余额。这也很简单,因为我可以使用 AVG 作为指标:
week average_balance_per_account
1 .17
2 .08
3 .50
但在那之后,我想计算每周的平均总余额。这是每日总余额的平均值。在这个例子中:
week average_balance expression
1 .17 = (5+10+10+10+10+10)/6
2 .00 = (10+10+(10+70)+(10+70)+(20+70)+(20+70)+(20+5))/7
3 .00 = ((20+5))/1
有什么方法可以使用之前定义的 table 来计算最后一份报告吗?
您尝试计算的指标可以表示为:sum(balance)/count(distinct date)
;每日总余额除以总天数。然后,您将 group by week
生成您的平均余额。
首先,在 table 上创建一个新指标。将 SQL 表达式更新为 sum(balance)/count(distinct date)
.
其次,确保您的 week
列已标记为 Groupable
。另一种方法是在创建 Slice 并将 Time Grain
设置为 week
.
时使用 date
列
我正在评估 Superset,我想尝试了解它是否可能以及如何在同一组数据上获得不同级别的聚合。我正在处理银行账户。我正在拍摄帐户余额的每日快照,因此我有一个具有以下结构(非常简化)的 table:
account_id date balance week
1 2018-01-01 .00 1
1 2018-01-02 .00 1
1 2018-01-03 .00 1
1 2018-01-04 .00 1
1 2018-01-05 .00 1
1 2018-01-06 .00 1
1 2018-01-07 .00 2
1 2018-01-08 .00 2
1 2018-01-09 .00 2
1 2018-01-10 .00 2
1 2018-01-11 .00 2
1 2018-01-12 .00 2
1 2018-01-13 .00 2
1 2018-01-14 .00 3
2 2018-01-09 .00 2
2 2018-01-10 .00 2
2 2018-01-11 .00 2
2 2018-01-12 .00 2
2 2018-01-13 .00 2
2 2018-01-14 .00 3
首先,我需要计算每天的总余额。这很简单。我可以使用日期作为时间列和余额指标 SUM 构建一个切片。使用上面的示例数据,结果必须是:
date total balance week
2018-01-01 .00 1
2018-01-02 .00 1
2018-01-03 .00 1
2018-01-04 .00 1
2018-01-05 .00 1
2018-01-06 .00 1
2018-01-07 .00 2
2018-01-08 .00 2
2018-01-09 .00 2
2018-01-10 .00 2
2018-01-11 .00 2
2018-01-12 .00 2
2018-01-13 .00 2
2018-01-14 .00 3
然后我需要计算每个帐户的每周平均余额。这也很简单,因为我可以使用 AVG 作为指标:
week average_balance_per_account
1 .17
2 .08
3 .50
但在那之后,我想计算每周的平均总余额。这是每日总余额的平均值。在这个例子中:
week average_balance expression
1 .17 = (5+10+10+10+10+10)/6
2 .00 = (10+10+(10+70)+(10+70)+(20+70)+(20+70)+(20+5))/7
3 .00 = ((20+5))/1
有什么方法可以使用之前定义的 table 来计算最后一份报告吗?
您尝试计算的指标可以表示为:sum(balance)/count(distinct date)
;每日总余额除以总天数。然后,您将 group by week
生成您的平均余额。
首先,在 table 上创建一个新指标。将 SQL 表达式更新为 sum(balance)/count(distinct date)
.
其次,确保您的 week
列已标记为 Groupable
。另一种方法是在创建 Slice 并将 Time Grain
设置为 week
.
date
列