Google bigquery Google Big Query无法访问类型为ARRAY的值上的字段页

Google bigquery Google Big Query无法访问类型为ARRAY的值上的字段页,google-bigquery,Google Bigquery,我正在努力获取合格的鉴证人数量。qulifiedVisitor将是在网站上搜索“苹果”的用户 但我得到了这个错误: Cannot access filed page on a value with type ARRAY<STRUCT<hitNumber INT64,timeITN64, time64,..>> 我尝试了其他人以前提供的方法,例如使用unesthits或exist。然而,它仍然不起作用 如果你有任何想法,请告诉我 .我想你想要这样的东西: SELECT

我正在努力获取合格的鉴证人数量。qulifiedVisitor将是在网站上搜索“苹果”的用户

但我得到了这个错误:

Cannot access filed page on a value with type ARRAY<STRUCT<hitNumber INT64,timeITN64, time64,..>>
我尝试了其他人以前提供的方法,例如使用unesthits或exist。然而,它仍然不起作用

如果你有任何想法,请告诉我


.

我想你想要这样的东西:

SELECT
  COUNT(DISTINCT fullVisitorId) AS QualifiedVisitors
FROM `dataset.tablename`, UNNEST(hits) AS hits
WHERE hits.page.pagePath = '/apple';
重要的部分是对UNNEST的结果进行别名处理。在您共享的屏幕截图中,您缺少别名,因此hits.page.pagePath仍然引用原始的hits列,而不是未列出的列

编辑:如果目的是在hits中至少有一个条目的pagePath为“/apple”的情况下计算总计,则可能需要使用EXISTS子句,而不是在外部范围内展平数组。比如说,

SELECT
  COUNT(DISTINCT fullVisitorId) AS QualifiedVisitors,
  SUM(totals.pageViews) AS TotalViews
FROM `dataset.tablename`
WHERE EXISTS (
  SELECT 1 FROM UNNEST(hits) AS hit
  WHERE hit.page.pagePath = '/apple');

如果这样的话,请考虑一下也要投票。我很高兴我能帮忙!如果你不介意的话,还有一个问题。我还对查找搜索苹果的用户的页面浏览量感兴趣。所以我只是使用sumtotals.pageviews来更改查询,并保持查询的其余部分不变。但它似乎工作得不好。在访问数组字段时是否也会遇到同样的错误?相反,您可能需要从UNNESTtotals中选择SUMpageviews。嗨,Elliott,谢谢您的回复。我试图从表中选择sumtotals.pageviews,unnesttotals where hits.page.pagepath='apple',但我得到一个错误代码:UNNEST中引用的值必须是数组。UNNEST包含STRUCTHi Elliott类型的表达式,我尝试了您的方法。但我得到的TotalViews比GA的TotalViews多得多。我还需要数据信息,所以我在select和groupby中添加了日期。但还是有更多的结果。