谷歌 bigquery 中的 ROWNUM 或 ROWID

Sod*_*ved 4 google-bigquery

将一些东西移植到 bigquery,并遇到了一个问题。我们有一堆没有唯一键值的数据。不幸的是,某些报告逻辑要求每一行都有一个唯一的值。

所以在像 Oracle 这样的系统中,我只会使用ROWNUMROWIDpsudeo 列。

在 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,而不是遗留

Fel*_*ffa 5

为了ROW_NUMBER() OVER()扩展,您需要使用PARTITION.

/sf/answers/1157447581/

#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)

在此处输入图片说明