【问题标题】:Google BigQuery - Updating a nested repeated fieldGoogle BigQuery - 更新嵌套的重复字段
【发布时间】:2017-07-04 13:59:36
【问题描述】:

我正在尝试更新 BigQuery 中 Google Analytics 导出中的 hits.page.pagePath 字段,但是我无法使用文档中概述的方法取消嵌套该字段。在我的例子中,pagePath 字段嵌套在两个级别,“hits”和“page”。

https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#update_repeated_records

以下代码不完整,但我无法从页面 RECORD 中取消嵌套 pagePath。

UPDATE `project-name.datasetId.ga_sessions_yyyymmdd`

SET hits = ARRAY( 
  SELECT page.pagePath FROM UNNEST(hits) as pagePath
  )

WHERE fullVisitorID like "%1%"

有没有人设法在 GA 导出中使用更新此字段或类似字段?

谢谢。

【问题讨论】:

  • 不能完全理解你在这里想要做什么。为什么要更新ga_sessionhits 表?出口出了什么问题?你想用fullvisitor 在他的会话中的相同点击来更新它吗?

标签: google-bigquery


【解决方案1】:

以下是 BigQuery 标准 SQL

UPDATE `project-name.datasetId.ga_sessions_yyyymmdd`
SET hits =  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT * 
        REPLACE('Your New pagePath' AS pagePath) 
        FROM UNNEST([page])
      ) AS page) 
    FROM UNNEST(hits)
  ) 
WHERE fullVisitorID like "%1%"    

正如您在上面的示例中看到的,您可以将 pagePath 替换为字符串“您的新 pagePath”
当然实际上你会希望在这里有一些逻辑 - 所以将该部分替换为你需要的任何逻辑 - 例如,你需要 UPPER 整个字符串 - 你会使用类似下面的东西

        REPLACE(UPPER(pagePath) AS pagePath) 

【讨论】:

  • 当有人问起这个问题时,我意识到我搞砸了我原来的答案 :) 也感谢您发布答案!
  • 当然,我注意到您的原始答案不符合犹太教规定,所以我发布了我的:o)
  • 我不得不将内部位修改为例如ARRAY(SELECT AS STRUCT * REPLACE(....) FROM UNNEST(page)) as page,否则我得到“创建嵌套数组不支持错误。
【解决方案2】:

这应该可以帮助您入门。您需要包含 hits 中的所有其他内容才能执行更新,包括嵌套的 page

UPDATE `you_dataset.tablename`
SET hits = ARRAY(
  SELECT AS STRUCT * REPLACE (
    (SELECT AS STRUCT page.* REPLACE ('foo' AS pagePath)) AS page
  )
  FROM UNNEST(hits) as pagePath
)
WHERE fullVisitorID like "%1%"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    相关资源
    最近更新 更多