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)