Google bigquery 大查询追加新行

Google bigquery 大查询追加新行,google-bigquery,Google Bigquery,在这个答案中:奔腾10建议按日期排序以获取最新的用户行。与每次用户更新时使用增加的版本号相比,这是否会对性能产生影响?时间戳在内部存储为十进制数字,因此,它们的操作方式与增加的版本号相同。唯一的性能影响是内部十进制数和表示它的表示层的格式化字符串之间的转换。有关更多详细信息,请参见链接[1]中的数据类型部分 [1] 按时间订购与按版本号订购的技术区别是什么?有其他方法可以获得相同的结果,但这个问题似乎集中在时间与id上?区别在于列的时间戳类型与int类型。这会影响查询性能吗?我想我也可以使用一个

在这个答案中:奔腾10建议按日期排序以获取最新的用户行。与每次用户更新时使用增加的版本号相比,这是否会对性能产生影响?

时间戳在内部存储为十进制数字,因此,它们的操作方式与增加的版本号相同。唯一的性能影响是内部十进制数和表示它的表示层的格式化字符串之间的转换。有关更多详细信息,请参见链接[1]中的数据类型部分


[1]

按时间订购与按版本号订购的技术区别是什么?有其他方法可以获得相同的结果,但这个问题似乎集中在时间与id上?区别在于列的时间戳类型与int类型。这会影响查询性能吗?我想我也可以使用一个历元时间戳并将其存储为int。我想我应该扩大我的问题范围,询问将新行流式传输到BQ的最佳实践,以及为给定用户选择最新行的最佳方式。@FelipeHoffa我很想听到获得相同结果的其他方法。可能是编辑/附加该答案,或者是一篇自动回复的wiki帖子。@Pentium10我想到的是[table]中的一条选择记录,一个连接选择MAXts,一个来自[table]组的id,每个组的id分别为a.id=b.id和a.ts=b.ts。可能更具可扩展性,因为OVER有其自身的局限性。顺便说一句,谢谢你在这里的所有答案-我从他们身上学到了很多@FelipeHoffa—Pentium10编写的按用户id划分的查询将比自连接查询具有更好的扩展性,而且它的性能也会更好,因为它只会导致对数据进行单次扫描。我会使用FIRSTemail而不是ROW_NUMBER,然后使用seqnum=1进行过滤,以提高执行效率,但这只是一个小差别。