大查询-UID(ROW_NUMBER()OVER()问题

时间:2018-12-17 11:55:33

标签: sql google-bigquery

ROW_NUMBER() OVER()与Big Query结合使用会出现问题。

一个问题是,当我使用ROW_NUMBER() OVER()创建视图时,该视图可以完美运行,但是会在半天后(根据我的假设,由于缓存)而生成,命令已更改。

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

我已经尝试过-OW_NUMBER() OVER(ORDER BY DATE),但它仍然更改。

PS 。我只需要一个UID,即为每个值分配的唯一编号与自动增量相同。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

我只需要一个UID,为每个值分配一个唯一的数字...

以下是用于BigQuery标准SQL

您可以尝试使用FARM_FINGERPRINT()函数-无论是单独使用还是如果OVER(ORDER BY ...)的一部分都包含重复的整行

#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