in data_validation/config_manager.py [0:0]
def build_column_configs(self, columns):
"""Return list of column config objects."""
column_configs = []
source_table = self.get_source_ibis_calculated_table()
target_table = self.get_target_ibis_calculated_table()
casefold_source_columns = {x.casefold(): str(x) for x in source_table.columns}
casefold_target_columns = {x.casefold(): str(x) for x in target_table.columns}
for column in columns:
if column.casefold() not in casefold_source_columns:
raise ValueError(f"Column DNE in source: {column}")
if column.casefold() not in casefold_target_columns:
raise ValueError(f"Column DNE in target: {column}")
source_ibis_type = source_table[
casefold_source_columns[column.casefold()]
].type()
target_ibis_type = target_table[
casefold_target_columns[column.casefold()]
].type()
cast_type = self._key_column_needs_casting_to_string(
source_ibis_type, target_ibis_type
)
column_config = {
consts.CONFIG_SOURCE_COLUMN: casefold_source_columns[column.casefold()],
consts.CONFIG_TARGET_COLUMN: casefold_target_columns[column.casefold()],
consts.CONFIG_FIELD_ALIAS: column,
consts.CONFIG_CAST: cast_type,
}
column_configs.append(column_config)
return column_configs