Google BigQuery - 更新嵌套的重复字段

时间:2017-07-04 13:59:37

标签: google-bigquery

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

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导出中使用更新此字段或类似字段?

感谢。

2 个答案:

答案 0 :(得分: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) 

答案 1 :(得分:0)

这应该有助于您入门。您需要包含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%"