Лучший способ сохранить местоположение набора данных BigQuery как переменную - python - PullRequest
0 голосов
/ 04 февраля 2019

В настоящее время у меня есть функция, которая читает файл SQL для выполнения запроса в Google BigQuery.

import pandas as pd

def func1(arg1,arg2):
     with open('query.sql', 'r') as sqlfile:
        sql_query= sqlfile.read()
     df = pd.read_gbq(sql_query.format(arg1=arg1,arg2=arg2)
query.sql
SELECT * 
FROM bigquery.dataset
WHERE col1= {arg1}
AND col2 = {arg2}

Расположение набора данных жестко закодировано в самом файле SQL и, как таковое, усложняет его.внести изменения, если бы я изменил расположение набора данных (то есть, мне нужно было бы по отдельности перейти к каждому файлу SQL и вручную изменить предложение «От». Поскольку у меня много файлов SQL, становится неудобно вручную редактировать каждый отдельный файл SQL изпредложение)

Итак, мои вопросы: каков наилучший способ сделать динамическое расположение набора данных?В идеале местоположение набора данных должно быть переменной, но вопрос в том, где разместить переменную.Если это переменная, лучше ли передавать ее как аргумент функции?IE func1 будет иметь еще один аргумент, называемый dataset_loc

import pandas as pd

def func1(arg1,arg2,dataset_loc):
     with open('query.sql', 'r') as sqlfile:
        sql_query= sqlfile.read()
     df = pd.read_gbq(sql_query.format(arg1=arg1,arg2=arg2,dataset_loc=dataset_loc)
query.sql
SELECT * 
FROM {dataset_loc}
WHERE col1 = {arg1}
AND col2 = {arg2}

Хотелось бы узнать, каков наилучший способ сделать это.Спасибо

1 Ответ

0 голосов
/ 04 февраля 2019

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

Кроме того, имейте в виду, что сейчас ваше приложение может быть небольшим, но вам необходимо подготовиться к расширению в будущем.И, безусловно, вам не нужно писать один и тот же файл SQL-запроса для каждого из ваших наборов данных.

Это зависит от вашего варианта использования, но, как правило, рекомендуется управлять параметрами приложения вне кода.Для этого используются файлы конфигурации, и, как вы используете Python, взгляните на эту библиотеку Python , которая полезна для их чтения.

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