Table of Contents

加载并检查指标视图

本操作指南演示如何将 Databricks Metric View 加载到 Tabular Editor 中,并使用 C# Script 探索其结构。 这是进行其他所有 Metric View 操作的基础。

示例 Metric View

本操作指南使用一个示例电商 Metric View 来展示销售数据:三张维度表(产品、客户、日期)与一张事实表(订单)进行联接。

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
度量值:
  - 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)

从文件加载 Metric View

使用 SemanticBridge.MetricView.Load 从磁盘上的 YAML 文件加载 Metric View。

// 从文件路径加载
SemanticBridge.MetricView.Load("C:/MetricViews/sales-metrics.yaml");

// 确认已加载
Output($"已加载的 Metric View 版本:{SemanticBridge.MetricView.Model.Version}");

对这些代码示例的 Metric View 进行反序列化

本操作指南使用一个示例电商 Metric View 来表示销售数据,其中三个维度表(product、customer、date)连接到一个事实表(orders)。 如果你想在阅读本操作指南其余部分时跟着代码一起操作,请先运行下面的代码片段

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)
    """);

访问已加载的 Metric View

加载完成后,可在任何脚本中通过 SemanticBridge.MetricView.Model 访问该 Metric View。 这会返回一个 Metric View 的 View 对象,它是 Metric View 对象图 的根节点。

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

sb.AppendLine($"版本:{view.Version}");
sb.AppendLine($"来源(事实表):{view.Source}");
Output(sb.ToString());

检查 Metric View 的连接(维度表)

Metric View 的 Joins 属性包含与事实表连接的维度表。

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

sb.AppendLine($"连接数量: {view.Joins?.Count ?? 0}");
sb.AppendLine("");

foreach (var join in view.Joins ?? [])
{
    sb.AppendLine($"连接: {join.Name}");
    sb.AppendLine($"  来源: {join.Source}");
    sb.AppendLine($"  条件: {join.On}");
    sb.AppendLine("");
}

Output(sb.ToString());

输出:

联接数量: 3

联接: product
  来源: sales.dim.product
  On: product_id = product.product_id

联接: customer
  来源: sales.dim.customer
  On: customer_id = customer.customer_id

联接: date
  来源: sales.dim.date
  On: order_date = date.date_key

查看 Metric View 维度(字段)

Metric View 的 Dimensions 属性包含所有字段定义。

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

sb.AppendLine($"维度数量: {view.Dimensions?.Count ?? 0}");
sb.AppendLine("");

foreach (var dim in view.Dimensions ?? [])
{
    sb.AppendLine($"{dim.Name,-20} <- {dim.Expr}");
}

Output(sb.ToString());

输出:

维度数量: 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

查看 Metric View 度量值

Metric View 的 Measures 属性包含所有 Metric View 度量值定义及其聚合表达式。

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

sb.AppendLine($"度量值数量: {view.Measures?.Count ?? 0}");
sb.AppendLine("");

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

Output(sb.ToString());

输出:

度量值数量: 4

total_revenue        = SUM(revenue)
order_count          = COUNT(order_id)
avg_order_value      = AVG(revenue)
unique_customers     = COUNT(DISTINCT customer_id)

生成完整摘要

下面是一段完整脚本,用于输出整个 Metric View 的格式化摘要。

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

sb.AppendLine("METRIC VIEW 摘要");
sb.AppendLine("===================");
sb.AppendLine("");
sb.AppendLine($"版本: {view.Version}");
sb.AppendLine($"事实数据源: {view.Source}");
sb.AppendLine("");

// Joins
sb.AppendLine($"连接 ({view.Joins?.Count ?? 0})");
sb.AppendLine("---------");
foreach (var join in view.Joins ?? [])
{
    sb.AppendLine($"  {join.Name,-15} -> {join.Source}");
}
sb.AppendLine("");

// Dimensions
sb.AppendLine($"维度 ({view.Dimensions?.Count ?? 0})");
sb.AppendLine("--------------");
foreach (var dim in view.Dimensions ?? [])
{
    sb.AppendLine($"  {dim.Name,-20} <- {dim.Expr}");
}
sb.AppendLine("");

// Measures
sb.AppendLine($"度量值 ({view.Measures?.Count ?? 0})");
sb.AppendLine("------------");
foreach (var measure in view.Measures ?? [])
{
    sb.AppendLine($"  {measure.Name,-20} = {measure.Expr}");
}

Output(sb.ToString());

后续步骤

现在你已经能够加载并检查 Metric View 了,你还可以:

另见