Bigquery标准SQL中的“contains”

13

我希望将代码从Legacy SQL迁移到Standard SQL。

我在Legacy SQL中有以下代码:

SELECT
  hits.page.pageTitle
FROM [mytable] 
WHERE hits.page.pageTitle contains '%' 

我在标准SQL中尝试了这个:

SELECT
  hits.page.pageTitle
FROM `mytable` 
WHERE STRPOS(hits.page.pageTitle, "%") 

但它给了我这个错误:

错误:无法访问类型为ARRAY的值上的page字段,在[4:21]处

1个回答

20
尝试这个:
SELECT 
  hits.page.pageTitle
FROM `table`,
UNNEST(hits) hits
WHERE REGEXP_CONTAINS(hits.page.pageTitle, r'%')
LIMIT 1000

在ga_sessions模式中,“hits”是一个数组(即,重复模式)。您需要应用UNNEST操作才能在BigQuery中处理数组。

嗨@Will,谢谢。但它没有给我与Legacy相同的结果。为什么会这样? - MFR
遗留结果与现有结果有何不同?它们应该是相等的。 - Willian Fuks
它只给了我一行数据。 - MFR
1
抱歉,我使用了 hits.page.pagepath 而不是 hits.page.pageTitle。你能否请再试一次我的更新查询? - Willian Fuks
很高兴能帮到你 :) - Willian Fuks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接