我正在使用Python Snowflake连接器从Snowflake中的表中提取数据。以下是我的文件结构:sql
a.sql
b.sql
c.sql
configurations.py
data_extract.py
main.py
这里的sql文件夹包含了.sql文件中的所有sql查询。我将这些sql文件分开放置,因为它们都是一堆行,如果我把它们放到python文件中,它们看起来会很混乱。
在配置.py包含每次运行代码时都要更改的日期时间参数。看起来像这样:
^{pr2}$
我想把这些参数添加到sql文件中。例如,a.sql包含以下内容:DECLARE
@START_PICKUP_DATE DATE,
@END_PICKUP_DATE DATE,
SET
@START_PICKUP_DATE = '2018-10-01'
SET
@END_PICKUP_DATE = '2019-04-01'
select supplier_confirmation_id, pickup_datetime, dropoff_datetime, pickup_station_distance
from SANDBOX.ZQIAN.V_PDL
where pickup_datetime >= START_PICKUP_DATE and pickup_datetime < END_PICKUP_DATE
and supplier_confirmation_id is not null;
我在python代码中使用a.sql,方法如下:def executeSQLScriptsFromFile(filepath):
# snowflake credentials, replace SECRET with your own
ctx = snowflake.connector.connect(
user='S_ANALYTICS_USER',
account=SECRET_A,
region='us-east-1',
warehouse=SECRET_B,
database=SECRET_C,
role=SECRET_D,
password=SECRET_E)
fd = open(filepath, 'r')
query = fd.read()
fd.close()
cs = ctx.cursor()
try:
cur = cs.execute(query)
df = pd.DataFrame.from_records(iter(cur), columns=[x[0] for x in cur.description])
finally:
cs.close()
ctx.close()
return df
def extract_data():
a_sqlpath = os.path.join(os.getcwd(), 'sql\a.sql')
a_df = executeSQLScriptsFromFile(a_sqlpath)
return a_df
问题是我希望同步.sql文件中的START_PICKUP_DATE和END_picku DATE,并等于起始时间和结束时间配置.py文件,这样我只需要更改开始时间和结束时间配置.py并使用雪花中的a.sql提取不同时间段的数据。
我在网上寻找解决方案已经有很长时间了,但是仍然没有找到一个针对我的问题的好的解决方案。非常感谢任何能提供提示的人!在