【问题标题】:"contains" in Bigquery standard SQLBigquery 标准 SQL 中的“包含”
【发布时间】:2017-11-17 09:54:53
【问题描述】:

我希望从 Legacy SQL 迁移到 Standard SQL

我在旧版 SQL 中有以下代码

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

我在标准 SQL 中试过这个:

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

但它给了我这个错误:

错误:无法访问具有类型的值的字段页面 数组> [4:21]

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    试试这个:

    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 中使用数组。

    【讨论】:

    • 嗨@Will 谢谢。但它并没有给我与 Legacy 相同的结果。为什么会这样?
    • 与旧版结果有何不同?它们确实应该相等。
    • 它只给了我一行数据。
    • ops,我使用了hits.page.pagepath 而不是hits.page.pageTitle。你能用我更新的查询再试一次吗?
    • 很高兴它有帮助:)
    猜你喜欢
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多