Untitled

 avatar
unknown
plain_text
2 months ago
1.7 kB
3
Indexable
def map_mdx_parameters(self, mdx_parameters):
    """
    Maps input mdx params' values with params' keys from mdx formatting.
    Ex: {AsOfDate: 2022-09-30} --> {data: 2022-09-30}
    """
    if len(mdx_parameters) < len(self.parameters_to_fill):
        logger.error('MDX query %s expects parameters: %s; but only these were received: %s',
                     self.mdx_query_name, self.parameters_to_fill, mdx_parameters)
        raise KeyError

    for param in self.parameters_to_fill:
        try:
            # Limpia saltos de línea y espacios de la clave de DICT_CAMPOS_MDX[param]
            clean_key = DICT_CAMPOS_MDX[param].strip().replace("\n", "").replace(" ", "")
            
            # Limpia las claves en mdx_parameters para asegurar coincidencias
            clean_mdx_parameters = {k.strip().replace("\n", "").replace(" ", ""): v for k, v in mdx_parameters.items()}
            
            # Busca la clave limpia en los parámetros
            if clean_key in clean_mdx_parameters:
                self.parameter_map[param] = clean_mdx_parameters[clean_key]
            else:
                logger.error(f"Clave limpia '{clean_key}' no encontrada en mdx_parameters.")
                raise KeyError(f"Clave limpia '{clean_key}' no encontrada en mdx_parameters.")
        except KeyError:
            # Maneja el caso de usar directamente el parámetro recibido
            try:
                param_clean = param.strip().replace("\n", "").replace(" ", "")
                self.parameter_map[param] = mdx_parameters[param_clean]
            except KeyError:
                logger.error(f"Clave '{param}' no encontrada en mdx_parameters (ni limpia ni original).")
                raise
Leave a Comment