[英]Remove duplicates from nested tables in Google BigQuery
我們已開始使用Google bigQeury嵌套表。 我們很難在這張桌子上找出重復的內容。 我們嘗試使用Rownumber()函數,但這意味着我們需要深入到每個記錄和記錄中。 我們談論的是一個在建築的基本巢穴和超過400個領域中有超過10條記錄的表格
下面的代碼是我們到目前為止創建的,它給出了重復的識別,但是我可以編寫的字段數量很多,正如我所寫,有超過400個字段
SELECT
count (*) AS Number_Of_Records --this will let us know how many records there is
FROM
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY field1, ... , fieldN) AS ranking
FROM
`data.T1`,
unnest(record1) as record1, --unnesting is a must with nested tables and records
....,
unnest(recordN) as recordN
)
WHERE
ranking=1 --duplicats >1
我們想找一個更短的方法來編寫這個查詢來查找非重復行的數量,謝謝
一種方法是使用散列函數來標識記錄並使用此散列來刪除重復項。
因此,假設您的JSON數據由字符串組成,您可以使用以下內容為您的記錄生成唯一的哈希代碼:
WITH items AS
(SELECT ["apples", "bananas", "pears", "grapes"] as list
UNION ALL
SELECT ["coffee", "tea", "milk" ] as list
UNION ALL
SELECT ["cake", "pie", NULL] as list -- Duplicate record
UNION ALL
SELECT ["cake", "pie", NULL] as list)
SELECT distinct FARM_FINGERPRINT(ARRAY_TO_STRING(list, '--')) AS text
FROM items;
這導致3行而不是預期的4行(1行一式兩份)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.