Получил это на работу.Кажется, я упустил тот факт, что мне нужно было объявить объединенное поле первым в первой таблице:
SELECT
T1.SKey,
T1.urlPage,
T2.MinHit
FROM
(
SELECT
CONCAT(CAST(visitId AS STRING),CASE WHEN hits.page.searchKeyword IS NULL THEN "(NULL)" ELSE hits.page.searchKeyword END) as SKey,
CONCAT("https://", hits.page.hostname, hits.page.pagePath) as urlPage,
FROM [bigquery-public-data:google_analytics_sample.ga_sessions_20170801]
GROUP BY SKey, urlPage
)
AS T1
INNER JOIN
(
SELECT
CONCAT(CAST(visitId AS STRING),CASE WHEN hits.page.searchKeyword IS NULL THEN "(NULL)" ELSE hits.page.searchKeyword END) as SKey,
MIN(hits.hitNumber) as MinHit
FROM [bigquery-public-data:google_analytics_sample.ga_sessions_20170801]
GROUP BY SKey
) AS T2
ON T1.SKey = T2.SKey
В любом случае, оператор CASE не был необходим (я добавил его, поскольку думал, что это решит проблему).).Вот исправленный и более точный запрос:
SELECT
T1.SKey,
T1.urlPage,
T2.MinHit
FROM
(
SELECT
CONCAT(CAST(visitId AS STRING), hits.page.searchKeyword) as SKey,
CONCAT("https://", hits.page.hostname, hits.page.pagePath) as urlPage,
FROM [bigquery-public-data:google_analytics_sample.ga_sessions_20170801]
GROUP BY SKey, urlPage
)
AS T1
INNER JOIN
(
SELECT
CONCAT(CAST(visitId AS STRING), hits.page.searchKeyword) as SKey,
MIN(hits.hitNumber) as MinHit
FROM [bigquery-public-data:google_analytics_sample.ga_sessions_20170801]
GROUP BY SKey
) AS T2
ON T1.SKey = T2.SKey