【问题标题】:SQL big query script issueSQL大查询脚本问题
【发布时间】:2023-03-11 15:07:03
【问题描述】:

你能帮我吗,我不明白我的 WHERE 有什么问题。我尝试了几件事,但无法得出正确的结论。

SELECT 
CONCAT(fullvisitorId, "-", CAST(visitstarttime AS STRING)) as session,
RANK() OVER(PARTITION BY CONCAT(fullvisitorId, "-", CAST(visitstarttime AS STRING)) ORDER BY hitNumber ASC) AS Rank, 
(SELECT MAX(cd.value) FROM hits.customDimensions as cd where cd.index = 12) as cd1,
(SELECT cd.value FROM hits.customDimensions as cd where cd.index=29) as division,
hits.hitnumber

FROM 
  `dl-training-bigquery.NDA_CHAN*******51.ga_sessions_20191202` as session,
  unnest(hits) as hits
  
WHERE division = 'fsh'
ORDER BY hitnumber ASC

enter image description here

【问题讨论】:

  • 请提供样本数据、期望的结果以及错误的解释。

标签: sql google-analytics google-bigquery where-clause cross-join


【解决方案1】:

division 似乎是在select 中定义的列别名。

这在 SQL 中是不允许的(一般来说,不仅仅是 BigQuery)。使用子查询或 CTE 定义 division。然后在外部查询中过滤。

【讨论】:

    【解决方案2】:

    您不能在同一范围内重用SELECT 子句中定义的列(ORDER BY 子句除外)。在这里,最简单的方法可能是将子查询移动到FROM 子句:

    SELECT 
        CONCAT(fullvisitorId, "-", CAST(visitstarttime AS STRING)) as session,
        RANK() OVER(PARTITION BY fullvisitorId, visitstarttime ORDER BY hitNumber) as rank, 
        dim1.cd1,
        dim2.division,
        hits.hitnumber
    FROM `dl-training-bigquery.NDA_CHAN*******51.ga_sessions_20191202` as session
    CROSS JOIN unnest(hits) as hits
    CROSS JOIN (SELECT MAX(cd.value) as cd1 FROM hits.customDimensions as cd where cd.index = 12) as dim1
    CROSS JOIN (SELECT cd.value as division FROM hits.customDimensions as cd where cd.index = 29) as dim2  
    WHERE dim2.division = 'fsh'
    ORDER BY hitnumber ASC
    

    注意我简化了窗口函数的PARTITION BY子句:我认为你这里不需要字符串连接,你可以使用两级分区。

    我还将隐式连接更改为显式cross joins。这不会改变逻辑,但在我看来使意图更清晰。

    【讨论】:

    • 顺便谢谢你的回答,这是我遇到的问题,语法错误:Unexpected keyword CROSS at [8:1]
    • @erika:好的,前一行有一个不需要的尾随逗号。固定。
    • 抱歉回答晚了!应该没问题,但我无法得到结果,因为我得到“未找到:数据集 dl-training-bigquery:在美国位置找不到命中”。我使用了正确的表和正确的变量
    • @erika:我不能告诉你你的架构是什么......如果你的系统中不存在该表,那么查询显然无法工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多