Table of Contents

Validar una vista de métricas con las reglas predeterminadas

Esta guía muestra cómo validar una vista de métricas cargada con las reglas de validación integradas e interpretar los mensajes de diagnóstico.

Note

Estas guías están dirigidas a Tabular Editor 3.26.2 y versiones posteriores. Las versiones anteriores no admiten las características de la vista de métricas v1.1 que se muestran aquí.

Carga la Metric View de ejemplo para estas muestras de código

Antes de empezar, asegúrate de tener abierto Tabular Editor 3 y de haber abierto un modelo tabular, o crea uno nuevo.

Este tutorial paso a paso utiliza una Vista de Métricas de comercio electrónico de ejemplo que representa datos de ventas, con tres tablas de dimensiones (producto, cliente y fecha) unidas a una tabla de hechos (pedidos). Usa cualquiera de los métodos siguientes para cargarla («Descargar y cargar» o «Copiar y deserializar»), y luego sigue con el resto de esta guía paso a paso. Puedes ejecutar cualquiera de los dos comandos en el mismo C# Script que el resto de este ejemplo, o puedes ejecutarlo primero en su propio C# Script y el resto del ejemplo en otro C# Script.

Descarga sample-metricview.yaml y cárgalo indicando la ruta:

SemanticBridge.MetricView.Load("C:/path/to/sample-metricview.yaml");

Reglas de validación predeterminadas

El Semantic Bridge incluye reglas integradas que validan la definición de una vista de métricas según las reglas establecidas en la documentación de Metric View. Estas reglas se ejecutan automáticamente durante la deserialización, ya sea llamando directamente a Deserialize o mediante cualquier método que lea una vista de métricas, como Load o ImportToTabularFromFile. Los diagnósticos de esas ejecuciones automáticas siguen estando disponibles después, a través de SemanticBridge.MetricView.ImportDiagnostics. También puedes ejecutar estas reglas a demanda sobre la vista de métricas cargada, que es lo que se describe en este documento.

Ejecutar la validación con las reglas predeterminadas

Ejecuta SemanticBridge.MetricView.Validate(); sin argumentos para aplicar las reglas integradas a la vista de métricas cargada.

var diagnostics = SemanticBridge.MetricView.Validate().ToList();

Output($"Validación completada: se encontraron {diagnostics.Count} problema(s)");

Salida

Validación completada: se han encontrado 0 problema(s)

La vista de métricas de ejemplo es válida, por lo que el Report no indica ningún problema.

Interpreta los mensajes de diagnóstico

Cada mensaje de diagnóstico contiene:

  • Gravedad: Error, Advertencia o Información
  • Mensaje: Descripción del problema
  • Ruta: Ubicación del objeto en la jerarquía de Metric View
var diagnostics = SemanticBridge.MetricView.Validate().ToList();

var sb = new System.Text.StringBuilder();
sb.AppendLine("RESULTADOS DE LA VALIDACIÓN");
sb.AppendLine("------------------");
sb.AppendLine("");

if (diagnostics.Count == 0)
{
    sb.AppendLine("No se encontraron problemas.");
}
else
{
    foreach (var diag in diagnostics)
    {
        sb.AppendLine($"[{diag.Severity}] {diag.Message}");
        sb.AppendLine($"  Ruta: {diag.Path}");
        sb.AppendLine("");
    }
}

Output(sb.ToString());

Salida

RESULTADOS DE LA VALIDACIÓN
------------------

No se encontraron problemas.

Ejemplo con un error de validación

La validación siempre se ejecuta sobre la vista de métricas cargada en ese momento, por lo que puedes introducir una infracción en un script y ver cómo se detecta. Aquí vaciamos la expresión de un campo para desencadenar FieldExprRequired:

var view = SemanticBridge.MetricView.Model;
view.Fields["order_year"].Expr = "";

var diagnostics = SemanticBridge.MetricView.Validate().ToList();

var sb = new System.Text.StringBuilder();
sb.AppendLine("RESULTADOS DE LA VALIDACIÓN");
sb.AppendLine("------------------");
sb.AppendLine("");

if (diagnostics.Count == 0)
{
    sb.AppendLine("No se encontraron problemas.");
}
else
{
    foreach (var diag in diagnostics)
    {
        sb.AppendLine($"[{diag.Severity}] {diag.Message}");
        sb.AppendLine($"  Ruta: {diag.Path}");
        sb.AppendLine("");
    }
}

Output(sb.ToString());

Salida:

RESULTADOS DE LA VALIDACIÓN
------------------

[Error] La expresión del campo 'order_year' no puede estar vacía
  Ruta: Model.Fields["order_year"].Expr

Filtrar diagnósticos por gravedad

Puedes filtrar los diagnósticos para centrarte solo en los errores:

using System.Linq;
using TabularEditor.SemanticBridge.Orchestration;

var diagnostics = SemanticBridge.MetricView.Validate().ToList();
var errors = diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error).ToList();

var sb = new System.Text.StringBuilder();
sb.AppendLine($"Errores: {errors.Count}");
sb.AppendLine($"Total de problemas: {diagnostics.Count}");
Output(sb.ToString());

Salida

Errores: 0
Problemas totales: 0

Siguientes pasos

Ver también