记录前缀丢失

时间:2017-01-25 21:34:28

标签: google-bigquery

我很困惑为什么列标题会针对以下两个查询以不同方式输出。

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

返回前7列,其名称如下。

visitorId | visitNumber | visitId | visitStartTime |日期| totals.visits | totals.hits

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

以下结果现在删除了总计记录前缀。

fullVisitorId | visitNumber | visitId | visitStartTime |日期| 访问|点击

为什么Total已从Visits&点击?我们如何在结果中保留前缀名称(除了手动命名列)。

2 个答案:

答案 0 :(得分:2)

我认为在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`
  

为什么Total已从Visits&点击?

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

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

您可以阅读有关Implicit aliases

的更多信息

您可以阅读有关Aliases的更多信息

答案 1 :(得分:1)

如果在标准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的指示字段。