簡體   English   中英

從Google BigQuery中的嵌套表中刪除重復項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM