将一些东西移植到 bigquery,并遇到了一个问题。我们有一堆没有唯一键值的数据。不幸的是,某些报告逻辑要求每一行都有一个唯一的值。
所以在像 Oracle 这样的系统中,我只会使用ROWNUM或ROWIDpsudeo 列。
在 vertica 中,它没有我会使用的那些伪列ROW_NUMBER() OVER()。但是在因错误而失败的 bigquery 中:
'dataset:bqjob_r79e7b4147102bdd7_0000016482b3957c_1': Resources exceeded during query execution: The query could not be executed in the allotted memory.
OVER() operator used too much memory..
Run Code Online (Sandbox Code Playgroud)
该值不必是持久的,只是查询结果中的唯一值。
如果可能,希望避免提取过程重新加载。
那么有没有什么办法可以为bigquery SQL中的查询结果行分配一个unqiue值呢?
编辑:对不起,应该澄清。使用标准 sql,而不是遗留
为了ROW_NUMBER() OVER()扩展,您需要使用PARTITION.
#standardSQL
SELECT *
, FORMAT('%i-%i-%i', year, month, ROW_NUMBER() OVER(PARTITION BY year, month)) id
FROM `publicdata.samples.natality`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5986 次 |
| 最近记录: |