我正在尝试替换BigQuery中显示的部分页面路径,并保持其他所有内容不变。我可以很好地提取数据,但是在尝试编写“更新命令”时遇到了问题。我想做的事情看起来像:
更新ga_sessions_20180101
UNNEST(GA.hits)流行曲
设置hits.page.pagePath = REGEXP_REPLACE(page,r'。* string_selected =([[^ \&] +)','New Value')
其中CAST(visitID AS STRING)=“ 1234”
但是,当然,它不喜欢更新后的不必要的声明……请您帮忙。 谢谢
答案 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子句在您的原始问题中是正确的(因为我根本没有更改),并且您想要做的-上面就是您要的内容!