in data_validation/validation_builder.py [0:0]
def add_calc(self, calc_field: dict):
"""Add CalculatedField to Queries
Args:
calc_field (Dict): An object with source, target, and cast info
"""
# Prepare source and target payloads
source_config = deepcopy(calc_field)
source_fields = calc_field[consts.CONFIG_CALCULATED_SOURCE_COLUMNS]
target_config = deepcopy(calc_field)
target_fields = calc_field[consts.CONFIG_CALCULATED_TARGET_COLUMNS]
# Grab calc field metadata
alias = calc_field[consts.CONFIG_FIELD_ALIAS]
source_calc_type = self._get_calc_type(
calc_field,
source_fields[0],
self.source_client,
self.config_manager.get_source_raw_data_types(),
)
target_calc_type = self._get_calc_type(
calc_field,
target_fields[0],
self.target_client,
self.config_manager.get_target_raw_data_types(),
)
source_field = getattr(CalculatedField, source_calc_type)(
config=source_config, fields=source_fields
)
target_field = getattr(CalculatedField, target_calc_type)(
config=target_config, fields=target_fields
)
self.source_builder.add_calculated_field(source_field)
self.target_builder.add_calculated_field(target_field)
# Register calc field under alias
self.calculated_aliases[alias] = calc_field