Ver/eliminar medidas con errores
Propósito del script
Si quieres ver todas las medidas con errores y tener la opción de eliminarlas del modelo, puedes guardar una copia de seguridad en un archivo .tsv de las medidas eliminadas en el directorio que selecciones (por si quieres volver a agregarlas más adelante).
Script
Ver y eliminar medidas con errores
// Este script examina el modelo y muestra todas las medidas con errores, dando la opción de quitarlas.
//
// El método .GetCachedSemantics(...) solo está disponible en TE3
using System.Windows.Forms;
// Oculta el spinbox de "Running Macro"
ScriptHelper.WaitFormVisible = false;
// Obtén todas las medidas que tienen errores
var measuresWithError = Model.AllMeasures.Where(m => m.GetCachedSemantics(ExpressionProperty.Expression).HasError).ToList();
// En versiones anteriores a Tabular Editor 3.12.0 debe usarse el método GetSemantics.
//var measuresWithError = Model.AllMeasures.Where(m => m.GetSemantics(ExpressionProperty.Expression).HasError).ToList();
// Si no hay medidas con errores, finaliza el script con un error.
if ( measuresWithError.Count == 0 )
{
Info ( "¡No hay medidas con errores! 👍" );
}
// Gestiona las medidas erróneas
else
{
// Muestra la lista de medidas con un error
measuresWithError.Output();
// En la lista, puedes seleccionar 1 o más medidas para eliminarlas
var _ToDelete = SelectObjects(measuresWithError, measuresWithError, "Selecciona las medidas que quieres eliminar.\nMás adelante podrás exportar una copia de seguridad.");
// Elimina las medidas seleccionadas
try
{
foreach ( var _m in _ToDelete )
{
_m.Delete();
}
Info (
"Se eliminaron " +
Convert.ToString(_ToDelete.Count()) +
" medidas con errores."
);
// Crea una instancia de la clase FolderBrowserDialog
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
// Establece el título del cuadro de diálogo
folderBrowserDialog.Description = "Selecciona un directorio donde guardar una copia de seguridad de las medidas eliminadas.";
// Establece la carpeta raíz del cuadro de diálogo
folderBrowserDialog.RootFolder = Environment.SpecialFolder.MyComputer;
// Muestra el cuadro de diálogo y obtiene el resultado
DialogResult result = folderBrowserDialog.ShowDialog();
// Comprueba si el usuario hizo clic en Aceptar y obtiene la ruta seleccionada
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(folderBrowserDialog.SelectedPath))
{
// Obtén la ruta de salida como una cadena
string _outputPath = folderBrowserDialog.SelectedPath;
// Obtén las propiedades de las medidas eliminadas
var _backup = ExportProperties( _ToDelete );
// Guarda una copia de seguridad de las medidas eliminadas
SaveFile( _outputPath + "/DeletedMeasures-" + Model.Name + DateTime.Today.ToString("-yyyy-MM-dd") + ".tsv", _backup);
Info (
"Se exportó una copia de seguridad de " +
Convert.ToString(_ToDelete.Count()) +
" medidas a " +
_outputPath
);
}
}
catch
// Muestra un cuadro de información si no se seleccionó ninguna medida
{
Info ( "No se seleccionó ninguna medida." );
}
}
Explicación
Este fragmento obtiene todas las medidas que tienen errores según el análisis semántico de Tabular Editor. Después, las mostrará en una ventana de salida donde podrás revisarlas manualmente o hacer cambios. A continuación, se pueden seleccionar medidas para eliminarlas. Las medidas quitadas se pueden guardar como un archivo .tsv de copia de seguridad por si quieres importarlas más adelante.
Ejemplo de salida



