Я работаю над автоматизированным конвейером приема больших данных в Python.Я использую Python API для создания строки SQL и выполнения их для создания больших таблиц запросов и добавления новых данных в старые таблицы.
У меня есть раздел в коде, где он создает новую таблицу из старой таблицы,После этого он сбрасывает старый стол.Но иногда я сталкиваюсь с проблемой, когда запрос удаленной таблицы выполняется перед созданием запроса таблицы.Чтобы преодолеть это, я вручную устанавливаю time.sleep () в моем скрипте.
Есть ли способ остановить запрос на удаление таблицы, чтобы он выполнялся перед созданием запроса таблицы?Ниже приведены фрагменты кода, который я использую.
Fnl_DtaNme_Bth = Final_DataName + datetime.now().strftime('%Y%m%d_%H%M%S')
fnl_sql_vw = """
Create table {} as
(
select * from `{}` where row_key not in (select row_key from `{}`)
union all
select {} from `{}`
)
""".format(dataset_id + '.' + Fnl_DtaNme_Bth, ProjectID + '.' + dataset_id + '.' + Final_DataName, ProjectID + '.' + dataset_id + '.' + viewname, List_COls, ProjectID + '.' + dataset_id + '.' + viewname)
print('CreateTable:-->', fnl_sql_vw)
client = bigquery.Client()
query_job = client.query(fnl_sql_vw)
time.sleep(10)
######### Here we are DROPING Old Mater Data ##############
drop_table = """Drop Table `{}`""".format(ProjectID + '.' + dataset_id + '.' + Final_DataName)
client = bigquery.Client()
query_job = client.query(drop_table)
time.sleep(10)
#########Here we are RE-CREATING Mater Data without BATCH_ID#############
fnl_data = """Create table {} as Select * from `{}`""".format( dataset_id + '.' + Final_DataName, ProjectID + '.' + dataset_id + '.' + Fnl_DtaNme_Bth) #args.dataset_id + '.' + Destination_Table
client = bigquery.Client()
query_job = client.query(fnl_data)
time.sleep(10)
#########Here we are DROPING Mater Data with BATCH_ID ############ #
drop_table_old = """
Drop Table `{}`
""".format(ProjectID + '.' + dataset_id + '.' + Fnl_DtaNme_Bth)
client = bigquery.Client()
query_job = client.query(drop_table_old)
Как вы можете видеть из кода, я делаю следующее:
- создаем таблицу с идентификатором пакета
- удаляем старую таблицу. (он выполняется первым, останавливая все дальнейшие шаги.)
-создание новой таблицы без идентификатора пакета
-падение таблицы с шага 1.