删除图的部分内容
删除图的部分内容有助于释放内存或移除之前通过算法生成的变异结果。
语法
CALL gds.graph.nodeProperties.drop(
graphName: String,
nodeProperties: String or List of Strings,
configuration: Map
)
YIELD
propertiesRemoved: Integer,
graphName: String,
nodeProperties: String or List of String
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储时所使用的名称。 |
nodeProperties |
字符串或字符串列表 |
否 |
图中需要删除的节点属性。 |
配置 |
Map |
是 |
需要配置的额外参数。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
整数 |
4 [1] |
是 |
用于运行算法的并发线程数。 |
|
failIfMissing(缺失时是否报错) |
布尔值 |
true |
是 |
如果为 false,该过程将忽略图中不存在的属性。 |
| 名称 | 类型 | 描述 |
|---|---|---|
propertiesRemoved |
整数 |
已删除属性的数量。 |
graphName |
字符串 |
存储在目录中的图的名称。 |
nodeProperties |
字符串或字符串列表 |
已删除的节点属性。 |
CALL gds.graph.relationships.drop(
graphName: String,
relationshipType: String
)
YIELD
graphName: String,
relationshipType: String,
deletedRelationships: Integer,
deletedProperties: Map
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储时所使用的名称。 |
关系类型 (relationshipType) |
字符串 |
否 |
图中需要删除的关系类型。 |
| 名称 | 类型 | 描述 |
|---|---|---|
graphName |
字符串 |
存储在目录中的图的名称。 |
关系类型 (relationshipType) |
字符串 |
已删除关系所属的类型。 |
deletedRelationships |
整数 |
从内存图中删除的关系数量。 |
deletedProperties |
整数 |
一个映射表,其中键为关系属性的名称,值为对应名称下已删除属性的数量。 |
示例
|
以下所有示例应在空数据库中运行。 本示例将 Cypher 投影作为标准。原生投影将在未来的版本中弃用。 |
为了演示 GDS 在节点属性上的功能,我们将在 Neo4j 中创建一个小型社交网络图,并将其投影到我们的图目录中。
CREATE
(florentin:Person { name: 'Florentin', age: 16 }),
(adam:Person { name: 'Adam', age: 18 }),
(veselin:Person { name: 'Veselin', age: 20 }),
(hobbit:Book { name: 'The Hobbit', numberOfPages: 310 }),
(florentin)-[:KNOWS { since: 2010 }]->(adam),
(florentin)-[:KNOWS { since: 2018 }]->(veselin),
(adam)-[:READ]->(hobbit)
MATCH (n:Person)-[r:KNOWS|READ]->(m:Person|Book)
RETURN gds.graph.project('socialGraph', n, m,
{
sourceNodeLabels: labels(n),
targetNodeLabels: labels(m),
sourceNodeProperties: n { .age },
targetNodeProperties: CASE WHEN m:Person THEN m { .age } ELSE {} END,
relationshipType: type(r)
}
)
CALL gds.degree.mutate('socialGraph', {mutateProperty: 'score'})
删除节点属性
socialGraph 中所有投影节点删除 score 属性CALL gds.graph.nodeProperties.drop('socialGraph', ['score'])
YIELD propertiesRemoved
| propertiesRemoved |
|---|
4 |
|
上述示例要求所有给定的属性必须存在于 至少一个 投影节点标签上。 |
忽略缺失的属性
默认情况下,如果给定的任何属性在图中不存在,该过程将失败。如果您想忽略缺失的属性,可以将 failIfMissing 配置选项设置为 false。
socialGraph 中所有投影节点删除 missing_score 属性CALL gds.graph.nodeProperties.drop('socialGraph', ['missing_score'], {failIfMissing: false})
YIELD propertiesRemoved, nodeProperties
| propertiesRemoved | nodeProperties |
|---|---|
0 |
[] |
删除给定类型的关系
我们可以从目录中的命名图中删除给定类型的所有关系。这对于释放主内存或删除意外添加的关系类型非常有用。
|
只有当该关系类型不是图中存在的最后一种关系类型时,才能删除它。如果我们仍然想删除这些关系,则需要 删除该图。 |
SIMILAR 类型的关系CALL gds.graph.relationships.drop(
'socialGraph', (1)
'READ' (2)
)
YIELD
graphName, relationshipType, deletedRelationships, deletedProperties
| 1 | 投影图的名称。 |
| 2 | 我们要从投影图中删除的关系类型。 |
| graphName | 关系类型 (relationshipType) | deletedRelationships | deletedProperties |
|---|---|---|---|
"socialGraph" |
"READ" |
1 |
{} |