首页 文章

Bigquery标准SQL中的“contains”

提问于
浏览
2

我希望从旧版SQL迁移到标准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>的值的字段页面[4:21]

1 回答

  • 6

    试试这个:

    SELECT 
      hits.page.pageTitle
    FROM `table`,
    UNNEST(hits) hits
    WHERE REGEXP_CONTAINS(hits.page.pageTitle, r'%')
    LIMIT 1000
    

    在ga_sessions模式中,"hits"是ARRAY(即REPEATED模式) . 您需要应用UNNEST操作才能在BigQuery中使用数组 .

相关问题