使用TigerGraphX执行tg_louvain.gsql报错及小图结果疑问
问题
我尝试通过TigerGraphX运行图数据科学库中的tg_louvain.gsql查询,代码如下:
gsql_query = open('TigerGraph/gsql-graph-algorithms-tg_4.3.0_dev/algorithms/Community/louvain/tg_louvain.gsql', 'r').read() self.datascope_graph.create_query(gsql_query) self.datascope_graph.install_query('tg_louvain') result = self.datascope_graph.run_query('tg_louvain', { 'v_type_set': ["gsbNode"], 'e_type_set': ["gsbEdge"], 'weight_attribute': "", 'maximum_iteration': 10, 'result_attribute': ["cluster_id"], 'print_info': True })
运行时出现错误:
2025-06-20 03:37:07,866 - tigergraphx.core.managers.query_manager - INFO - Installing query 'tg_louvain' for graph 'workflow0_graph'... 2025-06-20 03:37:50,848 - tigergraphx.core.managers.query_manager - INFO - Query 'tg_louvain' installed successfully. rohila 2025-06-20 03:37:51,017 - tigergraphx.core.managers.query_manager - ERROR - Error running query tg_louvain: Expected list, but got str:
该查询在GSQL Shell中可正常执行,命令为:
run query tg_louvain(["gsbNode"], ["gsbEdge"], _, 10, "cluster_id", _, TRUE)
查阅官方文档但语法说明不够全面,查看TigerGraphX驱动源码后发现查询实际已运行但返回空字符串,想问这种情况在6节点10边的小图中是否正常?
解答
1. 错误原因与修复
错误提示Expected list, but got str是参数类型不匹配导致:
- GSQL Shell中
result_attribute传入的是字符串"cluster_id",但你在TigerGraphX代码里传的是列表["cluster_id"],与查询定义的参数类型不符 - 另外GSQL中用
_表示的空值,对应TigerGraphX里应传None而非空字符串,避免潜在类型问题
修改后的代码:
result = self.datascope_graph.run_query('tg_louvain', { 'v_type_set': ["gsbNode"], 'e_type_set': ["gsbEdge"], 'weight_attribute': None, 'maximum_iteration': 10, 'result_attribute': "cluster_id", # 从列表改为字符串 'print_info': True })
2. 小图返回空的合理性
6节点10边的小图属于极小图结构,出现空返回可能是以下正常情况:
- 所有节点被划分到同一个社区,若查询仅在社区数量大于1时返回内容,就会无输出
- 若查询逻辑仅将
cluster_id写入节点属性,而非直接返回结果,运行后自然会得到空字符串,此时可以通过查询节点的cluster_id属性验证算法是否生效
内容的提问来源于stack exchange,提问作者Ameya Patil
相关产品推荐
相关产品推荐

