diff --git a/src/util/graph.ts b/src/util/graph.ts
index 359ac14c7895cb054ffd5602013760345863ed26..9fe4d683929053966797bdbfd1a5656323275d65 100644
--- a/src/util/graph.ts
+++ b/src/util/graph.ts
@@ -312,8 +312,8 @@ export class Graph {
         const dimensions = q.dimensions;
         const clauses = (q.clauses) ? q.clauses : [];
         let output: View[] = [];
-        let verticesIds = metrics.map((met) => met.name);
-        verticesIds = verticesIds.concat(dimensions.map((dim) => dim.name));
+        let verticesIds = this.verticesInQuery(q);
+
         for (let i = 0; i < this.vertices.length; ++i) {
             // Get the vertices and set their status and parent
             this.vertices[i].state = State.UNVISITED;
@@ -364,8 +364,7 @@ export class Graph {
         // Recover the list of vertices
         let dimToCover = dimensions.map((dim) => dim);
         let metToCover = metrics.map((met) => met);
-        verticesIds = metrics.map((met) => met.name);
-        verticesIds = verticesIds.concat(dimensions.map((dim) => dim.name));
+        verticesIds = this.verticesInQuery(q);
         while (verticesIds.length > 0) {
             // Choose a vertex and walks to his ancestors until
             // reach the root, when walking this path choose
@@ -538,4 +537,33 @@ export class Graph {
 
     }
 
+    private verticesInQuery(q: Query): string[] {
+        const metrics = q.metrics;
+        const dimensions = q.dimensions;
+        const clauses = (q.clauses) ? q.clauses : [];
+        let verticesIds = metrics.map((met) => met.name);
+        verticesIds = verticesIds.concat(dimensions.map((dim) => dim.name));
+        for (let i = 0; i < clauses.length; ++i) {
+            verticesIds = verticesIds.concat(clauses[i].filters.map((filter) => {
+                return filter.target.name;
+            }));
+        }
+
+        const sorted = verticesIds.sort();
+        if (sorted.length > 0) {
+            const unique = [sorted[0]];
+            for (let i = 1; i < sorted.length; ++i) {
+                if (sorted[i - 1] !== sorted[i]) {
+                    unique.push(sorted[i]);
+                }
+            }
+            return unique;
+        }
+
+        else {
+            return [];
+        }
+
+    }
+
 }