Google bigquery Google BigQuery SQL:在具有Concat函数的字段上“未找到字段”

Google bigquery Google BigQuery SQL:在具有Concat函数的字段上“未找到字段”,google-bigquery,Google Bigquery,我遇到BigQuery无法识别我指定的使用Concat字符串的字段键的问题: SELECT T2.MinHit, CONCAT(CAST(T1.visitId AS STRING), CASE WHEN T1.hits.page.searchKeyword IS NULL THEN "(NULL)" ELSE T1.hits.page.searchKeyword END) AS Key1, CONCAT("https://", T1.hits.page.hostname, T1.hits.pag

我遇到BigQuery无法识别我指定的使用Concat字符串的字段键的问题:

SELECT
T2.MinHit,
CONCAT(CAST(T1.visitId AS STRING), CASE WHEN T1.hits.page.searchKeyword IS NULL THEN "(NULL)" ELSE T1.hits.page.searchKeyword END) AS Key1,
CONCAT("https://", T1.hits.page.hostname, T1.hits.page.pagePath) AS urlPage
FROM [bigquery-public-data:google_analytics_sample.ga_sessions_20170801] 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 Key2,
   MIN(hits.hitNumber) AS MinHit
   FROM [bigquery-public-data:google_analytics_sample.ga_sessions_20170801]
   GROUP BY Key1 ) AS T2
ON T1.Key1 = T2.Key2
我还注意到,使用一个简单的Where函数Key1 NOT NULL再次返回一个未找到字段的错误


有什么想法可以让我绕过这个问题吗

成功了。我似乎忽略了我需要在第一个表中首先声明连接字段的事实:

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
无论如何,案例陈述是没有必要的,我添加了它,因为我认为这样可以解决问题。 以下是经过修订且更准确的查询:

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

使用标准SQL而不是传统SQL