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.
Metric View de ejemplo
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).
version: 0.1
source: sales.fact.orders
joins:
- name: product
source: sales.dim.product
on: source.product_id = product.product_id
- name: customer
source: sales.dim.customer
on: source.customer_id = customer.customer_id
- name: date
source: sales.dim.date
on: source.order_date = date.date_key
dimensions:
- name: product_name
expr: product.product_name
- name: product_category
expr: product.category
- name: customer_segment
expr: customer.segment
- name: order_date
expr: date.full_date
- name: order_year
expr: date.year
- name: order_month
expr: date.month_name
measures:
- name: total_revenue
expr: SUM(revenue)
- name: order_count
expr: COUNT(order_id)
- name: avg_order_value
expr: AVG(revenue)
- name: unique_customers
expr: COUNT(DISTINCT customer_id)
Cargar una Metric View desde un archivo
Use SemanticBridge.MetricView.Load para cargar una Metric View desde un archivo YAML almacenado en el disco.
// Load from a file path
SemanticBridge.MetricView.Load("C:/MetricViews/sales-metrics.yaml");
// Confirm it loaded
Output($"Loaded Metric View version: {SemanticBridge.MetricView.Model.Version}");
Deserializar Metric View para estos ejemplos de código
Esta guía paso a paso usa una Metric View de ejemplo de comercio electrónico que representa datos de ventas, con tres tablas de dimensiones (producto, cliente y fecha) unidas a una tabla de hechos (pedidos). Ejecuta primero el siguiente fragmento si quieres seguir el código en el resto de esta guía
SemanticBridge.MetricView.Deserialize("""
version: 0.1
source: sales.fact.orders
joins:
- name: product
source: sales.dim.product
on: source.product_id = product.product_id
- name: customer
source: sales.dim.customer
on: source.customer_id = customer.customer_id
- name: date
source: sales.dim.date
on: source.order_date = date.date_key
dimensions:
- name: product_name
expr: product.product_name
- name: product_category
expr: product.category
- name: customer_segment
expr: customer.segment
- name: order_date
expr: date.full_date
- name: order_year
expr: date.year
- name: order_month
expr: date.month_name
measures:
- name: total_revenue
expr: SUM(revenue)
- name: order_count
expr: COUNT(order_id)
- name: avg_order_value
expr: AVG(revenue)
- name: unique_customers
expr: COUNT(DISTINCT customer_id)
""");
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());
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 joins: {view.Joins?.Count ?? 0}");
sb.AppendLine("");
foreach (var join in view.Joins ?? [])
{
sb.AppendLine($"Join: {join.Name}");
sb.AppendLine($" Origen: {join.Source}");
sb.AppendLine($" On: {join.On}");
sb.AppendLine("");
}
Output(sb.ToString());
Salida:
Número de joins: 3
Join: product
Origen: sales.dim.product
On: product_id = product.product_id
Join: customer
Origen: sales.dim.customer
On: customer_id = customer.customer_id
Join: date
Origen: sales.dim.date
On: order_date = date.date_key
Inspeccionar las dimensiones (campos) de la Metric View
La propiedad Dimensions de la Metric View contiene todas las definiciones de campos.
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine($"Número de dimensiones: {view.Dimensions?.Count ?? 0}");
sb.AppendLine("");
foreach (var dim in view.Dimensions ?? [])
{
sb.AppendLine($"{dim.Name,-20} <- {dim.Expr}");
}
Output(sb.ToString());
Salida:
Número de dimensiones: 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 ?? 0}");
sb.AppendLine("");
foreach (var measure in view.Measures ?? [])
{
sb.AppendLine($"{measure.Name,-20} = {measure.Expr}");
}
Output(sb.ToString());
Salida:
Número de medidas: 4
total_revenue = SUM(revenue)
order_count = COUNT(order_id)
avg_order_value = AVG(revenue)
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 LA METRIC VIEW");
sb.AppendLine("=========================");
sb.AppendLine("");
sb.AppendLine($"Versión: {view.Version}");
sb.AppendLine($"Fuente de hechos: {view.Source}");
sb.AppendLine("");
// Joins
sb.AppendLine($"JOINS ({view.Joins?.Count ?? 0})");
sb.AppendLine("---------");
foreach (var join in view.Joins ?? [])
{
sb.AppendLine($" {join.Name,-15} -> {join.Source}");
}
sb.AppendLine("");
// Dimensions
sb.AppendLine($"DIMENSIONES ({view.Dimensions?.Count ?? 0})");
sb.AppendLine("--------------");
foreach (var dim in view.Dimensions ?? [])
{
sb.AppendLine($" {dim.Name,-20} <- {dim.Expr}");
}
sb.AppendLine("");
// Measures
sb.AppendLine($"MEDIDAS ({view.Measures?.Count ?? 0})");
sb.AppendLine("------------");
foreach (var measure in view.Measures ?? [])
{
sb.AppendLine($" {measure.Name,-20} = {measure.Expr}");
}
Output(sb.ToString());
Pasos siguientes
Ahora que puedes cargar e inspeccionar una Metric View, puedes:
- Validar la Metric View para detectar problemas
- Importar la Metric View a Tabular para crear tablas, columnas y medidas