I have written the below python function to create sql statements which i want to run inside google's BigQuery platform. When i look into the code, i see that many string literals are redundant, for example the usage of "_stg". How can i avoid these hard coded string values and redundant code? Also, is it normal to hard code sql queries like this in python code or is there a more better pythonic way of doing this?
def create_main_bq_table(database, table, dc, filter_column, cmt):
try:
create_statement = "create table if not exists " + database + "." + table
select_statement = " partition by dt as select *,"
from_statement = "from " + database + "_stg." + table
if filter_column != 'none':
if dc == '-1':
query = create_statement + select_statement + "date(" + filter_column + ") as dt " + from_statement + "_stg"
else:
query = create_statement + "_" + dc + select_statement + "date(" + filter_column + ") as dt " + from_statement + "_" + dc + "_stg"
elif filter_column == 'none' and cmt != 'snapshot':
if dc == '-1':
query = create_statement + select_statement + "date(last_run_time) as dt " + from_statement + "_stg"
else:
query = create_statement + "_" + dc + select_statement + "date(last_run_time) as dt " + from_statement + "_" + dc + "_stg"
else:
if dc == '-1':
query = "create or replace table " + database + "." + table + " as select * from " + database + "_stg." + table + "_stg"
else:
query = "create or replace table " + database + "." + table + "_" + dc + " as select * from " + database + "_stg." + table + "_" + dc + "_stg"
except Exception as e:
print(e)
raise