【问题标题】:Google Big Query gives Cannot Access Field page on a value with type ARRAYGoogle Big Query 在 ARRAY 类型的值上提供无法访问字段页面
【发布时间】:2016-12-13 01:03:00
【问题描述】:

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

但我收到此错误:

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

我尝试了其他人之前提供的方法,例如使用UNNEST(hits),或者exist()。但是,它仍然无法正常工作。

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

Screenshot of the code and error.

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    我想你想要这样的东西:

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

    【讨论】:

    • 如果可行,请mark the answer as accepted 并考虑支持它。我很高兴能帮上忙!
    • 如果您不介意的话,还有一个问题。我也有兴趣查找搜索苹果的人的页面浏览量。所以我只是使用 sum(totals.pageviews) 更改查询并保持查询的其余部分相同。但似乎效果不佳。
    • 您是否在访问数组字段时遇到同样的错误?相反,您可能需要执行SUM((SELECT SUM(pageviews) FROM UNNEST(totals)) 之类的操作。
    • 您好,Elliott,感谢您的回复。我试图从table 中选择 sum(totals.pageviews),unnest(totals) where hits.page.pagepath='apple' 但我收到错误代码“UNNEST 中引用的值必须是数组。UNNEST 包含 STRUCT 类型的表达式"
    • 嗨 Elliott,我试过你的方法。但我得到的 TotalViews 比 GA 的 TotalViews 多。我还需要数据信息,所以我在 select 和 group by 中添加了日期。但仍然有更多的结果。
    猜你喜欢
    • 2016-12-30
    • 2018-07-19
    • 1970-01-01
    • 2019-10-27
    • 2020-09-21
    • 1970-01-01
    • 2023-02-06
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多