| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
def type_cql_query():    query = """    MATCH (n:data_model)    WHERE id(n) = $nodeId    // 获取元数据节点, 数据模型    WITH n    OPTIONAL MATCH (n)-[:connection]->(a:meta_node)    // 获取数据标准    OPTIONAL MATCH (n)-[:clean_model]-(d:data_standard)-[:clean_model]->(a)     // 获取数据标签    OPTIONAL MATCH (n)-[:label]->(la:data_label)    OPTIONAL MATCH (child) where id(child) = n.childernId     OPTIONAL MATCH (ma) where id(ma) = a.master_data     WITH n, a, d, la, n.childrenId AS childrenIds,ma    // 遍历 childrenIds 并获取对应的子节点    UNWIND childrenIds AS child_id    OPTIONAL MATCH (child) WHERE id(child) = child_id    // 收集子节点信息    WITH n, a, d, la, collect(DISTINCT {id: id(child), name: child.name}) AS childrenId,ma    // 收集元数据信息并排序    WITH a, d, la, n, childrenId, ma    WITH n, collect(DISTINCT {id: id(a), name: a.name, en_name: a.en_name,                             data_type: a.data_type, master_data: {id: id(ma), name: ma.name},                             data_standard: {id: id(d), name: d.name}}) AS meta_ids,            properties(n) AS properties, {id: id(la), name: la.name} AS tag, childrenId   // 对 meta_ids 进行排序    UNWIND meta_ids AS meta_id    WITH n, tag, properties, childrenId, meta_id    ORDER BY meta_id.id    WITH n, tag, properties, childrenId, collect(meta_id) AS sorted_meta_ids    // 构建结果集    WITH [{data_resource: null, resource_id: null, meta_ids: sorted_meta_ids}]AS resources,          id(n) as nodeid, tag, properties, n, childrenId    UNWIND resources as resource    WITH nodeid, collect(resource) as results, tag, properties, n,childrenId    // 合并结果集    RETURN results, tag, properties, childrenId    """    return query# 数据模型编辑接口def handle_id_model(id):    # 获取数据模型的名称,元数据名称,对应选中的数据资源名称    query = type_cql_query()    data_ = connect_graph.run(query, nodeId=id)    res_list = []    properties = {}    for record in data_:        res_list = record['results']        properties = record['properties']        properties['tag'] = record['tag']        properties['childrenId'] = record['childrenId']        properties.pop('id_list', None)        if 'tag' not in properties:            properties['tag'] = None        if 'describe' not in properties:            properties['describe'] = None    res_dict = {"resource_selected": res_list}    merged_dict = {**res_dict, **properties}    response_data = {"data_model": merged_dict}    return response_data
 |