向 Metric View 添加对象
这篇操作指南演示如何向已加载的指标视图添加新对象并设置其属性。类似的方法也适用于所有 Metric View 集合。
Note
这些操作指南适用于 Tabular Editor 3.26.2 及更高版本。较早版本不支持此处展示的 v1.1 指标视图功能。
为这些代码示例加载示例 Metric View
开始前,请确保你已打开 Tabular Editor 3,并已打开一个表格模型;如果没有,也可以新建一个模型。
本操作指南使用一个示例电商 Metric View 来表示销售数据,其中三个维度表(product、customer、date)连接到一个事实表(orders)。使用下面任一方法来加载它(“下载并加载”或“复制并反序列化”),然后继续阅读本操作指南的其余内容。你可以在与本示例其余部分相同的 C# Script 中运行任一命令;也可以先在单独的 C# Script 中运行该命令,再在另一个 C# Script 中运行本示例的其余部分。
下载 sample-metricview.yaml
然后按路径加载:
SemanticBridge.MetricView.Load("C:/path/to/sample-metricview.yaml");
添加字段
使用 AddField 创建并返回一个新的 Field 对象,供你进一步操作。
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
sb.AppendLine($"Fields before adding: {view.Fields.Count}");
var field = view.AddField("customer_city", "customer.city");
sb.AppendLine($"Fields after adding: {view.Fields.Count}");
Output(sb.ToString());
输出
Fields before adding: 6
Fields after adding: 7
添加并配置 Join
AddJoin
与 AddField 的工作方式类似:它会构造该对象,将其添加到指标视图,并返回该对象,以便你设置更多属性。使用 JoinCardinality 枚举设置基数。
using MetricView = TabularEditor.SemanticBridge.Platforms.Databricks.MetricView;
var view = SemanticBridge.MetricView.Model;
// add a join, then set its remaining properties
var supplier = view.AddJoin("supplier", "sales.dim.supplier");
supplier.On = "source.supplier_id = supplier.supplier_id";
supplier.Cardinality = MetricView.JoinCardinality.ManyToOne;
在任何现有的 Join 上也可以调用 AddJoin 方法。你可以用它来创建嵌套联接,例如 supplier.AddJoin("region", "sales.dim.region"),
用于对雪花维度建模。
添加并配置 度量值
AddMeasure 的工作方式与其他 Add 方法类似。
某些属性,例如字段或度量值的 Format,有各自的类型,你需要构造这些类型来设置该属性。创建你需要的 Format 变体,例如 Format.Currency 或 Format.Percentage,并将其赋值。
using MetricView = TabularEditor.SemanticBridge.Platforms.Databricks.MetricView;
var sb = new System.Text.StringBuilder();
var view = SemanticBridge.MetricView.Model;
// add a new measure, then give it a currency format
var totalCost = view.AddMeasure("total_cost", "SUM(cost)");
totalCost.Format = new MetricView.Format.Currency { CurrencyCode = "USD" };
// read the format back off the measure
sb.AppendLine($"{totalCost.Name} format: {totalCost.Format}");
Output(sb.ToString());
输出
total_cost format: Currency { Type = Currency, DecimalPlaces = , HideGroupSeparator = , Abbreviation = , CurrencyCode = USD }