【问题标题】:ROWNUM or ROWID in google bigquery谷歌大查询中的 ROWNUM 或 ROWID
【发布时间】:2018-12-17 20:54:05
【问题描述】:

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

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

在没有那些伪列的 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..

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

如果可能,希望避免提取过程重新加载。

那么有什么方法可以为 bigquery SQL 中的查询结果行分配一个 unqiue 值?

编辑:对不起,应该澄清一下。使用标准 sql,而不是旧版

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    要对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` 
    

    【讨论】:

    • 非常感谢。我自己应该有的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多