【发布时间】:2018-07-04 12:41:57
【问题描述】:
我在 BigQuery 中有一个表,它每天获取新数据并将其附加到当前表中。此表称为:score_FULL。此外,我每天都会保存个人分数,如果我们选择今天的日期,可以通过score_20180125 访问。每日分数附加到score_FULL。
score_FULL 包含:
visitorID score
#Older scores first
1 0.15
2 0.78
3 0.12
6 0.90
------------------------
2 0.22
6 0.65
7 0.61
10 0.24
------------------------
1 0.31
2 0.41
10 0.12
-------------------------
#Newest scores appended
我想查看用户分数的变化。每次用户获得新分数时,我们都会将其水平附加。每次我们获得一个新用户时,我们都会垂直追加它。假设用户每天只能获得 1 分,理想的解决方案是:
visitorID score1 score2 score3
1 0.15 0.31
2 0.78 0.22 0.41
3 0.12
例如水平(新分数)和垂直(新用户)增长的表格
我可以在单个表上使用一系列左连接来做类似的事情,但这只会给我来自我们运行左连接的第一个表的访问者数据。
注意:我可以添加另一列
Date,它将简单地重复 所有值的相同日期,如果它使事情变得更容易的话。
【问题讨论】:
-
您在完整表格中是否有每一行的日期?
-
不,我没有,但我确实有来自
score_DATE表的日期,它被附加到FULL表中。虽然,如果有一个简单的解决方案,我也可以将日期添加到表格中。因此它将为当天附加的所有行附加相同的日期 -
您曾经使用过窗口函数或表通配符查询吗?您的数据可以返回的最大天数是多少?
-
@Pentium10 不,我没有。目前只能追溯到 6 天,但这会每天增长。我也许可以做到只报告最后
n天。 -
你使用表分区吗?如果没有,为什么不呢?
标签: sql google-bigquery