Мне нужно получить результат выбора в BigQuery, а затем использовать его для извлечения данных из базы данных на Sql Server. Я делаю этот процесс с использованием воздушного потока. Когда я пытаюсь использовать переменные в моем выборе, я нахожу ошибку, указанную ниже, мне кажется, что это проблема в запросе, но в моих тестах внутри SQL Server он работает, кто-нибудь знает, что это может быть?
def get_data_from_bigquery():
"""query bigquery to get data to import to PSQL"""
bq = bigquery.Client(project='name_project')
query = """
select max(col1) as col1, max(col2) as col2 from (
select 0 as col1, max(col2) as col2 from dataset.tab1 where dtop >
DATE_SUB(current_date(), INTERVAL 10 DAY)
union all
select max(col1) as col1, 0 as col2 from dataset.tab2 where dtop > DATE_SUB(current_date(), INTERVAL 10 DAY)) as a
"""
query_job = bq.query(query)
data = query_job.result()
rows = list(data)
return rows
a = get_data_from_bigquery();
bet1 = str(a[0][0])
bet2 = str(a[0][1])
sql_query = """select a.id_op as id, \
a.valormn as valormn, \
a.fk_rem as rem_id \
from tab_x as a, tab_y as b \
where b.id = a.fk_rem AND \
(a.fk_rem between """ + bet1 + """ and """ + bet2 + """ and """ + bet1 + """ <= """ + bet2 + """) \
OR \
(a.id_op IS NULL and """ + bet1 + """ > """ + bet2 + """)"""
MsSql = MsSqlToGoogleCloudStorageOperator(
task_id='import_orders',
mssql_conn_id=mssql_conn,
google_cloud_storage_conn_id='gcp_conn',
sql=sql_query,
bucket=nm_bucket,
filename=nm_arquivo,
schema_filename=sc_arquivo,
dag=dag)
ProgrammingError: ('42000', "[42000] [Microsoft] [ODBC SQL Server
Драйвер] [SQL Server] Выражение не-логического типа, указанное в
контекст, где ожидается состояние, рядом с '('. (4145)
(SQLExecDirectW) ")