在BigQuery中找到唯一的列作为行索引

时间:2018-12-04 14:40:43

标签: google-bigquery

我知道Google BigQuery中没有主键,那么为什么找到唯一的列用作行索引是最好的呢?

我可以考虑使用:

SELECT count(*) as totalnumber, count(distinct columnname) as uniquecolumn from `db`

但是还有什么更好的方法吗?

谢谢

2 个答案:

答案 0 :(得分:2)

您可以为此使用HASH函数-例如FARM_FINGERPRINT()

#standardSQL
SELECT *, FARM_FINGERPRINT(TO_JSON_STRING(t)) AS uniquecolumn 
FROM `project.dataset.table` t  

FARM_FINGERPRINT()使用开源FarmHash库中的Fingerprint64函数计算STRING或BYTES输入的指纹。此功能针对特定输入的输出将不变,因此您可以将其用作行索引

答案 1 :(得分:0)

您可以使用GENERATE_UUID function

SELECT *, GENERATE_UUID() AS uniquecolumn
FROM `dataset.table`