Как вы возвращаете каждую запись в таблице в виде единой объединенной строки, которая содержит как минимум 1 из 4 значений для каждой записи в другой таблице? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть таблица с 92k записями только с одним столбцом, содержащая заметки о потенциальных клиентах.

У меня есть еще одна таблица с 32-тысячными записями с тремя телефонными столбцами и одним столбцом электронной почты.

Я хочу запросить записи 92k, чтобы узнать, содержат ли они какие-либо числа или электронные письма, затем объединить все эти записи и установить эту объединенную строку в качестве значения столбца Notes таблицы 32k.

Я создал электронную таблицу, которая будет работать, но она обрабатывается часами и находится на полпути. введите описание изображения здесь

=IFERROR(ifs(
not(isblank(H30627)),Join(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&H30627&"'",0)),
not(isblank(F30627)),Join(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&F30627&"'",0)),
not(isblank(E30627)),JOIN(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&E30627&"'",0)),
not(isblank(D30627)),Join(char(10),QUERY(Tasks!A:A,"SELECT A Where A 
Contains '"&D30627&"'",0))),"")

Я чувствовал, что Bigquery сэкономит много времени, но я нуб SQL, и это возвращает ошибку внешнего левого соединения без STRING_AGG и 0 измененных строк с ним.

#standardSQL
UPDATE sfdc.workingFin
SET Notes = (SELECT STRING_AGG(string_field_0) from sfdc.tasks where 
string_field_0 LIKE (SELECT Email from sfdc.workingFin))
WHERE TRUE

1 Ответ

0 голосов
/ 22 июня 2019

Вы можете использовать коррелированный подзапрос:

UPDATE sfdc.workingFin wf
    SET Notes = (SELECT STRING_AGG(string_field_0) 
                 FROM sfdc.tasks t 
                 WHERE t.string_field_0 LIKE wf.Email
                )
    WHERE true;
...