导入指标视图并查看诊断信息
本教程演示如何使用 C# Script 将指标视图导入表格模型,以及如何查看导入过程中输出的诊断信息。
先决条件
导入之前,你必须先在 Tabular Editor 中打开一个表格模型。 可以是:
- 一个新的空模型
- 一个现有模型,你希望使用指标视图中的对象对其进行扩展
导入方法
有两种导入方法:
| 方法 | 说明 |
|---|---|
ImportToTabularFromFile |
从指定文件路径加载,并一步完成导入 |
ImportToTabular |
导入当前已加载的指标视图 |
两种方法都需要:
- 目标 Tabular
Model - Databricks 主机名(用于 M 分区表达式)
- Databricks HTTP 路径(用于 M 分区表达式)
从文件导入
使用 ImportToTabularFromFile 一次完成加载和导入:
var success = SemanticBridge.MetricView.ImportToTabularFromFile(
"C:/MetricViews/sales-metrics.yaml",
Model,
"your-workspace.azuredatabricks.net",
"/sql/1.0/warehouses/abc123def456",
out var diagnostics
);
var sb = new System.Text.StringBuilder();
if (success)
{
sb.AppendLine("导入成功!");
sb.AppendLine($"诊断信息: {diagnostics.Count}");
}
else
{
sb.AppendLine("导入失败。");
sb.AppendLine($"错误: {diagnostics.Count}");
}
Output(sb.ToString());
导入已加载的 Metric View
如果你已经加载了 Metric View(用于检查或修改),就用 ImportToTabular:
// 先加载 Metric View
SemanticBridge.MetricView.Load("C:/MetricViews/sales-metrics.yaml");
// 可选:检查或修改
var view = SemanticBridge.MetricView.Model;
var sb = new System.Text.StringBuilder();
sb.AppendLine($"正在导入包含 {view.Dimensions.Count} 个维度和 {view.Measures.Count} 个度量值的 Metric View");
// 导入到 Tabular
var success = SemanticBridge.MetricView.ImportToTabular(
Model,
"your-workspace.azuredatabricks.net",
"/sql/1.0/warehouses/abc123def456",
out var diagnostics
);
if (success)
{
sb.AppendLine("导入成功!");
}
else
{
sb.AppendLine("导入失败。");
}
Output(sb.ToString());
使用占位符连接值
如果你在没有真实 Databricks 连接的情况下测试翻译,可以使用占位符值:
var success = SemanticBridge.MetricView.ImportToTabularFromFile(
"C:/MetricViews/sales-metrics.yaml",
Model,
"placeholder-host",
"placeholder-path",
out var diagnostics
);
var sb = new System.Text.StringBuilder();
sb.AppendLine("导入完成(使用占位符连接值)");
sb.AppendLine("注意:请在刷新数据之前更新 M 分区表达式。");
Output(sb.ToString());
导入后查看诊断信息
你可以随时通过 ImportDiagnostics 访问上一次导入的诊断信息。
此示例假定你之前已经运行过一次导入,可以通过 GUI 或 C# Script 进行。
var diagnostics = SemanticBridge.MetricView.ImportDiagnostics;
var sb = new System.Text.StringBuilder();
sb.AppendLine("上次导入诊断信息");
sb.AppendLine("-----------------------");
sb.AppendLine("");
sb.AppendLine($"问题总数: {diagnostics.Count}");
sb.AppendLine("");
foreach (var diag in diagnostics)
{
sb.AppendLine($"[{diag.Severity}] {diag.Message}");
}
Output(sb.ToString());
直接输出诊断信息
为了快速查看,你可以直接输出诊断信息集合:
// 输出上一次导入的全部诊断信息
SemanticBridge.MetricView.ImportDiagnostics.Output();
完整工作流示例
加载、验证并导入,并输出完整的诊断报告:
var sb = new System.Text.StringBuilder();
// 加载 Metric View
SemanticBridge.MetricView.Load("C:/MetricViews/sales-metrics.yaml");
var view = SemanticBridge.MetricView.Model;
sb.AppendLine("Metric View 概览");
sb.AppendLine("-------------------");
sb.AppendLine($"来源: {view.Source}");
sb.AppendLine($"连接数: {view.Joins?.Count ?? 0}");
sb.AppendLine($"维度数: {view.Dimensions.Count}");
sb.AppendLine($"度量值数: {view.Measures.Count}");
sb.AppendLine("");
// 先验证
var validationDiags = SemanticBridge.MetricView.Validate().ToList();
sb.AppendLine("验证");
sb.AppendLine("----------");
sb.AppendLine($"问题数: {validationDiags.Count}");
sb.AppendLine("");
// 导入
var success = SemanticBridge.MetricView.ImportToTabular(
Model,
"your-workspace.azuredatabricks.net",
"/sql/1.0/warehouses/abc123def456",
out var importDiags
);
sb.AppendLine("导入结果");
sb.AppendLine("-------------");
sb.AppendLine($"是否成功: {success}");
sb.AppendLine($"诊断信息: {importDiags.Count}");
sb.AppendLine("");
if (importDiags.Count > 0)
{
sb.AppendLine("导入问题:");
foreach (var diag in importDiags)
{
sb.AppendLine($" [{diag.Severity}] {diag.Message}");
}
}
Output(sb.ToString());