From b8530141cb6b9e940075426f65944011d5bac3b2 Mon Sep 17 00:00:00 2001 From: bn_user Date: Fri, 5 Sep 2025 12:57:43 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20dags/OSV.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dags/OSV.py | 145 +++++++++++++++++++++------------------------------- 1 file changed, 58 insertions(+), 87 deletions(-) diff --git a/dags/OSV.py b/dags/OSV.py index ec40407..313260d 100644 --- a/dags/OSV.py +++ b/dags/OSV.py @@ -71,96 +71,67 @@ def read_data_1C(**kwargs): data_from_1c = response.json() df = pd.DataFrame(data_from_1c['data']) - # engine = get_db_engine() - # table_name = 'oborotno_salbdovaya_vedomostb' + engine = get_db_engine() + table_name = 'oborotno_salbdovaya_vedomostb' - # field_mapping = { - # # Основные поля - # 'Счет': 'schet', - # 'Субконто1': 'subkonto1', - # 'Субконто2': 'subkonto2', - # # 'Субконто3': 'subkonto3', - # 'Организация': 'organizaciya', - # # 'Валюта': 'valyuta', + field_mapping = { + # Основные поля + 'Счет': 'schet', + 'Субконто1': 'subkonto1', + 'Субконто2': 'subkonto2', + 'Организация': 'organizaciya', + 'Контрагент': 'kontagent', + 'НомерДоговора': 'nomer', + 'ДатаДоговора': 'date_bedin', + 'СрокДействияДоговора': 'date_end', - # # Суммовые остатки и обороты - # # 'СуммаНачальныйОстаток': 'summa_nachalnyy_ostatok', - # # 'СуммаНачальныйОстатокДт': 'summa_nachalnyy_ostatok_dt', - # # 'СуммаНачальныйОстатокКт': 'summa_nachalnyy_ostatok_kt', - # # 'СуммаНачальныйРазвернутыйОстатокДт': 'summa_nachalnyy_razvernutyy_ostatok_dt', - # # 'СуммаНачальныйРазвернутыйОстатокКт': 'summa_nachalnyy_razvernutyy_ostatok_kt', - # 'СуммаОборот': 'summa_oborot', - # 'СуммаОборотДт': 'summa_oborot_dt', - # 'СуммаОборотКт': 'summa_oborot_kt', - # 'СуммаКонечныйОстаток': 'summa_konechnyy_ostatok', - # 'СуммаКонечныйОстатокДт': 'summa_konechnyy_ostatok_dt', - # 'СуммаКонечныйОстатокКт': 'summa_konechnyy_ostatok_kt', - # 'СуммаКонечныйРазвернутыйОстатокДт': 'summa_konechnyy_razvernutyy_ostatok_dt', - # 'СуммаКонечныйРазвернутыйОстатокКт': 'summa_konechnyy_razvernutyy_ostatok_kt' - - # # Валютные остатки и обороты - # # 'ВалютнаяСуммаНачальныйОстаток': 'valyutnaya_summa_nachalnyy_ostatok', - # # 'ВалютнаяСуммаНачальныйОстатокДт': 'valyutnaya_summa_nachalnyy_ostatok_dt', - # # 'ВалютнаяСуммаНачальныйОстатокКт': 'valyutnaya_summa_nachalnyy_ostatok_kt', - # # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокДт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_dt', - # # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокКт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_kt', - # # 'ВалютнаяСуммаОборот': 'valyutnaya_summa_oborot', - # # 'ВалютнаяСуммаОборотДт': 'valyutnaya_summa_oborot_dt', - # # 'ВалютнаяСуммаОборотКт': 'valyutnaya_summa_oborot_kt', - # # 'ВалютнаяСуммаКонечныйОстаток': 'valyutnaya_summa_konechnyy_ostatok', - # # 'ВалютнаяСуммаКонечныйОстатокДт': 'valyutnaya_summa_konechnyy_ostatok_dt', - # # 'ВалютнаяСуммаКонечныйОстатокКт': 'valyutnaya_summa_konechnyy_ostatok_kt', - # # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокДт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_dt', - # # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокКт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_kt', - - # # Количественные остатки и обороты - # # 'КоличествоНачальныйОстаток': 'kolichestvo_nachalnyy_ostatok', - # # 'КоличествоНачальныйОстатокДт': 'kolichestvo_nachalnyy_ostatok_dt', - # # 'КоличествоНачальныйОстатокКт': 'kolichestvo_nachalnyy_ostatok_kt', - # # 'КоличествоНачальныйРазвернутыйОстатокДт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_dt', - # # 'КоличествоНачальныйРазвернутыйОстатокКт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_kt', - # # 'КоличествоОборот': 'kolichestvo_oborot', - # # 'КоличествоОборотДт': 'kolichestvo_oborot_dt', - # # 'КоличествоОборотКт': 'kolichestvo_oborot_kt', - # # 'КоличествоКонечныйОстаток': 'kolichestvo_konechnyy_ostatok', - # # 'КоличествоКонечныйОстатокДт': 'kolichestvo_konechnyy_ostatok_dt', - # # 'КоличествоКонечныйОстатокКт': 'kolichestvo_konechnyy_ostatok_kt', - # # 'КоличествоКонечныйРазвернутыйОстатокДт': 'kolichestvo_konechnyy_razvernutyy_ostatok_dt', - # # 'КоличествоКонечныйРазвернутыйОстатокКт': 'kolichestvo_konechnyy_razvernutyy_ostatok_kt' - # } + # Суммовые остатки и обороты + 'СуммаОборот': 'summa_oborot', + 'СуммаОборотДт': 'summa_oborot_dt', + 'СуммаОборотКт': 'summa_oborot_kt', + 'СуммаКонечныйОстаток': 'summa_konechnyy_ostatok', + 'СуммаКонечныйОстатокДт': 'summa_konechnyy_ostatok_dt', + 'СуммаКонечныйОстатокКт': 'summa_konechnyy_ostatok_kt', + 'СуммаКонечныйРазвернутыйОстатокДт': 'summa_konechnyy_razvernutyy_ostatok_dt', + 'СуммаКонечныйРазвернутыйОстатокКт': 'summa_konechnyy_razvernutyy_ostatok_kt' + } - # df = df.rename(columns=field_mapping) - # with engine.begin() as conn: - # if not df.empty: - # conn.execute(f"CREATE TEMP TABLE temp_{table_name} AS SELECT * FROM public.{table_name} WHERE 1 = 0") - # df.to_sql( - # f'temp_{table_name}', - # con=conn, - # if_exists='append', - # index=False, - # method='multi' - # ) - # conn.execute(f"DELETE FROM public.{table_name} where get_date = CURRENT_DATE::date::timestamp") - # conn.execute(f""" - # INSERT INTO public.{table_name} - # SELECT - # schet - # , subkonto1 - # , subkonto2 - # , organizaciya - # , summa_oborot - # , summa_oborot_dt - # , summa_oborot_kt - # , summa_konechnyy_ostatok - # , summa_konechnyy_ostatok_dt - # , summa_konechnyy_ostatok_kt - # , summa_konechnyy_razvernutyy_ostatok_dt - # , summa_konechnyy_razvernutyy_ostatok_kt - # , CURRENT_DATE::date::timestamp - # FROM temp_{table_name} - # --ON CONFLICT (schet, subkonto1, subkonto2, organizaciya) - # """ - # ) + df = df.rename(columns=field_mapping) + with engine.begin() as conn: + if not df.empty: + conn.execute(f"CREATE TEMP TABLE temp_{table_name} AS SELECT * FROM public.{table_name} WHERE 1 = 0") + df.to_sql( + f'temp_{table_name}', + con=conn, + if_exists='append', + index=False, + method='multi' + ) + conn.execute(f"DELETE FROM public.{table_name} where get_date = CURRENT_DATE::date::timestamp") + conn.execute(f""" + INSERT INTO public.{table_name} + SELECT + schet + , subkonto1 + , subkonto2 + , organizaciya + , kontagent + , nomer + , date_bedin + , date_end + , summa_oborot + , summa_oborot_dt + , summa_oborot_kt + , summa_konechnyy_ostatok + , summa_konechnyy_ostatok_dt + , summa_konechnyy_ostatok_kt + , summa_konechnyy_razvernutyy_ostatok_dt + , summa_konechnyy_razvernutyy_ostatok_kt + , CURRENT_DATE::date::timestamp + FROM temp_{table_name} + --ON CONFLICT (schet, subkonto1, subkonto2, organizaciya) + """ + ) with DAG( dag_id='data_download_from_1C_source',