Sql 大查询-UID(行号()超过()问题

Sql 大查询-UID(行号()超过()问题,sql,google-bigquery,Sql,Google Bigquery,我有一个问题,就是在大查询中使用ROW\u NUMBER()OVER() 一个问题是,当我使用ROW_NUMBER()OVER()创建一个视图时,它工作得非常好,但是在半天之后(我的假设是,因为缓存),这个命令生成的编号会发生变化 因为我创建了另一个实体表,但仍然引用视图。将ROW_NUMBER()OVER()-UID创建为实体不变数字的最佳方法是什么 我已经试过了——OW_NUMBER()(按日期排序),但还是变了 p.S.我只需要一个UID,即分配给每个值的唯一编号,与自动增量相同 多谢各位

我有一个问题,就是在大查询中使用
ROW\u NUMBER()OVER()

一个问题是,当我使用
ROW_NUMBER()OVER()
创建一个视图时,它工作得非常好,但是在半天之后(我的假设是,因为缓存),这个命令生成的编号会发生变化

因为我创建了另一个实体表,但仍然引用视图。将
ROW_NUMBER()OVER()-UID
创建为实体不变数字的最佳方法是什么

我已经试过了——
OW_NUMBER()(按日期排序)
,但还是变了

p.S.我只需要一个UID,即分配给每个值的唯一编号,与自动增量相同

多谢各位

我只需要一个UID,分配给每个值的唯一编号

下面是BigQuery标准SQL

您可以尝试使用该函数-或者单独使用,或者如果您将整行作为
OVER(ORDER by…)的一部分进行复制,则可以使用该函数


您需要提供示例数据和所需结果。根据我的经验,
row_number()
在基本表和视图的BigQuery中都可以正常工作。@GordonLinoff它可以正常工作,我不是在抱怨它不起作用。如果我解释不正确,很抱歉……主要问题是在运行查询并将数据保存到单独的表之后。表和视图开始有不同的UID值。但最初我没有这样做此视图中的表仅保证您在ORDER BY子句中指定的列具有排序功能。因此对于
OVER(ORDER BY date)
可以将
(2018-01-01,1)
返回为第一行,稍后可以将其返回为
(2018-01-01,2)
。我想这就是你所注意到的。@SalmanA是的,一天后这个数字会改变,所以我需要一个稳定且不会改变的东西,任何其他UID技术??只需将主键包含到顺序中即可(假设每次插入一行时它都会增加)谢谢你,这听起来是个很酷的主意。我会检查一下,然后告诉你。
#standardSQL
SELECT *, 
  FARM_FINGERPRINT(TO_JSON_STRING(t)) uid,
  ROW_NUMBER() OVER(ORDER BY FARM_FINGERPRINT(TO_JSON_STRING(t))) row_num
FROM `project.dataset.table` t