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.

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:

Ver también