Google Big Query为类型为ARRAY的值提供了“无法访问字段”页面

时间:2016-12-13 01:03:00

标签: google-bigquery

我正在努力获得qulifiedVisitor计数。 qulifiedVisitor将是搜索“apple' apple”的用户。在网站上。

但我收到此错误:

Cannot access filed page on a value with type ARRAY<STRUCT<hitNumber INT64,timeITN64, time64,..>>

我尝试过其他人之前提供的方法,例如使用UNNEST(命中)或exists()。但是,它仍然无效。

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

Screenshot of the code and error

1 个答案:

答案 0 :(得分:8)

我想你想要这样的东西:

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');