BigQuery: 118% пикового использования ресурсов Превышено во время выполнения запроса, чаще всего используется в аналитическом over () - PullRequest
0 голосов
/ 29 января 2019

У меня есть таблица Sub_Table1_Clus со следующей схемой:

name    Type    Mode    
acc_id  INTEGER NULLABLE    
imp_id  STRING  NULLABLE    
con_id  STRING  NULLABLE    
in_id   STRING  NULLABLE    
date    TIMESTAMP   NULLABLE    
tr_nm   STRING  NULLABLE    
tr_ve   STRING  NULLABLE    
d_cd    TIMESTAMP   NULLABLE

В таблице 140501802 строки, и я пытаюсь получить результаты для этого запроса:

    SELECT imp.*,
    COALESCE(LAG(imp.date) OVER(PARTITION BY con_id, in_id, tr_nm 
    ORDER BY d_cd DESC), imp.date) AS imp_date  
FROM `Nikhil_Practice.Sub_Table1_Clus` as imp

ЯПолучение этой ошибки

Resources exceeded during query execution: The query could not be executed in the allotted memory. Peak usage: 118% of limit. Top memory consumer(s): sort operations used for analytic OVER() clauses: 98% other/unattributed: 2%

Может кто-нибудь, пожалуйста, помогите мне обойти другой способ смягчить эту ошибку.Спасибо

- добавив больше подробностей, чтобы лучше понять -

Моя конечная цель этого запроса - разделить всю таблицу на con_id, in_id, tr_nm и упорядочить отдельные разделы поd_cd, чтобы я мог получить столбец даты ранее возникшей строки.

Например, рассмотрим следующие данные

    acc_id imp_id con_id in_id date tr_nm tr_ve d_cd 
    1   a   a1  b1  2018-04-26 2:28:21  c1  d1  2018-04-26 2:28:35
    1   a   a1  b1  2018-04-26 2:28:21  c1  d1  2018-04-26 2:29:04
    1   b   a1  b1  2018-04-26 2:28:21  c1  d1  2018-04-26 2:29:04
    1   b   a1  b2  2018-04-26 2:28:21  c1  d1  2018-04-26 2:28:35
    2   c   a1  b2  2018-04-26 2:30:56  c1  d1  2018-04-26 2:30:58
    2   c   a1  b2  2018-04-26 2:30:56  c1  d1  2018-04-26 2:30:58
    2   d   a1  b3  2018-04-26 10:08:38 c1  d1  2018-04-26 10:08:39
    2   d   a1  b3  2018-04-26 10:08:38 c1  d1  2018-04-26 10:08:39
    2   d   a2  b3  2018-04-26 10:52:07 c1  d1  2018-04-26 10:52:08
    3   d   a2  b3  2018-04-26 10:52:07 c2  d2  2018-04-26 10:52:08
    3   e   a2  b4  2018-04-26 21:33:29 c2  d2  2018-04-26 21:33:29
    3   e   a2  b4  2018-04-26 21:33:29 c2  d2  2018-04-26 21:33:29
    3   e   a2  b4  2018-04-26 10:14:01 c2  d2  2018-04-26 10:14:06
    3   e   a2  b5  2018-04-26 3:06:29  c2  d2  2018-04-26 3:06:29
    3   e   a2  b5  2018-04-26 3:06:29  c2  d2  2018-04-26 3:06:29
    4   e   a2  b5  2018-04-26 3:06:29  c2  d2  2018-04-26 3:06:29
    4   f   a2  b5  2018-04-26 4:46:52  c2  d2  2018-04-26 4:46:53
    4   f   a2  b5  2018-04-26 4:46:52  c2  d2  2018-04-26 4:46:53
    4   f   a2  b5  2018-04-26 4:46:52  c2  d2  2018-04-26 4:46:53
    4   f   a2  b5  2018-04-26 5:48:32  c2  d2  2018-04-26 5:49:28

Желаемое O / p:

acc_id imp_id con_id in_id date tr_nm tr_ve d_cd imp_date

1   a   a1  b1  2018-04-26 2:28:21  c1  d1  2018-04-26 2:29:04  2018-04-26 2:28:21
1   b   a1  b1  2018-04-26 2:28:21  c1  d1  2018-04-26 2:29:04  2018-04-26 2:28:21
1   a   a1  b1  2018-04-26 2:28:21  c1  d1  2018-04-26 2:28:35  2018-04-26 2:28:21
2   c   a1  b2  2018-04-26 2:30:56  c1  d1  2018-04-26 2:30:58  2018-04-26 2:30:56
2   c   a1  b2  2018-04-26 2:30:56  c1  d1  2018-04-26 2:30:58  2018-04-26 2:30:56
1   b   a1  b2  2018-04-26 2:28:21  c1  d1  2018-04-26 2:28:35  2018-04-26 2:30:56
2   d   a1  b3  2018-04-26 10:08:38 c1  d1  2018-04-26 10:08:39 2018-04-26 10:08:38
2   d   a1  b3  2018-04-26 10:08:38 c1  d1  2018-04-26 10:08:39 2018-04-26 10:08:38
2   d   a2  b3  2018-04-26 10:52:07 c1  d1  2018-04-26 10:52:08 2018-04-26 10:52:07
3   d   a2  b3  2018-04-26 10:52:07 c2  d2  2018-04-26 10:52:08 2018-04-26 10:52:07
3   e   a2  b4  2018-04-26 21:33:29 c2  d2  2018-04-26 21:33:29 2018-04-26 21:33:29
3   e   a2  b4  2018-04-26 21:33:29 c2  d2  2018-04-26 21:33:29 2018-04-26 21:33:29
3   e   a2  b4  2018-04-26 10:14:01 c2  d2  2018-04-26 10:14:06 2018-04-26 21:33:29
4   f   a2  b5  2018-04-26 5:48:32  c2  d2  2018-04-26 5:49:28  2018-04-26 5:48:32
4   f   a2  b5  2018-04-26 4:46:52  c2  d2  2018-04-26 4:46:53  2018-04-26 5:48:32
4   f   a2  b5  2018-04-26 4:46:52  c2  d2  2018-04-26 4:46:53  2018-04-26 4:46:52
4   f   a2  b5  2018-04-26 4:46:52  c2  d2  2018-04-26 4:46:53  2018-04-26 4:46:52
3   e   a2  b5  2018-04-26 3:06:29  c2  d2  2018-04-26 3:06:29  2018-04-26 4:46:52
3   e   a2  b5  2018-04-26 3:06:29  c2  d2  2018-04-26 3:06:29  2018-04-26 3:06:29
4   e   a2  b5  2018-04-26 3:06:29  c2  d2  2018-04-26 3:06:29  2018-04-26 3:06:29

Я надеюсь, что теперь вы можете лучше понять

1 Ответ

0 голосов
/ 29 января 2019

Обычно partition by помогает с проблемой ресурсов.Насколько велика ваша самая большая группа?

select con_id, in_id, tr_nm, count(*)
from `Nikhil_Practice.Sub_Table1_Clus` imp
group by on_id, in_id, tr_nm
order by count(*) desc;

Если в самом большом разделе миллионы и миллионы строк, это может способствовать возникновению проблемы.

...