1
我正在研究依赖关系分析工具,并且提出了以下Cypher查询,它表示SCHEMAs拥有引用其他对象的对象,推断依赖从架构模式,就像如下:在Cypher中,确定连接引用对象的对象的类型(标签)
MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)-[:REFERENCES*..]->(objectOwnedByTarget)<-[:OWNS]-(targetSchema:SCHEMA)
WHERE sourceSchema.name <> targetSchema.name
WITH sourceSchema, targetSchema
ORDER BY targetSchema.name
RETURN sourceSchema.name AS schema,
collect(distinct targetSchema.name) AS dependsOn
ORDER BY sourceSchema.name
上述查询返回的模式和他们的依赖关系,而真棒列表,它看起来是这样的:
schema dependsOn
FOO [BAR, BAZ, PUBLIC, SYS]
BAR [SYS]
BAZ [PUBLIC, SYS]
(etc)
一些帮助,我也设法创建一个查询,给我一个类型列表(la贝尔)以及它们在图中每个模式计数:
MATCH (sourceSchema:SCHEMA)-[:OWNS]->(objectOwnedBySource)
RETURN DISTINCT sourceSchema.name AS schema,
filter(x IN (labels(objectOwnedBySource)) WHERE NOT x="ENTITY")[0] AS type,
count(*) AS count
ORDER BY schema,type
从上面的输出看起来像:
schema type count
FOO TABLE 14
FOO SYNONYM 1
BAR FUNCTION 3
我的问题是:我怎么莫名其妙地结合这一点,并获得标签的数导致架构模式依赖?我的意图是:
Schema DependsOnSchema ThroughLabelOnReferencedObject Count
FOO BAR TABLE 101
FOO BAR VIEW 10
FOO BAZ TABLE 6
(etc)
对于传入和传出引用的单独计数器的加分:-)。提前感谢任何提示!