Table of Contents

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 están dirigidas 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 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");

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

Versión: 1.1
Fuente (tabla de hechos): 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($"Número de uniones: {view.Joins.Count}");
sb.AppendLine("");

foreach (var join in view.Joins)
{
    sb.AppendLine($"Unión: {join.Name}");
    sb.AppendLine($"  Fuente: {join.Source}");
    sb.AppendLine($"  Condición: {join.On}");
    sb.AppendLine($"  Cardinalidad: {join.Cardinality?.ToString() ?? "ManyToOne (predeterminado)"}");
    sb.AppendLine("");
}

Output(sb.ToString());

Salida:

Número de uniones: 3

Unión: product
  Fuente: sales.dim.product
  Condición: source.product_id = product.product_id
  Cardinalidad: ManyToOne

Unión: customer
  Fuente: sales.dim.customer
  Condición: source.customer_id = customer.customer_id
  Cardinalidad: ManyToOne

Unión: date
  Fuente: sales.dim.date
  Condición: source.order_date = date.date_key
  Cardinalidad: ManyToOne

Inspeccionar los campos de Metric View

La propiedad Fields de Metric View contiene todas las definiciones de campos.

var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;

sb.AppendLine($"Número de campos: {view.Fields.Count}");
sb.AppendLine("");

foreach (var field in view.Fields)
{
    sb.AppendLine($"{field.Name,-20} <- {field.Expr}");
}

Output(sb.ToString());

Salida:

Número de campos: 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($"Número de medidas: {view.Measures.Count}");
sb.AppendLine("");

foreach (var measure in view.Measures)
{
    sb.AppendLine($"{measure.Name,-20} = {measure.Expr}");
}

Output(sb.ToString());

Salida:

Número de medidas: 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("RESUMEN DE METRIC VIEW");
sb.AppendLine("======================");
sb.AppendLine("");
sb.AppendLine($"Versión: {view.Version}");
sb.AppendLine($"Fuente de hechos: {view.Source}");
sb.AppendLine("");

// Uniones
sb.AppendLine($"UNIONES ({view.Joins.Count})");
sb.AppendLine("---------");
foreach (var join in view.Joins)
{
    sb.AppendLine($"  {join.Name,-15} -> {join.Source}");
}
sb.AppendLine("");

// Campos
sb.AppendLine($"CAMPOS ({view.Fields.Count})");
sb.AppendLine("--------------");
foreach (var field in view.Fields)
{
    sb.AppendLine($"  {field.Name,-20} <- {field.Expr}");
}
sb.AppendLine("");

// Medidas
sb.AppendLine($"MEDIDAS ({view.Measures.Count})");
sb.AppendLine("------------");
foreach (var measure in view.Measures)
{
    sb.AppendLine($"  {measure.Name,-20} = {measure.Expr}");
}

Output(sb.ToString());

Salida

RESUMEN DE METRIC VIEW
======================

Versión: 1.1
Fuente de hechos: sales.fact.orders

UNIONES (3)
---------
  product         -> sales.dim.product
  customer        -> sales.dim.customer
  date            -> sales.dim.date

CAMPOS (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

MEDIDAS (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:

Ver también