python запрос данных из bigquery с предложением where с использованием глобальной переменной - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы получить данные из таблицы больших запросов, выполнив оператор select из python и используя переменную в моем предложении where. вот мой код:

bq_client = Client()    
var1 = 'New York'    
sql = """
SELECT *
FROM `myTable`
WHERE town = var1
LIMIT 10
"""      
df = bq_client.query(sql).to_dataframe()
print(df)

Это не работает, потому что var1 не заменяется своим значением при запуске

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Чтобы использовать переменную в вашем python коде, как вы показали, вы должны сообщить BigQuery, что эти переменные существуют с помощью конфигурации задания, затем вы можете вызвать их с синтаксисом: @var1

Например:

date = "2020-01-01"
job_config = bigquery.QueryJobConfig()

sql = """
SELECT *
FROM dataset.table
WHERE date = @date    
"""
query_params = [bigquery.ScalarQueryParameter('date', 'DATE', date)]
job_config.query_parameters = query_params

Более подробную информацию можно найти в официальной документации .

0 голосов
/ 04 мая 2020

В вашем запросе нет переменной - в нем есть строка var1.

Если вы хотите сделать что-то вроде

sql = """
select *
from `myTable`
where town = {}
LIMIT 10
""".format(var1)

Если это для производства код, вы обычно не хотите использовать строковую интерполяцию в sql. Я не знаю большую клиентскую библиотеку запросов, но большинство библиотек python sql имеют возможность передавать им параметры (и эти параметры очищаются от sql типов типов ввода, фиксированных типов и тому подобного)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...