【问题标题】:Extracting data using regexp_extract in Google BigQuery在 Google BigQuery 中使用 regexp_extract 提取数据
【发布时间】:2015-07-31 17:52:56
【问题描述】:

我正在尝试从具有多个字符的列中提取数据,并且我只对从输入字符串中获取特定字符串感兴趣。我的示例输入和输出如下。我如何使用 regexp_extract 函数来实现这个。如果你在 GBQ 工作过,有人可以分享他们的想法吗?谢谢。

**

  • SQL:-

**

   SELECT request.url AS url 
    FROM [xyz.abc]
    WHERE regexp_extract(input,r'he=(.{32})') 

**

  • 输入:-

**

http://mpp.xyz.com/conv/v=5;m=1;t=16901;ts=20150516234355;he=5e3152eafc50ed0346df7f10095d07c4;catname=Horoscope  
2   http://mpp.xyz.com/conv/v=5;m=1;t=16901;ts=20150516234335;he=5e3152eafc50ed0346df7f10095d07c4;catname=High+Speed+Internet   

**

  • 输出:-

** **

5e3152eafc50ed0346df7f10095d07c4
5e3152eafc50ed0346df7f10095d07c4

**

【问题讨论】:

    标签: sql regex extract google-bigquery


    【解决方案1】:

    这很简单:

    select regexp_extract(input,r'he=(.{32})');
    

    或例如:

    select regexp_extract('http://mpp.xyz.com/conv/v=5;m=1;t=16901;ts=20150516234355;he=5e3152eafc50ed0346df7f10095d07c4;catname=Horoscope',r'he=(.{32})')
    

    【讨论】:

    • 感谢奔腾的回复。但是当我运行相同的时候我得到了这个错误。函数 LOGICAL_AND 中的参数类型不匹配:第一个参数是 bool 类型,第二个参数是字符串类型
    • 您应该检查您的数据类型,这些适用于 STRING 列。如果您仍有问题需要帮助,请分享您的问题。
    • 那是一个混乱的SQL,你不能这样使用REGEXP作为where。 SELECT regexp_extract(request.url,r'he=(.{32})') as output AS url FROM [xyz.abc]
    • 我的错...我将它从 where 子句中删除并尝试将其保留在 SELECT 子句中...但它返回给我 NULL。
    • .{32} 是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多