PROBLEMA: Para los cubos realizados con el model_manager 903, todos los indicadores calculados construidos con el model manager no reflejan correctamente las dimensiones que fueron añadidas al cubo posteriormente a la creación del indicador calculado.
SOLUCION: El SCRIPT que se proporciona a continuación corrige el valor del campo dimensiones en la tabla SI_INDICADOR, solo se corrigen los cubos hechos con el modelo manager y únicamente se aplica la corrección a los indicadores calculados. El script consiste en dos partes:
- Query para determinar que cubos tienen el problema
- Script para corregir la tabla SI_INDICADOR de un cubo en especifico (se debe de modificar el parámetro Cla_concepto_Cubo sustituyéndolo con el valor de cla_concepto del cubo a corregir
NOTA: Es necesario grabar el cubo nuevamente una vez realizada la corrección para que la definición se mande correctamente a los servidores de BITAM CLOUD.
ADVERTENCIA: Solo es valido para los cubos hechos con el model manager 903
# FIX: Corrige campo DIMENSIONES de SI_INDICADOR # Marzo 2021 # bitam.com #Parte 1 #Determina cuales son los cubos que tienen el problema SELECT* FROM ( SELECT a.cla_concepto AS ID_INTERNO, nom_concepto AS Cubo, COUNT(*) AS NumDimensionesTotales FROM si_concepto a JOIN si_cpto_llave b ON b.cla_concepto=a.cla_concepto GROUP BY a.cla_concepto, nom_concepto ) Query1 JOIN ( SELECT a.cla_concepto AS ID_INTERNO, nom_concepto AS Cubo, MIN(LENGTH(DIMENSIONES)) AS NumDimensiones FROM si_concepto a JOIN si_indicador b ON b.cla_concepto=a.cla_concepto WHERE ES_ATRIBUTO=0 #Solo los indicadores calculados AND RI_DEFINITION=6 #Solo para los cubos creados con el ModelManager GROUP BY a.cla_concepto, nom_concepto ) Query2 ON Query2.ID_INTERNO=Query1.ID_INTERNO WHERE NumDimensionesTotales<>NumDimensiones ; #Parte 2 #========================================================= SET @CUBO = Cla_concepto_Cubo; #cla_concepto que corresponde al que se le hará la corrección SET @CantidadRegistros = 0; #Se obtiene la cantidad de dimensiones que tiene el cubo SELECT COUNT(*) AS TotalCubo INTO @CantidadRegistros FROM SI_CPTO_LLAVE WHERE CLA_CONCEPTO=@CUBO ; #Se genera el string correcto que debe de llevar el campo dimensiones SELECT LPAD('',@CantidadRegistros,'1') INTO @Cadena ; SELECT @CantidadRegistros,@Cadena ; #Se actualiza el cubo #NOTA: Es necesario grabar el cubo para que el proceso de actualización quede completo UPDATE SI_INDICADOR SET DIMENSIONES=@Cadena WHERE ES_ATRIBUTO=0 AND CLA_CONCEPTO=@CUBO AND LENGTH(DIMENSIONES)<>@CantidadRegistros ;