【问题标题】:Google BigQuery SQL query working in Web-UI not returning results in Python / Pandas在 Web-UI 中工作的 Google BigQuery SQL 查询未在 Python/Pandas 中返回结果
【发布时间】:2018-06-29 10:37:17
【问题描述】:

我在 Google BigQuery 中有一个查询,它在 BigQuery Web-UI(我用于测试)中运行良好,但在 Python/Pandas 中运行时无法返回任何结果。

BigQuery 网络用户界面

SELECT COUNT(foo) AS Foo FROM `dataset.table` WHERE 
REGEXP_CONTAINS(LOWER(title),r'(\b(bar)\b)')

返回

Row Foo  
1   4087

在 Python / Pandas 中

import pandas as pd
project_id = 'some_id'
query = """SELECT COUNT(foo) AS Foo FROM `dataset.table` WHERE 
REGEXP_CONTAINS(LOWER(title),r'(\b(bar)\b)')"""

df=pd.read_gbq(query, project_id, dialect='standard')

返回

print(df)
    Foo
0   0

到目前为止,这不是我使用的最复杂的正则表达式查询,而且到目前为止,使用 Web-UI 来测试查询就像一个魅力。

知道我在这里做错了什么吗?

---编辑---

我能够使用public Shakespeare dataset 重新创建问题,我将其复制到我现有的项目中作为'sample:shakespeare_copy' 以避免可能的身份验证问题。

GBQ 网页界面

SELECT COUNT(word_count) AS Foo FROM `bigquery-public- 
data.samples.shakespeare` WHERE 
REGEXP_CONTAINS(LOWER(corpus),r'(\b(sonnets)\b)')

返回

Row Foo  
1   3677    

Python / 熊猫

import pandas as pd
project_id = 'some_id'
query="""SELECT COUNT(word_count) AS Foo FROM sample.shakespeare_copy 
WHERE REGEXP_CONTAINS(LOWER(corpus),r'(\b(sonnets)\b)')"""
df=pd.read_gbq(query,project_id,dialect='standard')

返回

print(df)
     Foo
0    0

在没有REGEXP_CONTAINS() 的情况下运行查询时,一切都会按预期运行。

query="""SELECT COUNT(word_count) AS Foo FROM sample.shakespeare_copy"""
df=pd.read_gbq(query,projectid,dialect='standard')

print(df)
    Foo
0  164656

提前非常感谢!
斯蒂芬

【问题讨论】:

  • 我的第一个猜测是你读错了项目。
  • 感谢 Gordon,我检查了这一点,还运行了一些其他查询,所有这些都按预期工作。我强烈怀疑这个问题与 REGEX_CONTAINS() 有关。不过,我确实遵循了文档,并且所有其他正则表达式查询都按预期工作,所以我仍然感到困惑。
  • 。 .我的第二个猜测是正则表达式中的反引号。尝试使用更简单的正则表达式。
  • 谢谢 Gordon,后面的引号确实是问题所在:stackoverflow.com/questions/41070708/…

标签: python sql pandas google-bigquery


【解决方案1】:

解决方案

根据this entry,在 Python 中编写 SQL 时必须使用双反斜杠。学过的知识。使用r('\\b(bar)\\b') 可以获得所需的结果。

【讨论】:

    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多