Table of Contents

Eliminar un objeto de una Metric View

Este procedimiento muestra cómo eliminar los campos y las medidas de Metric View. El mismo enfoque se aplica a todas las colecciones de una Metric View.

Note

Estos procedimientos se aplican a Tabular Editor 3.26.2 y versiones posteriores. Las versiones anteriores no admiten las características de Metric View v1.1 que se muestran aquí.

Carga la Metric View de ejemplo para estos fragmentos de código

Antes de empezar, asegúrate de tener Tabular Editor 3 abierto 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 uno de los métodos siguientes para cargarla ("descargar y cargar" o "copiar y deserializar"); después, sigue con el resto de esta guía. Puedes ejecutar cualquiera de los comandos en el mismo C# Script que el resto de este ejemplo, o bien ejecutarlo primero en un C# Script independiente y luego el resto del ejemplo en otro C# Script.

Descargar sample-metricview.yaml y cárgalo usando la ruta:

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

Cada script de eliminación que se muestra aquí afecta a la Metric View cargada en ese momento. Si quieres ejecutar todos estos scripts, asegúrate de ejecutar el comando Deserialize anterior antes de cada eliminación.

Eliminar por nombre

Obtén el campo de Metric View y elimínalo. Después de eliminar un objeto, no debes intentar modificarlo. Aun así, puedes leer las propiedades del objeto eliminado. Es seguro llamar a Delete() en un objeto varias veces; después de la primera, las siguientes llamadas no tienen efecto.

var view = SemanticBridge.MetricView.Model;

var sb = new System.Text.StringBuilder();
sb.AppendLine($"Fields before: {view.Fields.Count}");

var fieldToRemove = view.Fields["order_month"];
fieldToRemove.Delete();
fieldToRemove.Delete(); // note we can call Delete twice safely
sb.AppendLine($"Removed: {fieldToRemove.Name}");

sb.AppendLine($"Fields after: {view.Fields.Count}");
Output(sb.ToString());

Salida:

Fields before: 6
Removed: order_month
Fields after: 5

Observa que hay varias llamadas a Delete(), pero solo se realiza una eliminación.

Eliminar una medida

Las medidas se eliminan de la misma manera: obtén una referencia a la medida y elimínala.

var view = SemanticBridge.MetricView.Model;

var sb = new System.Text.StringBuilder();
sb.AppendLine($"Measures before: {view.Measures.Count}");

var measureToRemove = view.Measures["gross_margin"];
measureToRemove.Delete();
sb.AppendLine($"Removed: {measureToRemove.Name}");

sb.AppendLine($"Measures after: {view.Measures.Count}");
Output(sb.ToString());

Salida:

Measures before: 6
Removed: gross_margin
Measures after: 5

Eliminar varios campos de Metric View

Filtra los campos que quieras eliminar, crea una instantánea con ToList y, después, elimina cada uno. Crear primero la instantánea evita modificar la colección mientras la iteras.

var view = SemanticBridge.MetricView.Model;

var sb = new System.Text.StringBuilder();
sb.AppendLine($"Fields before: {view.Fields.Count}");

// Remove all date-related fields
string[] toRemove = ["order_date", "order_year", "order_month"];

foreach (var field in view.Fields.Where(f => toRemove.Contains(f.Name)).ToList())
{
    field.Delete();
}

sb.AppendLine($"Fields after: {view.Fields.Count}");
sb.AppendLine();
sb.AppendLine("Remaining fields:");
sb.AppendLine("-----------------");
foreach (var field in view.Fields)
{
    sb.AppendLine($"  {field.Name}");
}

Output(sb.ToString());

Salida:

Fields before: 6
Fields after: 3

Remaining fields:
-----------------
  product_name
  product_category
  customer_segment

Eliminar campos de Metric View de una tabla específica

Elimina todos los campos de Metric View que hacen referencia a la tabla de fechas.

Warning

No se garantiza que este ejemplo elimine todos y únicamente los campos de Metric View que hagan referencia a un Metric View Join determinado. Los campos de Metric View pueden incluir expresiones SQL casi arbitrarias y también pueden hacer referencia a campos de Metric View definidos anteriormente. Este ejemplo es solo con fines ilustrativos.

var view = SemanticBridge.MetricView.Model;

var sb = new System.Text.StringBuilder();
sb.AppendLine($"Fields before: {view.Fields.Count}");

foreach (var field in view.Fields.Where(f => f.Expr.StartsWith("date.")).ToList())
{
    field.Delete();
    sb.AppendLine($"Removed: {field.Name} ({field.Expr})");
}

sb.AppendLine($"Fields after: {view.Fields.Count}");
Output(sb.ToString());

Salida:

Fields before: 6
Removed: order_date (date.full_date)
Removed: order_year (date.year)
Removed: order_month (date.month_name)
Fields after: 3

Siguientes pasos

Ver también