ресурсы превышены в BigQuery sql - PullRequest
1 голос
/ 17 марта 2020

У меня есть простой запрос cte, который удаляет дубликаты.

with cte as (
   select     Agent_SK
    , Listing_Agent_License_Number
    , Listing_Agent_Name
    , Listing_Agent_Address
    , Listing_Agent_Phone
    , Listing_Agent_Email
    , Office_Name
    , Office_Address
    , Office_Phone
    , Office_Email
        , Update_Timestamp
        , ROW_NUMBER() OVER (PARTITION BY Listing_Agent_Name
                                        , Listing_Agent_Address
                                        , Listing_Agent_Phone
                                        , Listing_Agent_Email
                             ORDER BY Update_Timestamp DESC) AS rn
   from `mother-216719.VALUATION.MLS`
   where Agent_SK is not null
) select
    Agent_SK
    , Listing_Agent_License_Number
    , Listing_Agent_Name
    , Listing_Agent_Address
    , Listing_Agent_Phone
    , Listing_Agent_Email
    , Office_Name
    , Office_Address
    , Office_Phone
    , Office_Email
    , Update_Timestamp
from cte
where rn = 1;

Этот запрос дает превышенные ресурсы. Я думаю, что это о функции row_number(). Как я могу go обойти это?

1 Ответ

3 голосов
/ 17 марта 2020

Ниже приведено для BigQuery Standard SQL и следует выполнить трюк

#standardSQL
WITH cte AS (
  SELECT     
    Agent_SK
    , Listing_Agent_License_Number
    , Listing_Agent_Name
    , Listing_Agent_Address
    , Listing_Agent_Phone
    , Listing_Agent_Email
    , Office_Name
    , Office_Address
    , Office_Phone
    , Office_Email
    , Update_Timestamp
  FROM `mother-216719.VALUATION.MLS`
  WHERE Agent_SK IS NOT NULL
) 
SELECT AS VALUE ARRAY_AGG(t ORDER BY Update_Timestamp DESC LIMIT 1)[OFFSET(0)] 
FROM cte t
GROUP BY     
  Listing_Agent_Name
  , Listing_Agent_Address
  , Listing_Agent_Phone
  , Listing_Agent_Email
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...