如何在 query_to_pandas 中使用变量
Posted
技术标签:
【中文标题】如何在 query_to_pandas 中使用变量【英文标题】:How to use variables in query_to_pandas 【发布时间】:2019-07-07 20:58:22 【问题描述】:刚刚使用 BigQuery 和其他东西被倾倒到 SQL 中,所以我不知道这类东西的很多术语。目前正在尝试制作一种输入字符串(要取出的数据集名称)的方法。但是如果不返回错误,我似乎无法将字符串放入我想要的变量中。
我查找了如何为 SQL 内容添加变量,但这些解决方案中的大多数都不适合我的情况。然后我最终添加了 $s 并在 """ 变量之前添加了 s。(这最终导致语法错误)
import pandas as pd
import bq_helper
from bq_helper import BigQueryHelper
# Some code about using BQ_helper to get the data, if you need it lmk
# test = `data.patentsview.application`
query1 = s"""
SELECT * FROM $s
LIMIT
20;
"""
response1 = patentsview.query_to_pandas_safe(query1)
response1.head(20)
上面的代码返回错误代码
File "<ipython-input-63-6b07957ebb81>", line 8
"""
^
SyntaxError: invalid syntax
编辑: 有效但必须手动强制执行的原始代码是这样的
query1 = """
SELECT * FROM `patents-public-data.patentsview.application`
LIMIT
20;
"""
response1 = patentsview.query_to_pandas_safe(query1)
response1.head(20)
【问题讨论】:
尝试从query1 = s"""
中删除s
,看看是否有效。
返回错误[400 POST googleapis.com/bigquery/v2/projects/micro-bus-245218/jobs: 语法错误:非法输入字符“$” at [2:15]]
【参考方案1】:
如果我对您的理解正确,这可能就是您要查找的内容:
#making up some variables:
vars = ['`patents-public-data.patentsview.application','`patents-private-data.patentsview.application']
for var in vars:
query = f"""SELECT * FROM var
LIMIT
20;
"""
print(query)
输出:
SELECT * FROM `patents-public-data.patentsview.application
LIMIT
20;
SELECT * FROM `patents-private-data.patentsview.application
LIMIT
20;
【讨论】:
【参考方案2】:我相信这应该会有所帮助:https://cloud.google.com/bigquery/docs/parameterized-queries#bigquery_query_params_named-python:
要指定命名参数,请使用
@
字符后跟标识符,例如@param_name
。
【讨论】:
以上是关于如何在 query_to_pandas 中使用变量的主要内容,如果未能解决你的问题,请参考以下文章