расширенные ресурсы в Google Big Query - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь обработать 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.Я не хочу смешивать это.

Проблема в том, что этот конкретный запрос превышает ресурсы, поэтому я хотел бы знать, есть ли какие-либо варианты, которые у меня есть здесь.Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Ниже эквивалентен вашему исходному запросу (по результатам) и обычно решает проблему «превышенных ресурсов»

#standardSQL
SELECT r.* FROM (
  SELECT 
    ARRAY_AGG(STRUCT(Source,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) ORDER BY Attom_ID DESC LIMIT 1)[OFFSET(0)]
  FROM `db.ds.tblA`
  GROUP BY FirstName, LastName, MiddleName, Address, Address2, City, State, Zip
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...