--- name: bi-semantic-layer-guide description: 语义层工具使用规范。在发现语义层工具可用、需要查询指标定义/维度信息、验证业务口径、处理指标歧义时,必须优先调用此技能。无语义层工具时不调用。 --- # bi-semantic-layer-guide ## 概述 语义层是统一管理业务语义元数据的服务,包括指标定义、维度定义、指标维度绑定和数据集映射。 --- ## 可用工具 语义层暴露三类工具: - **全局**:`list_domains()` - **指标查询**:`list_metrics(domain)`、`search_metrics(query, domain)`、`get_metric(name, domain)`、`get_north_star_metrics(domain)` - **维度查询**:`list_dimensions(domain)`、`get_dimension(name, domain)`、`list_dimensions_of_metric(name, domain)`、`get_dimension_hierarchy(name, domain)`、`get_dimension_values(name, domain)` - **数据集查询**:`list_datasets(domain)`、`get_dataset_columns(name, domain)`、`get_dataset(name, domain)` 具体参数和返回格式参见工具自身描述。 --- ## 查询策略 ### 指标匹配 在语义层中查找指标,可选策略: - 语义检索(`search_metrics`),语义层会自动匹配同义词 - 查看具体业务域的北极星指标列表(`get_north_star_metrics`),从中选择最相关的 - 若以上均未命中,列出该域全部指标(`list_metrics`),逐一判断和分析条目的相关性。 **`no_match` 必须拦截,不得当作空结果**:语义层返回 `no_match`(或空候选集)表示 该指标在语义层中**不存在**,与"指标存在但当前无数据"是两件不同的事。 - 禁止把 `no_match` 当作 0、空表或"该指标无数据"继续往下分析 - 禁止绕过语义层自行猜测指标口径、自行拼 SQL 计算一个同名指标 - 先按上述三条策略换用检索方式重试;仍为 `no_match` 时,明确向用户说明该指标未在 语义层定义,并请其确认口径或改用已定义的近似指标 - 报告中不得出现以 `no_match` 指标为依据的结论 ### 指标属性确认 通过 `get_metric` 获取指标属性,重点属性: - **是否是北极星指标**(`is_north_star`):用于角色分配 - **是否展示指标**(`is_display`):该指标是否应出现在展示面板中 - **是否展示分布**(`is_display_distribution`):展示指标时是否同时展示分布图 - **维度绑定**(`dimensions`):指标可拆解的维度列表,含 `is_display_dimension`、`is_contribution_dimension` 标记。 ### 维度信息获取 通过 `list_dimensions_of_metric` 获取指标可拆解的维度列表(`is_contribution_dimension=true` 的维度才可用于贡献度拆解),通过 `get_dimension_hierarchy` 获取维度间的父子层级关系。 --- ## 消歧规则 搜索指标时可能遇到歧义,按以下规则处理: - **匹配到多个指标**:优先选北极星指标(`is_north_star=true`)。若仍有多个候选,结合指标类型和标签综合判断,必要时向用户确认。 - **精确名称 vs 同义词**:若同时出现精确名称匹配和同义词匹配,精确名称优先。例如搜索"DAU",若同时命中指标名为"DAU"的指标和同义词含"DAU"的"访问用户数",取前者。 - **同名指标跨业务域**:若同一指标名出现在多个业务域中,用当前分析任务的业务域限定范围。