我正在评估Superset,我想尝试了解它是否可行,以及如何在同一组数据上获得不同级别的聚合。我正在处理银行账户。我每天都会拍摄帐户余额的快照,因此我有一张包含以下结构的表格(非常简化):
account_id date balance week
1 2018-01-01 $5.00 1
1 2018-01-02 $10.00 1
1 2018-01-03 $10.00 1
1 2018-01-04 $10.00 1
1 2018-01-05 $10.00 1
1 2018-01-06 $10.00 1
1 2018-01-07 $10.00 2
1 2018-01-08 $10.00 2
1 2018-01-09 $10.00 2
1 2018-01-10 $10.00 2
1 2018-01-11 $20.00 2
1 2018-01-12 $20.00 2
1 2018-01-13 $20.00 2
1 2018-01-14 $20.00 3
2 2018-01-09 $70.00 2
2 2018-01-10 $70.00 2
2 2018-01-11 $70.00 2
2 2018-01-12 $70.00 2
2 2018-01-13 $5.00 2
2 2018-01-14 $5.00 3
首先,我需要计算每天的总余额。这非常直截了当。我可以使用日期作为时间列和余额的度量 SUM 来构建切片。使用上面的示例数据结果必须是:
date total balance week
2018-01-01 $5.00 1
2018-01-02 $10.00 1
2018-01-03 $10.00 1
2018-01-04 $10.00 1
2018-01-05 $10.00 1
2018-01-06 $10.00 1
2018-01-07 $10.00 2
2018-01-08 $10.00 2
2018-01-09 $80.00 2
2018-01-10 $80.00 2
2018-01-11 $90.00 2
2018-01-12 $90.00 2
2018-01-13 $25.00 2
2018-01-14 $25.00 3
然后我需要计算每个帐户的每周平均余额。这也很容易,因为我可以使用 AVG 作为指标:
week average_balance_per_account
1 $9.17
2 $32.08
3 $12.50
但在那之后,我想计算每周的平均总余额。这是每日总余额的平均值。在这个例子中:
week average_balance expression
1 $9.17 = (5+10+10+10+10+10)/6
2 $55.00 = (10+10+(10+70)+(10+70)+(20+70)+(20+70)+(20+5))/7
3 $25.00 = ((20+5))/1
有没有办法使用之前定义的同一个表计算上一个报告?
答案 0 :(得分:1)
您尝试计算的指标可表示为:filename_e_archive = askopenfilename()
current_directory = os.path.abspath('.')
folder_d_archive = filename_e_archive.split('.elog')[0]
filename_d_archive = folder_d_archive + ".tar.gz"
path_to_e_archive = os.path.dirname(filename_e_archive)
path_to_d_archive = os.path.join(path_to_e_archive,'/',folder_d_archive)
os.makedirs(path_to_d_archive)
os.chdir(path_to_d_archive)
gpg = gnupg.GPG()
with open(filename_e_archive, 'rb') as f:
status = gpg.decrypt_file(f, passphrase='mypassword',output=filename_d_archive)
;每日总余额除以总天数。然后,您sum(balance)/count(distinct date)
将生成平均余额。
首先,在表格上创建一个新指标。将SQL表达式更新为group by week
。
其次,确保您的sum(balance)/count(distinct date)
列已标记为week
。另一种方法是在创建切片并将Groupable
设置为date
时使用Time Grain
列。