У меня есть следующий запрос:
#standardSQL
WITH users AS (
SELECT 1 id, 'pieter' name UNION ALL
SELECT 2 , 'george' UNION ALL
SELECT 3 , 'maggie'
),
invoices AS (
SELECT 1 id, 1 userId, 25.0 amount, 'taxi fee' description UNION ALL
SELECT 2 , 1 , 300.0 , 'conference ticket' UNION ALL
SELECT 3 , 1 , 300.0 , 'hotel room' UNION ALL
SELECT 5 , 3 , 70 , 'airbnb' UNION ALL
SELECT 6 , 3 , 22 , 'concert ticket'
)
SELECT
users.id userId,
users.name userName
FROM
users
LEFT JOIN
invoices ON invoices.userId = users.id
GROUP BY
users.id,
users.name
ORDER BY
users.id
В этом случае комбинация LEFT JOIN и GROUP BY может быть легко оптимизирована (опущена) обработчиком запросов. Однако, когда я смотрю в плане запроса, соединение по-прежнему выполняется BigQuery. Почему? И как избежать такого поведения?
Мой вариант использования: у меня есть представление, содержащее несколько полей, требующих таких объединений. Я не хочу, чтобы соединения выполнялись, когда поля не запрашиваются.
Я использую диалект standardSQL
.
spry-framework-483:US.bquijob_77ec7ccb_161b5092194
- person wardva   schedule 21.02.2018