У меня есть файл конфигурации yaml, который выглядит следующим образом:
---
tables:
- table: my_table
db: my_user
checks:
- type: my_check
column: [col1, col2, col3, col4, col5]
Я читаю этот файл конфигурации и запускаю проверки на основе раздела check в yaml.
скажем, у меня есть класс, который выглядит следующим образом:
class MasterCheck(object):
def my_check(self, over_view_table, columns, label):
if columns is None:
null_check = set(over_view_table[(over_view_table['null_share'] > 0) | (
over_view_table['empty_string_share'] > 0)].column_)
else:
null_check = set(over_view_table[(over_view_table['null_share'] > 0) | (
over_view_table['empty_string_share'] > 0)].column_).intersection(set(columns))
if len(null_check) > 0:
self.alert = '{0}: NULLs in {1}'.format(label, null_check)
else:
self.alert = ""
Я могу выполнить эту проверку, используя следующий метод:
my_check = checks['type'][0]['type']
getattr(MasterCheck(), my_check)(table_summary, column, table)
Идея это запускать проверки автоматически на основе того, что указано в файле конфигурации. Однако может быть несколько проверок, предоставленных из файла конфигурации для каждой таблицы, и я не знаю заранее, является ли строка в файле конфигурации атрибутом класса. Есть ли какой-либо рекомендуемый способ, где я могу создать свои проверки из файла конфигурации, не зная, к какому классу относится этот атрибут. Любые идеи на этот счет будут полезны.