【问题标题】:BigQuery Duplicate column namesBigQuery 列名重复
【发布时间】:2018-12-14 19:50:20
【问题描述】:

我有一个问题:

WITH DAY_WIDGET_STAT AS (
SELECT hits.eventInfo.eventCategory, hits.eventInfo.eventAction, hits.eventInfo.eventLabel, hits.page.pagePath  
FROM `api-open-broker.108613784.ga_sessions_20181125`, UNNEST(hits) as hits
WHERE hits.type='EVENT' and hits.eventInfo.eventCategory LIKE "%Widget%"
),
DAY_PAGEVIEWS_STAT AS (
SELECT hits.page.pagePath, COUNT(*) AS pageviews
FROM `api-open-broker.108613784.ga_sessions_20181125`,UNNEST(hits) AS hits
WHERE hits.type = 'PAGE' GROUP BY hits.page.pagePath ORDER BY pageviews DESC)

SELECT * 
FROM DAY_WIDGET_STAT INNER JOIN DAY_PAGEVIEWS_STAT ON DAY_WIDGET_STAT.pagePath=DAY_PAGEVIEWS_STAT.pagePath
LIMIT 10

这给了我“不支持结果中的重复列名。发现重复项:pagePath”。 为什么? 表 DAY_WIDGET_STAT: Look DAY_PAGEVIEWS_STAT: Look

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    副本是pagePath;这在两个 CTE 中都有。在这种情况下,我可能会建议:

    SELECT w.*,
           p.* EXCEPT (pagePath) 
    FROM DAY_WIDGET_STAT w INNER JOIN
         DAY_PAGEVIEWS_STAT p
         ON w.pagePath = p.pagePath
    LIMIT 10;
    

    或者,USING 也应该做你想做的事:

    SELECT * 
    FROM DAY_WIDGET_STAT w INNER JOIN
         DAY_PAGEVIEWS_STAT p
         USING (pagePath)
    LIMIT 10;
    

    您也许可以将查询重写为单个聚合,但如果没有样本数据和所需结果,则有点难以弄清楚。如果你有兴趣,你可以再问一个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多