# 核心数据指标模块 ## 简介 核心数据指标模块(`app.core.data_metric`)包含与数据指标相关的所有核心业务逻辑,负责实现数据指标的管理、查询、图谱生成等功能的核心算法和数据处理逻辑。该模块不直接处理HTTP请求,而是由API层调用,实现业务与接口的分离。 ## 主要功能 1. **数据指标管理**:创建、更新、查询数据指标的核心逻辑 2. **数据指标列表**:实现数据指标列表的查询和过滤功能 3. **图谱生成**:计算和生成不同类型的数据指标关系图谱,包括: - 血缘关系图谱(Kinship Graph) - 影响关系图谱(Impact Graph) - 完整关系图谱(All Relationships Graph) 4. **关系处理**:管理数据指标与其他实体(数据模型、其他指标、元数据、标签)之间的关系 ## 核心函数列表 | 函数名 | 描述 | |-------|------| | `metric_list()` | 获取数据指标列表,支持多种过滤条件 | | `handle_metric_relation()` | 处理数据指标血缘关系 | | `id_mertic_graph()` | 生成数据指标关系图谱 | | `handle_data_metric()` | 创建或更新数据指标节点 | | `handle_meta_data_metric()` | 处理数据指标与其他节点的关系 | | `handle_id_metric()` | 获取数据指标详情 | | `metric_kinship_graph()` | 生成数据指标血缘关系图谱 | | `metric_impact_graph()` | 生成数据指标影响关系图谱 | | `metric_all_graph()` | 生成数据指标所有关系图谱 | | `data_metric_edit()` | 编辑数据指标 | ## 数据模型 ### 数据指标(data_metric) 数据指标是对数据的测量和计算规则,主要属性包括: - **name**: 指标名称(中文) - **en_name**: 指标英文名称 - **category**: 指标分类 - **describe**: 指标描述 - **time**: 创建/更新时间 - **tag**: 关联的标签ID - **code**: 计算代码 - **id_list**: 关联的数据模型或其他指标ID列表 ### 指标关系 数据指标与其他实体之间的主要关系类型: - **origin**: 指标来源(指标→模型或指标→指标) - **connection**: 指标与元数据的连接 - **label**: 指标与标签的连接 - **child**: 指标的下级关系 ## 使用示例 ### 1. 获取数据指标列表 ```python from app.core.data_metric.metric_interface import metric_list # 获取第一页,每页10条数据 skip_count = 0 page_size = 10 data, total = metric_list(skip_count, page_size, name_filter="用户") print(f"共找到 {total} 条记录") for item in data: print(f"指标名称: {item['name']}, 分类: {item['category']}") ``` ### 2. 生成指标关系图谱 ```python from app.core.data_metric.metric_interface import metric_all_graph # 生成某个指标的所有关系图谱,包含元数据 graph_data = metric_all_graph(nodeid=123, meta=True) # 输出图谱数据 print(f"节点数量: {len(graph_data['nodes'])}") print(f"连线数量: {len(graph_data['lines'])}") ``` ## 依赖项 本模块主要依赖以下组件: 1. **py2neo**: 用于Neo4j图数据库操作 2. **routes.graph_routes**: 提供图数据库连接 3. **DataOps_function.common_functions**: 提供通用操作函数 4. **DataOps_function.meta_data_function**: 提供元数据相关功能 5. **services.package_function**: 提供节点和关系操作功能 ## 错误处理 本模块使用Python标准异常处理机制。大多数函数在遇到错误时会抛出相应的异常,由调用者(通常是API层)捕获和处理。模块还使用logging模块记录关键操作和错误,日志文件为`metric_interface.log`。 ## 性能考虑 数据指标图谱查询可能涉及大量的节点和关系,查询性能可能受到影响。为优化性能,本模块: 1. 使用MATCH查询时,尽量添加适当的WHERE条件减少结果集 2. 使用SKIP和LIMIT进行分页查询 3. 合理使用OPTIONAL MATCH减少查询失败 4. 对图谱节点和关系进行过滤,只返回有效的数据 ## 代码结构 - **__init__.py**: 导入模块接口 - **metric_interface.py**: 包含所有核心功能实现 ## 维护者 数据平台开发团队