管理语义模型

在工作区中创建语义模型和模型条目,然后单独执行校验。只有校验结果表明模型有效时,才将它用于后续任务。

任务流程

  1. 调用方提供模型名称、关联表和条目定义。

  2. SDK 创建模型并返回模型资源。

  3. 使用模型资源创建条目,并返回条目资源。

  4. 使用同一个模型资源执行校验,根据结果决定是否继续使用。

准备

需要的内容

在本页中的作用

已认证的客户端和已选择的工作区

确定模型和条目的资源作用域。

模型名称和关联表

创建模型。

条目类型、引用键和定义

创建条目。

可访问的表或文件

作为模型配置所引用的数据资源。

模型名称同时是不可变的 Catalog 数据库名称。更新模型时必须继续提供原名称。

创建模型和条目

下面的函数创建一个模型和一个指标条目,再返回模型资源供后续校验使用。模型创建或条目创建成功不表示模型已经通过校验。

import moi_product_sdk as sdk


def create_sales_model(workspace):
    model, _ = workspace.create_semantic_model(
        "sales_model", sdk.with_semantic_model_tables(["orders"])
    )
    entry, _ = model.create_entry(
        sdk.SemanticEntryInput(
            "metric", "total_rows", {"expr": "COUNT(*)"}, ["orders"]
        )
    )
    return model, entry
import (
	"context"

	sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)

func createSalesModel(ctx context.Context, workspace *sdk.WorkspaceHandle) (*sdk.SemanticModelHandle, *sdk.SemanticEntryHandle, error) {
	model, _, err := workspace.CreateSemanticModel(
		ctx, "sales_model", sdk.WithSemanticModelTables([]string{"orders"}),
	)
	if err != nil {
		return nil, nil, err
	}
	entry, _, err := model.CreateEntry(ctx, sdk.SemanticEntryInput{
		Kind: "metric", Key: "total_rows", Tables: []string{"orders"},
		Spec: map[string]any{"expr": "COUNT(*)"},
	})
	if err != nil {
		return nil, nil, err
	}
	return model, entry, nil
}

示例创建一个指标条目。条目类型决定其定义的结构;提供的条目必须符合对应类型的校验规则。

校验模型

使用上一步返回的模型资源执行校验。校验结果中的有效标志是继续使用模型的依据。

validated = model.validate()
if not validated.valid:
    raise ValueError("semantic model validation failed")
validated, err := model.Validate(ctx)
if err != nil {
	return err
}
isValid := validated.GetValid()
_ = isValid

导入或导出条目

模型资源可以导出模型及其条目定义,也可以导入非空且有效的条目列表。导入后再次执行校验,以确认当前模型是否仍然有效。

结果确认

保留模型资源和条目资源,用于后续读取、更新或删除。删除仅确认删除请求的结果;需要确认最终状态时,再读取或列出相应资源。

限制

  • 条目创建和更新不代表模型已经通过校验。

  • 表、文件和字段绑定应来自已确认的工作区资源或调用方选择;不要把另一个工作区的资源标识直接用于当前模型。

  • 如果本次只为验证而创建模型和条目,先删除条目,再删除模型。

下一步

最后更新于