Untitled
unknown
plain_text
2 years ago
2.2 kB
8
Indexable
""" Check if script selects from sandbox(_analysts) schema """ import logging import re from scripts.validator.linters.dwh.common_dwh_linter_factory import common_dwh_linter_factory from simple_ddl_parser import DDLParser path = "../../../../../dwh/dm/cms_chat_message" def sandbox_check(files: dict): yml_pars = files["specification"] yml_table_name = yml_pars.get('table-name', "") logging.info(f"Наименование таблицы - {yml_table_name}") colum_index = 0 errors = [] for yml_column_t in yml_pars['structure'][0]['column-name']: yml_column = yml_pars['structure'][colum_index]['column-name'] yml_type = str.upper(yml_pars['structure'][colum_index]['data-type']).split('(')[0] logging.info(f" {colum_index} Колонка - {yml_column}") logging.info(f" {colum_index} Тип - {yml_type}") check_colum_name = { 'BOOL': [r'^is_'], 'TIME': [r'time$'], 'UUID': [r'uuid$'], 'VARCHAR': [r'_nm$', r'_txt$', r'_hash$', r'_list$', r'_code$'], 'NUMERIC': [r'_amt$', r'_num$', r'_cnt$', r'_pct$', r'_rate$'], 'FLOAT': [r'_amt$', r'_num$', r'_cnt$', r'_pct$', r'_rate$'], 'TIMESTAMP': [r'_dttm$', r'_dt$'], 'DATA': [r'_dttm$', r'_dt$', r'date$'] } if check_colum_name.get(yml_type, False): correct = False for check in check_colum_name[yml_type]: if bool(re.search(check, yml_column, re.IGNORECASE)): correct = True break if not correct: logging.error(f"Для типа:{yml_type} поле:{yml_column}, не соответсвует правилам наименования") colum_index += 1 if errors: for error in errors: logging.error(error) return False return True common_check = common_dwh_linter_factory([sandbox_check]) common_check.set_path(path) common_check.local_test()
Editor is loading...
Leave a Comment