Skip to content

Commit 8ade214

Browse files
fix: address code review feedback from CodeRabbit
- Remove unused Optional import - Fix extract_dependencies to filter non-exported node types - Fix class docstring to reflect actual graph model - Fix README Cypher query to use unique_id instead of name - Add requirements.txt with neo4j dependency
1 parent 2186788 commit 8ade214

3 files changed

Lines changed: 17 additions & 5 deletions

File tree

README_neo4j.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ config = Neo4jConfig.from_env()
7171

7272
Find all models impacted by a source change:
7373
```cypher
74-
MATCH (source:DbtNode {name: "raw_customers"})-[:FEEDS_INTO*]->(impacted)
75-
RETURN impacted.name, impacted.resource_type
74+
MATCH (source:DbtNode {unique_id: "source.my_project.raw_customers"})-[:FEEDS_INTO*]->(impacted)
75+
RETURN impacted.unique_id, impacted.name, impacted.resource_type
7676
```
7777

7878
## Running Tests

elementary_neo4j/neo4j_exporter.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import logging
33
from pathlib import Path
4-
from typing import Any, Dict, List, Optional
4+
from typing import Any, Dict, List
55

66
from neo4j import GraphDatabase
77

@@ -13,7 +13,7 @@
1313
class Neo4jLineageExporter:
1414
"""
1515
Exports dbt lineage from Elementary's dbt manifest into Neo4j.
16-
Creates nodes for models, sources, and columns, and
16+
Creates nodes for models, sources, seeds, and snapshots, and
1717
relationships for dependencies between them.
1818
"""
1919

@@ -62,10 +62,21 @@ def extract_nodes(self, manifest: Dict[str, Any]) -> List[Dict]:
6262
return nodes
6363

6464
def extract_dependencies(self, manifest: Dict[str, Any]) -> List[Dict]:
65-
"""Extract upstream dependencies between nodes."""
65+
"""Extract upstream dependencies between exported nodes only."""
66+
exported_ids = {
67+
unique_id
68+
for unique_id, node in manifest.get("nodes", {}).items()
69+
if node.get("resource_type") in ("model", "seed", "snapshot")
70+
}
71+
exported_ids.update(manifest.get("sources", {}).keys())
72+
6673
dependencies = []
6774
for unique_id, node in manifest.get("nodes", {}).items():
75+
if unique_id not in exported_ids:
76+
continue
6877
for upstream_id in node.get("depends_on", {}).get("nodes", []):
78+
if upstream_id not in exported_ids:
79+
continue
6980
dependencies.append({
7081
"from_id": upstream_id,
7182
"to_id": unique_id,

elementary_neo4j/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
neo4j>=5.0,<7.0

0 commit comments

Comments
 (0)