Table of Contents

Serializar una Metric View en formato YAML

Este procedimiento explica cómo volver a serializar una Metric View al formato YAML, ya sea como una cadena o guardándola en un archivo.

Note

Estas guías están pensadas para 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");

Serializar como cadena

Use Serialize() para obtener la representación en YAML. Esto simplemente vuelve a serializar el YAML que cargó anteriormente.

var yaml = SemanticBridge.MetricView.Serialize();

var sb = new System.Text.StringBuilder();
sb.AppendLine("YAML output:");
sb.AppendLine("------------");
sb.AppendLine(yaml);
Output(sb.ToString());

Salida

YAML output:
------------
version: 1.1
source: sales.fact.orders
joins:
- name: product
  source: sales.dim.product
  on: source.product_id = product.product_id
  cardinality: many_to_one
- name: customer
  source: sales.dim.customer
  on: source.customer_id = customer.customer_id
  cardinality: many_to_one
- name: date
  source: sales.dim.date
  on: source.order_date = date.date_key
  cardinality: many_to_one
fields:
- name: product_name
  expr: product.product_name
- name: product_category
  expr: product.category
  display_name: 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)
  display_name: Total Revenue
  format:
    type: currency
    decimal_places:
      type: exact
      places: 2
    currency_code: USD
- name: gross_margin
  expr: SUM(revenue) - SUM(cost)
- name: order_count
  expr: COUNT(*)
- name: avg_order_value
  expr: AVG(revenue)
- name: revenue_to_budget
  expr: (SUM(revenue) - SUM(budget)) / SUM(budget)
  display_name: Revenue vs Budget
  format:
    type: percentage
    decimal_places:
      type: max
      places: 1
- name: unique_customers
  expr: COUNT(DISTINCT customer_id)

Guardar en un archivo

Use Save(path) para escribir el YAML directamente en disco. Esto escribirá en disco la vista de métricas que cargó anteriormente.

var path = "C:/MetricViews/updated-sales-metrics.yaml";

SemanticBridge.MetricView.Save(path);

Output($"Metric View saved to: {path}");

Flujo de trabajo de ida y vuelta

Un flujo de trabajo habitual es cargar, modificar y guardar una Metric View:

var view = SemanticBridge.MetricView.Model;

// set a display name on a field, then serialize to confirm it round-trips
view.Fields["order_month"].DisplayName = "Order Month";

var yaml = SemanticBridge.MetricView.Serialize();

var sb = new System.Text.StringBuilder();
sb.AppendLine("Modified YAML:");
sb.AppendLine("--------------");
sb.AppendLine(yaml);
Output(sb.ToString());

Salida:

Modified YAML:
--------------
version: 1.1
source: sales.fact.orders
joins:
- name: product
  source: sales.dim.product
  on: source.product_id = product.product_id
  cardinality: many_to_one
- name: customer
  source: sales.dim.customer
  on: source.customer_id = customer.customer_id
  cardinality: many_to_one
- name: date
  source: sales.dim.date
  on: source.order_date = date.date_key
  cardinality: many_to_one
fields:
- name: product_name
  expr: product.product_name
- name: product_category
  expr: product.category
  display_name: 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
  display_name: Order Month
measures:
- name: total_revenue
  expr: SUM(revenue)
  display_name: Total Revenue
  format:
    type: currency
    decimal_places:
      type: exact
      places: 2
    currency_code: USD
- name: gross_margin
  expr: SUM(revenue) - SUM(cost)
- name: order_count
  expr: COUNT(*)
- name: avg_order_value
  expr: AVG(revenue)
- name: revenue_to_budget
  expr: (SUM(revenue) - SUM(budget)) / SUM(budget)
  display_name: Revenue vs Budget
  format:
    type: percentage
    decimal_places:
      type: max
      places: 1
- name: unique_customers
  expr: COUNT(DISTINCT customer_id)

Pasos a seguir

Ver también