Добавление переменной из среды Python к запросам при использовании магической команды BigQuery Jupyter - PullRequest
0 голосов
/ 17 апреля 2019

В моей записной книжке Jupyter есть несколько ячеек, которые запрашивают данные из Google BigQuery.Части этих запросов имеют одинаковые переменные.Я ищу самый чистый способ для учета этих переменных, поэтому мне не нужно вручную устанавливать их индивидуально каждый раз, когда я хочу внести изменение.

Вот пример того, что у меня есть:

%%bigquery df
select * from `project.dataset.table`
where date_str like '2019-02-%'

Вот что я ищу:

date_str_query = '2019-02-%' # this variable would be in the python environment

%%bigquery df
select * from `project.dataset.table`
where date_str like date_str_query

1 Ответ

1 голос
/ 17 апреля 2019

К сожалению, эта часть отсутствует в официальной документации, и мне пришлось пролистать код, чтобы, наконец, найти решение. Я документирую свои выводы здесь в надежде помочь людям с той же проблемой. Есть два способа сделать это.

Способ 1 [вообще не использует магическую команду]:

date_str_query = '2019-02-%'
sql = """
select * from `project.dataset.table`
where date_str like {0}
""".format(date_str_query)
df = client.query(sql).to_dataframe()

Путь 2 [магические правила команды!]:

params = {'date_str_query': '%-2019-02-%'}

%%bigquery df --params $params
select * from `project.dataset.table`
where date_str like @date_str_query

Я предпочитаю Способ 2 , потому что вы получаете подсветку синтаксиса SQL и множество других функций с помощью магической команды.

Ссылки:

Документация Google: https://cloud.google.com/bigquery/docs/visualize-jupyter

Исходный код: https://github.com/googleapis/google-cloud-python/blob/master/bigquery/google/cloud/bigquery/magics.py

##### ОБНОВЛЕНИЕ #####

Новая документация содержит подробное описание различных входных данных для магической команды. Его можно найти здесь: https://googleapis.github.io/google-cloud-python/latest/bigquery/magics.html?highlight=gender

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