Преобразование Postgre в Bigquery - PullRequest
0 голосов
/ 18 февраля 2020

У меня проблема с преобразованием из Postgre в запрос Bigquery.

Пожалуйста, как этот запрос может сработать для больших запросов? Мне нужно выбрать таблицу и принести последний регистр

(select g.fase__c
from operacoes.salesforce_gest_o_do_canal_c_full g
where g.n_de_indentifica_o_do_parceiro__c = a.n_de_indentifica_o_do_parceiro__c
order by g.data_do_credenciamento__c limit 1)  as fase_jornada

from operacoes.salesforce_account_full

Если я пытаюсь выполнить, Bigquery возвращает ошибку, я должен применить соединение, Если я применяю объединение, порядок по не работает

Спасибо!

1 Ответ

0 голосов
/ 19 февраля 2020

Коррелированный подзапрос (который является подзапросом, который ссылается на таблицу внешнего запроса), если он выполняется "как есть", потребуется вычислить подзапрос для каждой строки результатов внешнего запроса, что не очень эффективность.

Для оптимизации этого BigQuery сначала преобразует (декоррелирует) запрос в запрос, который функционально эквивалентен коррелированному, но без каких-либо корреляций между запросами и подзапросами. Для разных вариантов использования требуются разные процессы декорреляции, и они могут быть довольно сложными и трудными для реализации и надлежащего тестирования.

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

Обходным путем будет использование ARRAY_AGG вместо подзапроса. Я полагаю, что в вашем случае сработает следующий запрос:

SELECT
  ARRAY_AGG(g.fase__c
    ORDER BY g.data_do_credenciamento__c
    LIMIT 1) AS fase_jornada
FROM
  operacoes.salesforce_account_full a
JOIN
  operacoes.salesforce_gest_o_do_canal_c_full g
ON
  g.n_de_indentifica_o_do_parceiro__c = a.n_de_indentifica_o_do_parceiro__c
GROUP BY
  g.n_de_indentifica_o_do_parceiro__c

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

Пожалуйста, дайте мне знать, если что-то не ясно!

...