Skip to content

Commit 30786c9

Browse files
Move node to data set cache to DataflowNodeToSqlSubqueryVisitor and use in SQL plan resolution
1 parent 2ec9368 commit 30786c9

File tree

177 files changed

+26141
-26211
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+26141
-26211
lines changed

metricflow/dataflow/builder/dataflow_plan_builder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
FindSourceNodeRecipeResult,
6767
)
6868
from metricflow.dataflow.builder.measure_spec_properties import MeasureSpecProperties
69-
from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver
7069
from metricflow.dataflow.builder.node_evaluator import (
7170
LinkableInstanceSatisfiabilityEvaluation,
7271
NodeEvaluatorForLinkableInstances,
@@ -109,6 +108,7 @@
109108
PredicatePushdownState,
110109
PreJoinNodeProcessor,
111110
)
111+
from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor
112112

113113
logger = logging.getLogger(__name__)
114114

@@ -120,7 +120,7 @@ def __init__( # noqa: D107
120120
self,
121121
source_node_set: SourceNodeSet,
122122
semantic_manifest_lookup: SemanticManifestLookup,
123-
node_output_resolver: DataflowPlanNodeOutputDataSetResolver,
123+
node_output_resolver: DataflowNodeToSqlSubqueryVisitor,
124124
column_association_resolver: ColumnAssociationResolver,
125125
source_node_builder: SourceNodeBuilder,
126126
dataflow_plan_builder_cache: Optional[DataflowPlanBuilderCache] = None,

metricflow/dataflow/builder/node_data_set.py

Lines changed: 0 additions & 110 deletions
This file was deleted.

metricflow/dataflow/builder/node_evaluator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
from metricflow_semantics.specs.spec_set import group_specs_by_type
3333
from metricflow_semantics.sql.sql_join_type import SqlJoinType
3434

35-
from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver
3635
from metricflow.dataflow.builder.partitions import (
3736
PartitionDimensionJoinDescription,
3837
PartitionJoinResolver,
@@ -45,6 +44,7 @@
4544
from metricflow.dataset.dataset_classes import DataSet
4645
from metricflow.dataset.sql_dataset import SqlDataSet
4746
from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription
47+
from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor
4848

4949
logger = logging.getLogger(__name__)
5050

@@ -168,7 +168,7 @@ def __init__(
168168
self,
169169
semantic_model_lookup: SemanticModelLookup,
170170
nodes_available_for_joins: Sequence[DataflowPlanNode],
171-
node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver,
171+
node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor,
172172
time_spine_metric_time_nodes: Sequence[MetricTimeDimensionTransformNode],
173173
) -> None:
174174
"""Initializer.

metricflow/dataflow/optimizer/dataflow_optimizer_factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
from dbt_semantic_interfaces.enum_extension import assert_values_exhausted
77

8-
from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver
98
from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer
109
from metricflow.dataflow.optimizer.predicate_pushdown_optimizer import PredicatePushdownOptimizer
1110
from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer
11+
from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor
1212

1313

1414
class DataflowPlanOptimization(Enum):
@@ -45,7 +45,7 @@ class DataflowPlanOptimizerFactory:
4545
processing between the DataflowPlanBuilder and the optimizer instances requiring that functionality.
4646
"""
4747

48-
def __init__(self, node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver) -> None:
48+
def __init__(self, node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor) -> None:
4949
"""Initializer.
5050
5151
This collects all of the initialization requirements for the optimizers it manages.

metricflow/dataflow/optimizer/predicate_pushdown_optimizer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from metricflow_semantics.specs.where_filter.where_filter_spec import WhereFilterSpec
1212
from metricflow_semantics.sql.sql_join_type import SqlJoinType
1313

14-
from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver
1514
from metricflow.dataflow.dataflow_plan import (
1615
DataflowPlan,
1716
DataflowPlanNode,
@@ -42,6 +41,7 @@
4241
from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer
4342
from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import OptimizeBranchResult
4443
from metricflow.plan_conversion.node_processor import PredicateInputType, PredicatePushdownState
44+
from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor
4545

4646
logger = logging.getLogger(__name__)
4747

@@ -160,7 +160,7 @@ class PredicatePushdownOptimizer(
160160
we encounter gets applied exactly once per nested subquery branch encapsulated by a given constraint node.
161161
"""
162162

163-
def __init__(self, node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver) -> None:
163+
def __init__(self, node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor) -> None:
164164
"""Initializer.
165165
166166
Initializes predicate pushdown state with all optimizer-managed pushdown types enabled, but nothing to

metricflow/engine/metricflow_engine.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from metricflow.data_table.mf_table import MetricFlowDataTable
3939
from metricflow.dataflow.builder.builder_cache import DataflowPlanBuilderCache
4040
from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder
41-
from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver
4241
from metricflow.dataflow.builder.source_node import SourceNodeBuilder
4342
from metricflow.dataflow.dataflow_plan import DataflowPlan
4443
from metricflow.dataflow.optimizer.dataflow_optimizer_factory import DataflowPlanOptimization
@@ -54,6 +53,7 @@
5453
from metricflow.execution.execution_plan import ExecutionPlan, SqlStatement
5554
from metricflow.execution.executor import SequentialPlanExecutor
5655
from metricflow.plan_conversion.to_sql_plan.dataflow_to_sql import DataflowToSqlPlanConverter
56+
from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor
5757
from metricflow.protocols.sql_client import SqlClient
5858
from metricflow.sql.optimizer.optimization_levels import SqlOptimizationLevel
5959
from metricflow.telemetry.models import TelemetryLevel
@@ -384,7 +384,7 @@ def __init__(
384384
)
385385
source_node_set = source_node_builder.create_from_data_sets(self._source_data_sets)
386386

387-
node_output_resolver = DataflowPlanNodeOutputDataSetResolver(
387+
node_output_resolver = DataflowNodeToSqlSubqueryVisitor(
388388
column_association_resolver=self._column_association_resolver,
389389
semantic_manifest_lookup=self._semantic_manifest_lookup,
390390
)

metricflow/plan_conversion/node_processor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
from metricflow_semantics.specs.where_filter.where_filter_spec import WhereFilterSpec
2121
from metricflow_semantics.sql.sql_join_type import SqlJoinType
2222

23-
from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver
2423
from metricflow.dataflow.builder.partitions import PartitionJoinResolver
2524
from metricflow.dataflow.dataflow_plan import (
2625
DataflowPlanNode,
@@ -30,6 +29,7 @@
3029
from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinOnEntitiesNode
3130
from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode
3231
from metricflow.dataflow.nodes.where_filter import WhereConstraintNode
32+
from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor
3333
from metricflow.validation.dataflow_join_validator import JoinDataflowOutputValidator
3434

3535
logger = logging.getLogger(__name__)
@@ -330,7 +330,7 @@ class PreJoinNodeProcessor:
330330
def __init__( # noqa: D107
331331
self,
332332
semantic_model_lookup: SemanticModelLookup,
333-
node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver,
333+
node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor,
334334
):
335335
self._node_data_set_resolver = node_data_set_resolver
336336
self._partition_resolver = PartitionJoinResolver(semantic_model_lookup)

0 commit comments

Comments
 (0)