Biqquery仅更新Pagepath

时间:2018-07-12 08:51:40

标签: arrays google-bigquery

我正在尝试替换BigQuery中显示的部分页面路径,并保持其他所有内容不变。我可以很好地提取数据,但是在尝试编写“更新命令”时遇到了问题。我想做的事情看起来像:

更新ga_sessions_20180101
UNNEST(GA.hits)流行曲
设置hits.page.pagePath = REGEXP_REPLACE(page,r'。* string_selected =([[^ \&] +)','New Value')
其中CAST(visitID AS STRING)=“ 1234”

但是,当然,它不喜欢更新后的不必要的声明……请您帮忙。 谢谢

1 个答案:

答案 0 :(得分:1)

首先,我建议您通过SELECT语句来完善您的逻辑并使其易于使用,以确保您的代码能够正常工作,然后再应用UPDATE语句

   

因此,正确的选择应如下所示

cells = the_table1._cells
for cell in the_table1._cells:
    if cell[0] == 0:
        the_table1._cells[cell].set_fontsize(8)
上面的

保留了整个模式,只有一个字段-pagePath除外。

现在,在弄清楚逻辑之后-您可以按以下步骤进行

SELECT * REPLACE(
  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT * 
        REPLACE(REGEXP_REPLACE(pagePath, r'.*string_selected=([^\&]+)','New Value') AS pagePath) 
        FROM UNNEST([page])
      ) AS page) 
    FROM UNNEST(hits)
  ) AS hits)
FROM `project.dataset.ga_sessions_20180101`
WHERE CAST(visitID AS STRING) = "1234"

假设正则表达式和where子句在您的原始问题中是正确的(因为我根本没有更改),并且您想要做的-上面就是您要的内容!