Я пытаюсь обработать ROW_NUMBER () OVER (PARTITION BY ... ORDER BY ...) в скрипте bigquery и продолжаю сталкиваться с ошибкой «превышены ресурсы».
Размер этой таблицыэто 219,96 ГБ и число строк 1 611 220 120
вот сценарий:
With cte as (
SELECT
Source,
ROW_NUMBER() OVER (PARTITION BY FirstName, LastName, MiddleName, Address, Address2, City, State, Zip ORDER BY Attom_ID DESC) as rnk
,FirstName, LastName, MiddleName, Gender, Age, DOB, Address, Address2, City, State, Zip, Zip4, TimeZone, Income, HomeValue, Networth, MaritalStatus, IsRenter, HasChildren, CreditRating, Investor, LinesOfCredit, InvestorRealEstate, Traveler, Pets, MailResponder, Charitable, PolicalDonations, PoliticalParty, Attom_ID, GEOID, Score, Score1, Score2, Score3, Score4, Score5, Latitude, Longitude
from `db.ds.tblA`
) select * from cte where rnk = 1
Хотя это одна таблица, она является результатом объединения, в котором все столбцы PRIOR и ATTOM_ID взяты изодна таблица, а ATTOM_ID, GEOID и т. д. идут от второй.Я полагаю, что в наборе результатов есть некоторая декартова зависимость.
В таблице есть множество дубликатов, и я пытаюсь дедуплицировать таблицу.Я боялся попробовать GROUP_BY с MAX (ATTOM_ID), потому что я хотел убедиться, что я использую правильно связанные GEOID и SCORES.Я не хочу смешивать это.
Проблема в том, что этот конкретный запрос превышает ресурсы, поэтому я хотел бы знать, есть ли какие-либо варианты, которые у меня есть здесь.Спасибо!