【问题标题】:Record Prefix Missing记录前缀缺失
【发布时间】:2017-01-25 21:34:27
【问题描述】:

我很困惑为什么以下两个查询的列标题输出不同。

select fullVisitorId , visitNumber, visitId, visitStartTime, date,totals.visits, totals.hits, totals.pageviews, totals.timeOnSite from 33959632.ga_sessions_20170124

返回的前 7 列具有以下名称。

访问者 ID |访问号码 |访问ID |访问开始时间 |日期 | totals.visits | totals.hits

SELECT fullVisitorId , visitNumber, visitId, visitStartTime, date,   
totals.visits, totals.hits  FROM `33959632.ga_sessions_20170101`

下面的结果现在删除了 Total 记录前缀。

fullVisitorId |访问号码 |访问ID |访问开始时间 |日期 | 访问次数 |命中

为什么从访问次数和点击次数中删除了总计?我们如何在结果中保留前缀名称(除了手动命名列)。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    我认为在 GA 中 - 每个模式 - totals 字段不是数组,而只是记录
    所以,试试下面

    #standardSQL
    SELECT
      fullVisitorId,
      visitNumber,
      visitId,
      visitStartTime,
      date,
      STRUCT(totals.visits, totals.hits, totals.pageviews, totals.timeOnSite) AS totals
    FROM `33959632.ga_sessions_20170101`
    

    为什么从访问次数和点击次数中删除了总计?

    在 SELECT 列表中,如果存在没有显式别名的表达式,BigQuery 会根据以下规则分配隐式别名。

    • 对于标识符,别名就是标识符。例如,SELECT abc 暗示 AS abc。
    • 对于路径表达式,别名是路径中的最后一个标识符。例如,SELECT abc.def.ghi 暗示 AS ghi。
    • 对于使用“点”成员字段访问运算符的字段访问,别名是字段名称。例如,SELECT (struct_function()).fname 意味着 AS fname。

    你可以阅读更多关于Implicit aliases的信息

    你可以阅读更多关于Aliases的信息

    【讨论】:

      【解决方案2】:

      如果您在标准 SQL 中选择字段路径,则结果将具有路径中叶字段的类型。如果你想生成一个结构来镜像原始结构,你可以这样做:

      #standardSQL
      SELECT
        fullVisitorId,
        visitNumber,
        visitId,
        visitStartTime,
        date,
        STRUCT(
          totals.visits,
          totals.hits,
          totals.pageviews,
          totals.timeOnSite) AS totals
      FROM 33959632.ga_sessions_20170124;
      

      这会在结果的结构中返回totals 的指示字段。

      【讨论】:

      • 我上面的代码是在标准 sql 中,我确实取消了扁平化结果的选项。但是,它仍然会从所有内容中删除记录前缀。听起来有必要使用您建议的代码吗?感谢您的回复!
      • 啊,我明白了。 Mikhail 最终给出了相同的答案,但基本思想是,如果要在结果中保留 totals 的形状,则应使用 STRUCT 运算符。如果您想在结果中包含其所有字段,另一种方法是直接选择totals
      • :o) 在我回答的时候——我认为这是两个不同的答案。但绝对是相同的概念。同意
      猜你喜欢
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      相关资源
      最近更新 更多