首页 文章

谷歌bigquery中的ROWNUM或ROWID

提问于
浏览
2

将一些东西移植到bigquery,并遇到一个问题 . 我们有一堆没有唯一键值的数据 . 遗憾的是,某些报告逻辑需要每行具有唯一值 .

所以在像Oracle这样的系统中我只会使用 ROWNUMROWID psudeo列 .

在vertica中,没有那些psudeo列,我会使用 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..

该值不必是持久的,只是查询结果中的唯一值 .

如果可能的话,想避免提取 - 进程 - 重新加载 .

那么有没有办法在bigquery SQL中为查询结果行分配unqiue值?

编辑:对不起,应该澄清一下 . 使用标准的sql,而不是遗留的

1 回答

  • 2

    ROW_NUMBER() OVER() 进行缩放,您需要使用 PARTITION .

    https://stackoverflow.com/a/16534965/132438

    #standardSQL
    SELECT *
      , FORMAT('%i-%i-%i', year, month, ROW_NUMBER() OVER(PARTITION BY year, month)) id
    FROM `publicdata.samples.natality`
    

    enter image description here

相关问题