#sql #google-analytics #google-bigquery
# #sql #google-analytics #google-bigquery
Вопрос:
Используя этот запрос из поваренной книги BigQuery и добавленный в _table_date_range_, потому что я хочу запрашивать больше, чем один день.
Запрос находит продукт и возвращает другие продукты, приобретенные с этим продуктом.
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity
FROM (TABLE_DATE_RANGE([ghd-analytics-xxxxxx.xxxxxx.ga_sessions_],
TIMESTAMP('2018-08-01'), TIMESTAMP('2018-09-31')))
WHERE fullVisitorId IN (
SELECT fullVisitorId
FROM (TABLE_DATE_RANGE([ghd-analytics-xxxxxx.xxxxxx.ga_sessions_],
TIMESTAMP('2018-08-01'), TIMESTAMP('2018-08-03')))
WHERE hits.item.productName CONTAINS 'productA'
AND totals.transactions>=1
GROUP BY fullVisitorId )
AND hits.item.productName IS NOT NULL
AND hits.item.productName !='productA'
GROUP BY other_purchased_products
ORDER BY quantity DESC;
Сообщение об ошибке:
(L2: 1): ОБЪЕДИНЕНИЕ (включая полусоединение) и ОБЪЕДИНЕНИЕ ВСЕХ (запятая, диапазон дат) не могут быть объединены в одном операторе SELECT . Либо переместите ОБЪЕДИНЕНИЕ ALL во внутренний запрос, либо JOIN во внешний запрос.
Я не уверен, как делать то, что он предлагает!
Большое спасибо за любую помощь.
Ответ №1:
Я не уверен, как делать то, что он предлагает!
Вы просто буквально делаете то, что предлагается в заявлении об ошибке, а именно move the UNION ALL to an inner query
Итак, в приведенной ниже исправленной версии — я только что добавил SELECT * FROM
во вторую строку
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity
FROM (SELECT * FROM TABLE_DATE_RANGE([ghd-analytics-xxxxxx.xxxxxx.ga_sessions_],
TIMESTAMP('2018-08-01'), TIMESTAMP('2018-09-31')))
WHERE fullVisitorId IN (
SELECT fullVisitorId
FROM (TABLE_DATE_RANGE([ghd-analytics-xxxxxx.xxxxxx.ga_sessions_],
TIMESTAMP('2018-08-01'), TIMESTAMP('2018-08-03')))
WHERE hits.item.productName CONTAINS 'productA'
AND totals.transactions>=1
GROUP BY fullVisitorId )
AND hits.item.productName IS NOT NULL
AND hits.item.productName !='productA'
GROUP BY other_purchased_products
ORDER BY quantity DESC
Примечание: Я надеюсь, что у вас есть веские причины использовать здесь устаревший SQL — в любом случае рассмотрите возможность перехода на стандартный SQL
Комментарии:
1. Большое спасибо за это. Я просто работаю с кулинарной книгой, которую предоставляет Google, и во многих из них все еще используются устаревшие примеры. Спасибо за вашу помощь.