我知道Google BigQuery中没有主键,那么为什么找到唯一的列用作行索引是最好的呢?
我可以考虑使用:
SELECT count(*) as totalnumber, count(distinct columnname) as uniquecolumn from `db`
但是还有什么更好的方法吗?
谢谢
答案 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`