Cargar e inspeccionar una Metric View
Esta guía práctica muestra cómo cargar una Metric View de Databricks en Tabular Editor y explorar su estructura mediante C# Scripts. Esta es la habilidad fundamental para todas las demás operaciones con una Metric View.
Note
Estas guías prácticas están orientadas 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 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");
Acceder a la Metric View cargada
Después de cargarla, la Metric View está disponible en cualquier script en SemanticBridge.MetricView.Model.
Esto devuelve un objeto View, que es la raíz del grafo de objetos de Metric View.
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine($"Version: {view.Version}");
sb.AppendLine($"Source (fact table): {view.Source}");
Output(sb.ToString());
Salida
Version: 1.1
Source (fact table): sales.fact.orders
Inspeccionar las uniones de la Metric View (tablas de dimensiones)
La propiedad Joins de la Metric View contiene las tablas de dimensiones unidas a la tabla de hechos.
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine($"Number of joins: {view.Joins.Count}");
sb.AppendLine("");
foreach (var join in view.Joins)
{
sb.AppendLine($"Join: {join.Name}");
sb.AppendLine($" Source: {join.Source}");
sb.AppendLine($" On: {join.On}");
sb.AppendLine($" Cardinality: {join.Cardinality?.ToString() ?? "ManyToOne (default)"}");
sb.AppendLine("");
}
Output(sb.ToString());
Salida:
Number of joins: 3
Join: product
Source: sales.dim.product
On: source.product_id = product.product_id
Cardinality: ManyToOne
Join: customer
Source: sales.dim.customer
On: source.customer_id = customer.customer_id
Cardinality: ManyToOne
Join: date
Source: sales.dim.date
On: source.order_date = date.date_key
Cardinality: ManyToOne
Inspeccionar los campos de la vista de métricas
La propiedad Fields de la vista de métricas contiene todas las definiciones de campos.
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine($"Number of fields: {view.Fields.Count}");
sb.AppendLine("");
foreach (var field in view.Fields)
{
sb.AppendLine($"{field.Name,-20} <- {field.Expr}");
}
Output(sb.ToString());
Salida:
Number of fields: 6
product_name <- product.product_name
product_category <- product.category
customer_segment <- customer.segment
order_date <- date.full_date
order_year <- date.year
order_month <- date.month_name
Inspeccionar las medidas de la Metric View
La propiedad Measures de la Metric View contiene todas las definiciones de medidas, junto con sus expresiones de agregación.
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine($"Number of measures: {view.Measures.Count}");
sb.AppendLine("");
foreach (var measure in view.Measures)
{
sb.AppendLine($"{measure.Name,-20} = {measure.Expr}");
}
Output(sb.ToString());
Salida:
Number of measures: 6
total_revenue = SUM(revenue)
gross_margin = SUM(revenue) - SUM(cost)
order_count = COUNT(*)
avg_order_value = AVG(revenue)
revenue_to_budget = (SUM(revenue) - SUM(budget)) / SUM(budget)
unique_customers = COUNT(DISTINCT customer_id)
Generar un resumen completo
Aquí tienes un script completo que genera un resumen con formato de la Metric View completa.
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine("METRIC VIEW SUMMARY");
sb.AppendLine("===================");
sb.AppendLine("");
sb.AppendLine($"Version: {view.Version}");
sb.AppendLine($"Fact Source: {view.Source}");
sb.AppendLine("");
// Joins
sb.AppendLine($"JOINS ({view.Joins.Count})");
sb.AppendLine("---------");
foreach (var join in view.Joins)
{
sb.AppendLine($" {join.Name,-15} -> {join.Source}");
}
sb.AppendLine("");
// Fields
sb.AppendLine($"FIELDS ({view.Fields.Count})");
sb.AppendLine("--------------");
foreach (var field in view.Fields)
{
sb.AppendLine($" {field.Name,-20} <- {field.Expr}");
}
sb.AppendLine("");
// Measures
sb.AppendLine($"MEASURES ({view.Measures.Count})");
sb.AppendLine("------------");
foreach (var measure in view.Measures)
{
sb.AppendLine($" {measure.Name,-20} = {measure.Expr}");
}
Output(sb.ToString());
Salida
METRIC VIEW SUMMARY
===================
Version: 1.1
Fact Source: sales.fact.orders
JOINS (3)
---------
product -> sales.dim.product
customer -> sales.dim.customer
date -> sales.dim.date
FIELDS (6)
--------------
product_name <- product.product_name
product_category <- product.category
customer_segment <- customer.segment
order_date <- date.full_date
order_year <- date.year
order_month <- date.month_name
MEASURES (6)
------------
total_revenue = SUM(revenue)
gross_margin = SUM(revenue) - SUM(cost)
order_count = COUNT(*)
avg_order_value = AVG(revenue)
revenue_to_budget = (SUM(revenue) - SUM(budget)) / SUM(budget)
unique_customers = COUNT(DISTINCT customer_id)
Pasos siguientes
Ahora que puedes cargar e inspeccionar una Metric View, puedes:
- Agregar objetos a una vista de métricas
- Quitar objetos de una vista de métricas
- Cambiar el nombre de un campo
- Validar la vista de métricas
- Importar la vista de métricas a un modelo tabular