diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index 561495bc54..560865aeb5 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -66,7 +66,6 @@ FindSourceNodeRecipeResult, ) from metricflow.dataflow.builder.measure_spec_properties import MeasureSpecProperties -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.node_evaluator import ( LinkableInstanceSatisfiabilityEvaluation, NodeEvaluatorForLinkableInstances, @@ -109,6 +108,7 @@ PredicatePushdownState, PreJoinNodeProcessor, ) +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor logger = logging.getLogger(__name__) @@ -120,7 +120,7 @@ def __init__( # noqa: D107 self, source_node_set: SourceNodeSet, semantic_manifest_lookup: SemanticManifestLookup, - node_output_resolver: DataflowPlanNodeOutputDataSetResolver, + node_output_resolver: DataflowNodeToSqlSubqueryVisitor, column_association_resolver: ColumnAssociationResolver, source_node_builder: SourceNodeBuilder, dataflow_plan_builder_cache: Optional[DataflowPlanBuilderCache] = None, diff --git a/metricflow/dataflow/builder/node_data_set.py b/metricflow/dataflow/builder/node_data_set.py deleted file mode 100644 index d57d896150..0000000000 --- a/metricflow/dataflow/builder/node_data_set.py +++ /dev/null @@ -1,110 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Dict, Optional, Sequence - -from metricflow_semantics.dag.id_prefix import StaticIdPrefix -from metricflow_semantics.dag.sequential_id import SequentialIdGenerator -from metricflow_semantics.mf_logging.runtime import log_block_runtime -from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver -from typing_extensions import override - -from metricflow.dataflow.dataflow_plan import ( - DataflowPlanNode, -) -from metricflow.dataset.sql_dataset import SqlDataSet -from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor - -if TYPE_CHECKING: - from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup - - -class DataflowPlanNodeOutputDataSetResolver: - """Given a node in a dataflow plan, figure out what is the data set output by that node. - - Recall that in the dataflow plan, the nodes represent computation, and the inputs and outputs of the nodes are - data sets containing measures, dimensions, etc. - - Note: the term "dimension" is used below, but it actually refers to any LinkableInstance. - - This class is useful when computing the joins required to retrieve the dimensions associated with a measure. The - object that figures out the joins (NodeEvaluatorForLinkableInstances) is given a set of dataflow plan nodes that - output different dimensions (this information is not necessarily in the node itself). - - NodeEvaluatorForLinkableInstances needs the data set associated with a node so that it knows what dimensions and - entities are in the node. This information is used to figure out whether that node is useful to join to in order - to retrieve a particular dimension. - - In the simple case, if the input nodes are all ReadSqlSourceNodes, then the data set is a member variable of the - node, and there would be no need to traverse the dataflow node hierarchy with this class. However, if it's not a - single node, that information is not available as the dataflow plan nodes contain little metadata. In that case, - this class is needed to traverse the dataflow plan and figure that out. - - The reason why the input nodes to NodeEvaluatorForLinkableInstances wouldn't always be all ReadSqlSourceNodes is to - realize an easy way to handle multi-hop joins without making changes to NodeEvaluatorForLinkableInstances. If we - generate a set of nodes that already include the multi-hop dimensions available, the join resolution logic becomes - much simpler. For example, a node like: - - - - - - - - - - would have the dimension user_id__device_id__platform available, so to NodeEvaluatorForLinkableInstances, - it's the same problem as doing a single-hop join. This simplifies the join resolution logic, though now the input - to NodeEvaluatorForLinkableInstances needs to contain nodes that include all possible multi-hop joins. - - The logic to figure the dataset output by a node is the same as DataflowToSqlPlanConverter because the same - information is needed for generating SQL queries, so inheriting from that. We may want to look later at making - another class to have better separation of concerns. - """ - - def __init__( # noqa: D107 - self, - column_association_resolver: ColumnAssociationResolver, - semantic_manifest_lookup: SemanticManifestLookup, - _node_to_output_data_set: Optional[Dict[DataflowPlanNode, SqlDataSet]] = None, - ) -> None: - self._node_to_output_data_set: Dict[DataflowPlanNode, SqlDataSet] = _node_to_output_data_set or {} - self._column_association_resolver = column_association_resolver - self._semantic_manifest_lookup = semantic_manifest_lookup - self._to_data_set_visitor = _NodeDataSetVisitor( - column_association_resolver=self._column_association_resolver, - semantic_manifest_lookup=self._semantic_manifest_lookup, - ) - - def get_output_data_set(self, node: DataflowPlanNode) -> SqlDataSet: - """Cached since this will be called repeatedly during the computation of multiple metrics. - - # TODO: The cache needs to be pruned, but has not yet been an issue. - """ - if node not in self._node_to_output_data_set: - self._node_to_output_data_set[node] = node.accept(self._to_data_set_visitor) - - return self._node_to_output_data_set[node] - - def cache_output_data_sets(self, nodes: Sequence[DataflowPlanNode]) -> None: - """Cache the output of the given nodes for consistent retrieval with `get_output_data_set`.""" - with log_block_runtime(f"cache_output_data_sets for {len(nodes)} nodes"): - for node in nodes: - self.get_output_data_set(node) - - def copy(self) -> DataflowPlanNodeOutputDataSetResolver: - """Return a copy of this with the same nodes cached.""" - return DataflowPlanNodeOutputDataSetResolver( - column_association_resolver=self._column_association_resolver, - semantic_manifest_lookup=self._semantic_manifest_lookup, - _node_to_output_data_set=dict(self._node_to_output_data_set), - ) - - -class _NodeDataSetVisitor(DataflowNodeToSqlSubqueryVisitor): - @override - def _next_unique_table_alias(self) -> str: - """Return the next unique table alias to use in generating queries. - - This uses a separate prefix in order to minimize subquery ID thrash. - """ - return SequentialIdGenerator.create_next_id(StaticIdPrefix.NODE_RESOLVER_SUB_QUERY).str_value diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index fb62adc915..739a74ac9f 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -32,7 +32,6 @@ from metricflow_semantics.specs.spec_set import group_specs_by_type from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.partitions import ( PartitionDimensionJoinDescription, PartitionJoinResolver, @@ -45,6 +44,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.dataset.sql_dataset import SqlDataSet from metricflow.plan_conversion.instance_converters import CreateValidityWindowJoinDescription +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor logger = logging.getLogger(__name__) @@ -168,7 +168,7 @@ def __init__( self, semantic_model_lookup: SemanticModelLookup, nodes_available_for_joins: Sequence[DataflowPlanNode], - node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver, + node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor, time_spine_metric_time_nodes: Sequence[MetricTimeDimensionTransformNode], ) -> None: """Initializer. diff --git a/metricflow/dataflow/optimizer/dataflow_optimizer_factory.py b/metricflow/dataflow/optimizer/dataflow_optimizer_factory.py index ac17abc8fe..813f21f3fb 100644 --- a/metricflow/dataflow/optimizer/dataflow_optimizer_factory.py +++ b/metricflow/dataflow/optimizer/dataflow_optimizer_factory.py @@ -5,10 +5,10 @@ from dbt_semantic_interfaces.enum_extension import assert_values_exhausted -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.dataflow.optimizer.predicate_pushdown_optimizer import PredicatePushdownOptimizer from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import SourceScanOptimizer +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor class DataflowPlanOptimization(Enum): @@ -45,7 +45,7 @@ class DataflowPlanOptimizerFactory: processing between the DataflowPlanBuilder and the optimizer instances requiring that functionality. """ - def __init__(self, node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver) -> None: + def __init__(self, node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor) -> None: """Initializer. This collects all of the initialization requirements for the optimizers it manages. diff --git a/metricflow/dataflow/optimizer/predicate_pushdown_optimizer.py b/metricflow/dataflow/optimizer/predicate_pushdown_optimizer.py index 960ecba967..8cf540c295 100644 --- a/metricflow/dataflow/optimizer/predicate_pushdown_optimizer.py +++ b/metricflow/dataflow/optimizer/predicate_pushdown_optimizer.py @@ -11,7 +11,6 @@ from metricflow_semantics.specs.where_filter.where_filter_spec import WhereFilterSpec from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.dataflow_plan import ( DataflowPlan, DataflowPlanNode, @@ -42,6 +41,7 @@ from metricflow.dataflow.optimizer.dataflow_plan_optimizer import DataflowPlanOptimizer from metricflow.dataflow.optimizer.source_scan.source_scan_optimizer import OptimizeBranchResult from metricflow.plan_conversion.node_processor import PredicateInputType, PredicatePushdownState +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor logger = logging.getLogger(__name__) @@ -160,7 +160,7 @@ class PredicatePushdownOptimizer( we encounter gets applied exactly once per nested subquery branch encapsulated by a given constraint node. """ - def __init__(self, node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver) -> None: + def __init__(self, node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor) -> None: """Initializer. Initializes predicate pushdown state with all optimizer-managed pushdown types enabled, but nothing to diff --git a/metricflow/engine/metricflow_engine.py b/metricflow/engine/metricflow_engine.py index 5a38cc7ef6..1f07b64956 100644 --- a/metricflow/engine/metricflow_engine.py +++ b/metricflow/engine/metricflow_engine.py @@ -38,7 +38,6 @@ from metricflow.data_table.mf_table import MetricFlowDataTable from metricflow.dataflow.builder.builder_cache import DataflowPlanBuilderCache from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder from metricflow.dataflow.dataflow_plan import DataflowPlan from metricflow.dataflow.optimizer.dataflow_optimizer_factory import DataflowPlanOptimization @@ -54,6 +53,7 @@ from metricflow.execution.execution_plan import ExecutionPlan, SqlStatement from metricflow.execution.executor import SequentialPlanExecutor from metricflow.plan_conversion.to_sql_plan.dataflow_to_sql import DataflowToSqlPlanConverter +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from metricflow.protocols.sql_client import SqlClient from metricflow.sql.optimizer.optimization_levels import SqlOptimizationLevel from metricflow.telemetry.models import TelemetryLevel @@ -384,7 +384,7 @@ def __init__( ) source_node_set = source_node_builder.create_from_data_sets(self._source_data_sets) - node_output_resolver = DataflowPlanNodeOutputDataSetResolver( + node_output_resolver = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=self._column_association_resolver, semantic_manifest_lookup=self._semantic_manifest_lookup, ) diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index bbeca250c0..de24c28004 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -20,7 +20,6 @@ from metricflow_semantics.specs.where_filter.where_filter_spec import WhereFilterSpec from metricflow_semantics.sql.sql_join_type import SqlJoinType -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.partitions import PartitionJoinResolver from metricflow.dataflow.dataflow_plan import ( DataflowPlanNode, @@ -30,6 +29,7 @@ from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinOnEntitiesNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.dataflow.nodes.where_filter import WhereConstraintNode +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from metricflow.validation.dataflow_join_validator import JoinDataflowOutputValidator logger = logging.getLogger(__name__) @@ -330,7 +330,7 @@ class PreJoinNodeProcessor: def __init__( # noqa: D107 self, semantic_model_lookup: SemanticModelLookup, - node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver, + node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor, ): self._node_data_set_resolver = node_data_set_resolver self._partition_resolver = PartitionJoinResolver(semantic_model_lookup) diff --git a/metricflow/plan_conversion/to_sql_plan/dataflow_to_sql.py b/metricflow/plan_conversion/to_sql_plan/dataflow_to_sql.py index af5aa59bfa..c3d1e47bee 100644 --- a/metricflow/plan_conversion/to_sql_plan/dataflow_to_sql.py +++ b/metricflow/plan_conversion/to_sql_plan/dataflow_to_sql.py @@ -171,7 +171,7 @@ def convert_using_specifics( column_association_resolver=self.column_association_resolver, semantic_manifest_lookup=self._semantic_manifest_lookup, ) - data_set = dataflow_plan_node.accept(to_sql_subquery_visitor) + data_set = to_sql_subquery_visitor.get_output_data_set(dataflow_plan_node) else: to_sql_cte_visitor = DataflowNodeToSqlCteVisitor( column_association_resolver=self.column_association_resolver, diff --git a/metricflow/plan_conversion/to_sql_plan/dataflow_to_subquery.py b/metricflow/plan_conversion/to_sql_plan/dataflow_to_subquery.py index 898b10e855..cc363420aa 100644 --- a/metricflow/plan_conversion/to_sql_plan/dataflow_to_subquery.py +++ b/metricflow/plan_conversion/to_sql_plan/dataflow_to_subquery.py @@ -23,6 +23,7 @@ TimeDimensionInstance, group_instances_by_type, ) +from metricflow_semantics.mf_logging.runtime import log_block_runtime from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.specs.group_by_metric_spec import GroupByMetricSpec @@ -66,6 +67,7 @@ from metricflow_semantics.time.time_constants import ISO8601_PYTHON_FORMAT, ISO8601_PYTHON_TS_FORMAT from metricflow_semantics.time.time_spine_source import TimeSpineSource +from metricflow.dataflow.dataflow_plan import DataflowPlanNode from metricflow.dataflow.dataflow_plan_visitor import DataflowPlanNodeVisitor from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode @@ -136,6 +138,7 @@ def __init__( self, column_association_resolver: ColumnAssociationResolver, semantic_manifest_lookup: SemanticManifestLookup, + _node_to_output_data_set: Optional[Dict[DataflowPlanNode, SqlDataSet]] = None, ) -> None: """Initializer. @@ -154,6 +157,7 @@ def __init__( self._custom_granularity_time_spine_sources = TimeSpineSource.build_custom_time_spine_sources( tuple(self._time_spine_sources.values()) ) + self._node_to_output_data_set: Dict[DataflowPlanNode, SqlDataSet] = _node_to_output_data_set or {} def _next_unique_table_alias(self) -> str: """Return the next unique table alias to use in generating queries.""" @@ -163,6 +167,30 @@ def _next_unique_cte_alias(self) -> str: """Return the next unique CTE alias to use in generating queries.""" return SequentialIdGenerator.create_next_id(StaticIdPrefix.CTE).str_value + def get_output_data_set(self, node: DataflowPlanNode) -> SqlDataSet: + """Cached since this will be called repeatedly during the computation of multiple metrics. + + # TODO: The cache needs to be pruned, but has not yet been an issue. + """ + if node not in self._node_to_output_data_set: + self._node_to_output_data_set[node] = node.accept(self) + + return self._node_to_output_data_set[node] + + def cache_output_data_sets(self, nodes: Sequence[DataflowPlanNode]) -> None: + """Cache the output of the given nodes for consistent retrieval with `get_output_data_set`.""" + with log_block_runtime(f"cache_output_data_sets for {len(nodes)} nodes"): + for node in nodes: + self.get_output_data_set(node) + + def copy(self) -> DataflowNodeToSqlSubqueryVisitor: + """Return a copy of this with the same nodes cached.""" + return DataflowNodeToSqlSubqueryVisitor( + column_association_resolver=self._column_association_resolver, + semantic_manifest_lookup=self._semantic_manifest_lookup, + _node_to_output_data_set=dict(self._node_to_output_data_set), + ) + # TODO: replace this with a dataflow plan node for cumulative metrics def _make_time_spine_data_set( self, @@ -316,7 +344,7 @@ def visit_source_node(self, node: ReadSqlSourceNode) -> SqlDataSet: def visit_join_over_time_range_node(self, node: JoinOverTimeRangeNode) -> SqlDataSet: """Generate time range join SQL.""" table_alias_to_instance_set: OrderedDict[str, InstanceSet] = OrderedDict() - parent_data_set = node.parent_node.accept(self) + parent_data_set = self.get_output_data_set(node.parent_node) parent_data_set_alias = self._next_unique_table_alias() # Assemble time_spine dataset with a column for each agg_time_dimension requested. @@ -358,7 +386,7 @@ def visit_join_over_time_range_node(self, node: JoinOverTimeRangeNode) -> SqlDat def visit_join_on_entities_node(self, node: JoinOnEntitiesNode) -> SqlDataSet: """Generates the query that realizes the behavior of the JoinOnEntitiesNode.""" - from_data_set = node.left_node.accept(self) + from_data_set = self.get_output_data_set(node.left_node) from_data_set_alias = self._next_unique_table_alias() # Change the aggregation state for the measures to be partially aggregated if it was previously aggregated @@ -387,7 +415,7 @@ def visit_join_on_entities_node(self, node: JoinOnEntitiesNode) -> SqlDataSet: for join_description in node.join_targets: join_on_entity = join_description.join_on_entity right_node_to_join = join_description.join_node - right_data_set: SqlDataSet = right_node_to_join.accept(self) + right_data_set: SqlDataSet = self.get_output_data_set(right_node_to_join) right_data_set_alias = self._next_unique_table_alias() # Build join description. @@ -461,7 +489,7 @@ def visit_aggregate_measures_node(self, node: AggregateMeasuresNode) -> SqlDataS """ # Get the data from the parent, and change measure instances to the aggregated state. - from_data_set: SqlDataSet = node.parent_node.accept(self) + from_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) aggregated_instance_set = from_data_set.instance_set.transform( ChangeMeasureAggregationState( { @@ -522,7 +550,7 @@ def visit_aggregate_measures_node(self, node: AggregateMeasuresNode) -> SqlDataS def visit_compute_metrics_node(self, node: ComputeMetricsNode) -> SqlDataSet: """Generates the query that realizes the behavior of ComputeMetricsNode.""" - from_data_set: SqlDataSet = node.parent_node.accept(self) + from_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) from_data_set_alias = self._next_unique_table_alias() # TODO: Check that all measures for the metrics are in the input instance set @@ -714,7 +742,7 @@ def __make_col_reference_or_coalesce_expr( return metric_expr def visit_order_by_limit_node(self, node: OrderByLimitNode) -> SqlDataSet: # noqa: D102 - from_data_set: SqlDataSet = node.parent_node.accept(self) + from_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) output_instance_set = from_data_set.instance_set from_data_set_alias = self._next_unique_table_alias() @@ -754,10 +782,10 @@ def visit_order_by_limit_node(self, node: OrderByLimitNode) -> SqlDataSet: # no def visit_write_to_result_data_table_node(self, node: WriteToResultDataTableNode) -> SqlDataSet: # noqa: D102 # Returning the parent-node SQL as an approximation since you can't write to a data_table via SQL. - return node.parent_node.accept(self) + return self.get_output_data_set(node.parent_node) def visit_write_to_result_table_node(self, node: WriteToResultTableNode) -> SqlDataSet: # noqa: D102 - input_data_set: SqlDataSet = node.parent_node.accept(self) + input_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) input_instance_set: InstanceSet = input_data_set.instance_set return SqlDataSet( instance_set=input_instance_set, @@ -769,7 +797,7 @@ def visit_write_to_result_table_node(self, node: WriteToResultTableNode) -> SqlD def visit_filter_elements_node(self, node: FilterElementsNode) -> SqlDataSet: """Generates the query that realizes the behavior of FilterElementsNode.""" - from_data_set: SqlDataSet = node.parent_node.accept(self) + from_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) output_instance_set = from_data_set.instance_set.transform(FilterElements(node.include_specs)) from_data_set_alias = self._next_unique_table_alias() @@ -796,7 +824,7 @@ def visit_filter_elements_node(self, node: FilterElementsNode) -> SqlDataSet: def visit_where_constraint_node(self, node: WhereConstraintNode) -> SqlDataSet: """Adds where clause to SQL statement from parent node.""" - parent_data_set: SqlDataSet = node.parent_node.accept(self) + parent_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) # Since we're copying the instance set from the parent to conveniently generate the output instance set for this # node, we'll need to change the column names. output_instance_set = parent_data_set.instance_set.transform( @@ -870,7 +898,7 @@ def visit_combine_aggregated_outputs_node(self, node: CombineAggregatedOutputsNo table_alias_to_instance_set: OrderedDict[str, InstanceSet] = OrderedDict() for parent_node in node.parent_nodes: - parent_sql_data_set = parent_node.accept(self) + parent_sql_data_set = self.get_output_data_set(parent_node) table_alias = self._next_unique_table_alias() parent_data_sets.append(AnnotatedSqlDataSet(data_set=parent_sql_data_set, alias=table_alias)) table_alias_to_instance_set[table_alias] = parent_sql_data_set.instance_set @@ -961,7 +989,7 @@ def visit_constrain_time_range_node(self, node: ConstrainTimeRangeNode) -> SqlDa Since time range constraints are always bound by a range of standard date/time values, this conversion cannot use custom granularities. """ - from_data_set: SqlDataSet = node.parent_node.accept(self) + from_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) from_data_set_alias = self._next_unique_table_alias() time_dimension_instances_for_metric_time = sorted( @@ -1012,7 +1040,7 @@ def visit_metric_time_dimension_transform_node(self, node: MetricTimeDimensionTr matching the one defined in the node will be passed. In addition, an additional time dimension instance for "metric time" will be included. See DataSet.metric_time_dimension_reference(). """ - input_data_set: SqlDataSet = node.parent_node.accept(self) + input_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) # Find which measures have an aggregation time dimension that is the same as the one specified in the node. # Only these measures will be in the output data set. @@ -1100,7 +1128,7 @@ def visit_semi_additive_join_node(self, node: SemiAdditiveJoinNode) -> SqlDataSe specified dimension that is non-additive. Then that dataset would be joined with the input data on that dimension along with grouping by entities that are also passed in. """ - from_data_set: SqlDataSet = node.parent_node.accept(self) + from_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) from_data_set_alias = self._next_unique_table_alias() @@ -1226,9 +1254,9 @@ def _choose_instance_for_time_spine_join( return agg_time_dimension_instances[0] def visit_join_to_time_spine_node(self, node: JoinToTimeSpineNode) -> SqlDataSet: # noqa: D102 - parent_data_set = node.metric_source_node.accept(self) + parent_data_set = self.get_output_data_set(node.metric_source_node) parent_alias = self._next_unique_table_alias() - time_spine_data_set = node.time_spine_node.accept(self) + time_spine_data_set = self.get_output_data_set(node.time_spine_node) time_spine_alias = self._next_unique_table_alias() required_agg_time_dimension_specs = tuple(node.requested_agg_time_dimension_specs) @@ -1345,7 +1373,7 @@ def _get_custom_granularity_column_name(self, custom_granularity_name: str) -> s ) def visit_alias_specs_node(self, node: AliasSpecsNode) -> SqlDataSet: # noqa: D102 - parent_data_set = node.parent_node.accept(self) + parent_data_set = self.get_output_data_set(node.parent_node) parent_alias = self._next_unique_table_alias() input_specs_to_output_specs: Dict[InstanceSpec, List[InstanceSpec]] = defaultdict(list) @@ -1395,7 +1423,7 @@ def visit_alias_specs_node(self, node: AliasSpecsNode) -> SqlDataSet: # noqa: D ) def visit_join_to_custom_granularity_node(self, node: JoinToCustomGranularityNode) -> SqlDataSet: # noqa: D102 - parent_data_set = node.parent_node.accept(self) + parent_data_set = self.get_output_data_set(node.parent_node) # New dataset will be joined to parent dataset without a subquery, so use the same FROM alias as the parent node. parent_alias = parent_data_set.checked_sql_select_node.from_source_alias @@ -1467,7 +1495,7 @@ def visit_join_to_custom_granularity_node(self, node: JoinToCustomGranularityNod ) def visit_min_max_node(self, node: MinMaxNode) -> SqlDataSet: # noqa: D102 - parent_data_set = node.parent_node.accept(self) + parent_data_set = self.get_output_data_set(node.parent_node) parent_table_alias = self._next_unique_table_alias() assert ( len(parent_data_set.checked_sql_select_node.select_columns) == 1 @@ -1510,7 +1538,7 @@ def visit_add_generated_uuid_column_node(self, node: AddGeneratedUuidColumnNode) Builds a new dataset that is the same as the output dataset, but with an additional column that contains a randomly generated UUID. """ - input_data_set: SqlDataSet = node.parent_node.accept(self) + input_data_set: SqlDataSet = self.get_output_data_set(node.parent_node) input_data_set_alias = self._next_unique_table_alias() gen_uuid_spec = MetadataSpec(MetricFlowReservedKeywords.MF_INTERNAL_UUID.value) @@ -1552,10 +1580,10 @@ def visit_join_conversion_events_node(self, node: JoinConversionEventsNode) -> S successful conversion. Duplication may exist in the result due to a single base event being able to link to multiple conversion events. """ - base_data_set: SqlDataSet = node.base_node.accept(self) + base_data_set: SqlDataSet = self.get_output_data_set(node.base_node) base_data_set_alias = self._next_unique_table_alias() - conversion_data_set: SqlDataSet = node.conversion_node.accept(self) + conversion_data_set: SqlDataSet = self.get_output_data_set(node.conversion_node) conversion_data_set_alias = self._next_unique_table_alias() base_time_dimension_column_name = self._column_association_resolver.resolve_spec( @@ -1704,7 +1732,7 @@ def visit_join_conversion_events_node(self, node: JoinConversionEventsNode) -> S ) def visit_window_reaggregation_node(self, node: WindowReaggregationNode) -> SqlDataSet: # noqa: D102 - from_data_set = node.parent_node.accept(self) + from_data_set = self.get_output_data_set(node.parent_node) parent_instance_set = from_data_set.instance_set parent_data_set_alias = self._next_unique_table_alias() @@ -1882,7 +1910,7 @@ def visit_offset_by_custom_granularity_node(self, node: OffsetByCustomGranularit ON cte.ds__martian_day = b.ds__martian_day ) """ - time_spine_data_set = node.time_spine_node.accept(self) + time_spine_data_set = self.get_output_data_set(node.time_spine_node) time_spine_alias = self._next_unique_table_alias() offset_window = node.offset_window custom_grain_name = offset_window.granularity diff --git a/metricflow/validation/data_warehouse_model_validator.py b/metricflow/validation/data_warehouse_model_validator.py index 5eda9961d6..fb25e902b4 100644 --- a/metricflow/validation/data_warehouse_model_validator.py +++ b/metricflow/validation/data_warehouse_model_validator.py @@ -36,7 +36,6 @@ from metricflow_semantics.specs.spec_set import InstanceSpecSet from metricflow_semantics.sql.sql_bind_parameters import SqlBindParameterSet -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder from metricflow.dataflow.dataflow_plan import DataflowPlanNode from metricflow.dataflow.nodes.filter_elements import FilterElementsNode @@ -44,6 +43,7 @@ from metricflow.dataset.dataset_classes import DataSet from metricflow.engine.metricflow_engine import MetricFlowEngine, MetricFlowExplainResult, MetricFlowQueryRequest from metricflow.plan_conversion.to_sql_plan.dataflow_to_sql import DataflowToSqlPlanConverter +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from metricflow.protocols.sql_client import SqlClient @@ -71,7 +71,7 @@ def __init__(self, manifest: SemanticManifest) -> None: # noqa: D107 column_association_resolver=DunderColumnAssociationResolver(), semantic_manifest_lookup=self.semantic_manifest_lookup, ) - self.node_resolver = DataflowPlanNodeOutputDataSetResolver( + self.node_resolver = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=DunderColumnAssociationResolver(), semantic_manifest_lookup=self.semantic_manifest_lookup, ) diff --git a/scripts/ci_tests/metricflow_package_test.py b/scripts/ci_tests/metricflow_package_test.py index bf95ebff00..eb1f6de585 100644 --- a/scripts/ci_tests/metricflow_package_test.py +++ b/scripts/ci_tests/metricflow_package_test.py @@ -20,12 +20,12 @@ from metricflow_semantics.specs.query_spec import MetricFlowQuerySpec from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor logger = logging.getLogger(__name__) @@ -140,7 +140,7 @@ def log_dataflow_plan() -> None: # noqa: D103 source_node_builder = SourceNodeBuilder(column_association_resolver, semantic_manifest_lookup) source_node_set = source_node_builder.create_from_data_sets(list(data_set_mapping.values())) - node_output_resolver = DataflowPlanNodeOutputDataSetResolver( + node_output_resolver = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=column_association_resolver, semantic_manifest_lookup=semantic_manifest_lookup, ) diff --git a/tests_metricflow/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py index 23047d679c..9e9503929d 100644 --- a/tests_metricflow/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -23,10 +23,10 @@ from metricflow_semantics.test_helpers.snapshot_helpers import assert_spec_set_snapshot_equal from metricflow_semantics.time.time_spine_source import TimeSpineSource -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.join_to_base import JoinDescription, JoinOnEntitiesNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.sql_dataset import SqlDataSet +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from metricflow.sql.sql_plan import ( SqlSelectColumn, ) @@ -42,7 +42,7 @@ def test_no_parent_node_data_set( time_spine_sources: Mapping[TimeGranularity, TimeSpineSource], ) -> None: """Tests getting the data set from a single node.""" - resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( + resolver: DataflowNodeToSqlSubqueryVisitor = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=DunderColumnAssociationResolver(), semantic_manifest_lookup=simple_semantic_manifest_lookup, ) @@ -95,7 +95,7 @@ def test_joined_node_data_set( time_spine_sources: Mapping[TimeGranularity, TimeSpineSource], ) -> None: """Tests getting the data set from a dataflow plan with a join.""" - resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( + resolver: DataflowNodeToSqlSubqueryVisitor = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=DunderColumnAssociationResolver(), semantic_manifest_lookup=simple_semantic_manifest_lookup, ) diff --git a/tests_metricflow/dataflow/builder/test_node_evaluator.py b/tests_metricflow/dataflow/builder/test_node_evaluator.py index 9b2ce6162b..9493174ee9 100644 --- a/tests_metricflow/dataflow/builder/test_node_evaluator.py +++ b/tests_metricflow/dataflow/builder/test_node_evaluator.py @@ -15,7 +15,6 @@ from metricflow_semantics.sql.sql_join_type import SqlJoinType from metricflow_semantics.time.granularity import ExpandedTimeGranularity -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.node_evaluator import ( JoinLinkableInstancesRecipe, LinkableInstanceSatisfiabilityEvaluation, @@ -26,6 +25,7 @@ from metricflow.dataflow.nodes.join_to_base import ValidityWindowJoinDescription from metricflow.dataset.dataset_classes import DataSet from metricflow.plan_conversion.node_processor import PreJoinNodeProcessor +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from tests_metricflow.fixtures.manifest_fixtures import MetricFlowEngineTestFixture, SemanticManifestSetup logger = logging.getLogger(__name__) @@ -38,7 +38,7 @@ def node_evaluator( """Return a node evaluator using the nodes in semantic_model_name_to_nodes.""" mf_engine_fixture = mf_engine_test_fixture_mapping[SemanticManifestSetup.SIMPLE_MANIFEST] - node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( + node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=mf_engine_fixture.column_association_resolver, semantic_manifest_lookup=mf_engine_fixture.semantic_manifest_lookup, ) @@ -59,7 +59,7 @@ def make_multihop_node_evaluator( desired_linkable_specs: Sequence[LinkableInstanceSpec], ) -> NodeEvaluatorForLinkableInstances: """Return a node evaluator using the nodes in multihop_semantic_model_name_to_nodes.""" - node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( + node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=DunderColumnAssociationResolver(), semantic_manifest_lookup=semantic_manifest_lookup_with_multihop_links, ) @@ -511,7 +511,7 @@ def test_node_evaluator_with_scd_target( scd_semantic_manifest_lookup: SemanticManifestLookup, ) -> None: """Tests the case where the joined node is an SCD with a validity window filter.""" - node_data_set_resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( + node_data_set_resolver: DataflowNodeToSqlSubqueryVisitor = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=DunderColumnAssociationResolver(), semantic_manifest_lookup=scd_semantic_manifest_lookup, ) diff --git a/tests_metricflow/examples/test_node_sql.py b/tests_metricflow/examples/test_node_sql.py index 1d7f512982..68b5c5716b 100644 --- a/tests_metricflow/examples/test_node_sql.py +++ b/tests_metricflow/examples/test_node_sql.py @@ -13,12 +13,12 @@ from metricflow_semantics.specs.time_dimension_spec import TimeDimensionSpec from metricflow_semantics.time.granularity import ExpandedTimeGranularity -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.nodes.filter_elements import FilterElementsNode from metricflow.dataflow.nodes.metric_time_transform import MetricTimeDimensionTransformNode from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.plan_conversion.to_sql_plan.dataflow_to_sql import DataflowToSqlPlanConverter +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from metricflow.protocols.sql_client import SqlClient from metricflow.sql.render.sql_plan_renderer import SqlPlanRenderer @@ -43,7 +43,7 @@ def test_view_sql_generated_at_a_node( semantic_manifest_lookup=simple_semantic_manifest_lookup, ) sql_renderer: SqlPlanRenderer = sql_client.sql_plan_renderer - node_output_resolver = DataflowPlanNodeOutputDataSetResolver( + node_output_resolver = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=column_association_resolver, semantic_manifest_lookup=simple_semantic_manifest_lookup, ) diff --git a/tests_metricflow/fixtures/manifest_fixtures.py b/tests_metricflow/fixtures/manifest_fixtures.py index 7fad5dc198..82fa5980f6 100644 --- a/tests_metricflow/fixtures/manifest_fixtures.py +++ b/tests_metricflow/fixtures/manifest_fixtures.py @@ -46,13 +46,13 @@ from metricflow_semantics.test_helpers.time_helpers import ConfigurableTimeSource from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder -from metricflow.dataflow.builder.node_data_set import DataflowPlanNodeOutputDataSetResolver from metricflow.dataflow.builder.source_node import SourceNodeBuilder, SourceNodeSet from metricflow.dataflow.nodes.read_sql_source import ReadSqlSourceNode from metricflow.dataset.convert_semantic_model import SemanticModelToDataSetConverter from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet from metricflow.engine.metricflow_engine import MetricFlowEngine from metricflow.plan_conversion.to_sql_plan.dataflow_to_sql import DataflowToSqlPlanConverter +from metricflow.plan_conversion.to_sql_plan.dataflow_to_subquery import DataflowNodeToSqlSubqueryVisitor from metricflow.protocols.sql_client import SqlClient logger = logging.getLogger(__name__) @@ -160,7 +160,7 @@ class MetricFlowEngineTestFixture: metricflow_engine: MetricFlowEngine source_node_builder: SourceNodeBuilder - _node_output_resolver: DataflowPlanNodeOutputDataSetResolver + _node_output_resolver: DataflowNodeToSqlSubqueryVisitor @staticmethod def from_parameters( # noqa: D102 @@ -172,7 +172,7 @@ def from_parameters( # noqa: D102 column_association_resolver = DunderColumnAssociationResolver() source_node_builder = SourceNodeBuilder(column_association_resolver, semantic_manifest_lookup) source_node_set = source_node_builder.create_from_data_sets(list(data_set_mapping.values())) - node_output_resolver = DataflowPlanNodeOutputDataSetResolver( + node_output_resolver = DataflowNodeToSqlSubqueryVisitor( column_association_resolver=column_association_resolver, semantic_manifest_lookup=semantic_manifest_lookup, ) diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0.sql index f5ab1e4855..59b42f42e8 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0_optimized.sql index 000b359031..04592fb874 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0.sql index d68cc6cb82..e397e7821b 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - , subq_14.visit__referrer_id - ) subq_15 + subq_13.metric_time__day + , subq_13.visit__referrer_id + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index 2086c63afc..084f2098a5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index 67f0a2ad66..d1bef8e637 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > subq_9.metric_time__month - INTERVAL 1 month + subq_5.metric_time__month > subq_8.metric_time__month - INTERVAL 1 month ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index 8043bcfd4e..a679f1bbfc 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > subq_23.metric_time__month - INTERVAL 1 month + sma_28019_cte.metric_time__month > subq_22.metric_time__month - INTERVAL 1 month ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0.sql index e8f94f67cc..612329dd45 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0_optimized.sql index e0a44ef52f..0bb6c09c42 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_21.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_20.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index 7465fe603a..731887e25f 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > subq_11.metric_time__day - INTERVAL 7 day + subq_7.metric_time__day > subq_10.metric_time__day - INTERVAL 7 day ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index ba879691a4..a9a195305a 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > subq_27.metric_time__day - INTERVAL 7 day + subq_23.metric_time__day > subq_26.metric_time__day - INTERVAL 7 day ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0.sql index 69a25cd489..2ce2879993 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.visit__referrer_id - ) subq_5 + subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.visit__referrer_id - ) subq_17 + subq_15.visit__referrer_id + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0_optimized.sql index 729f9a1754..3a21294328 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0.sql index d789205699..bba7e9e07e 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > subq_11.metric_time__day - INTERVAL 7 day + subq_7.metric_time__day > subq_10.metric_time__day - INTERVAL 7 day ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0_optimized.sql index 48ca2a9235..6236b822b5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > subq_27.metric_time__day - INTERVAL 7 day + subq_23.metric_time__day > subq_26.metric_time__day - INTERVAL 7 day ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0.sql index 198f58f891..250a1d5f32 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - , subq_4.visit__referrer_id - ) subq_5 + subq_5.metric_time__day + , subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - INTERVAL 7 day + subq_9.metric_time__day > subq_12.metric_time__day - INTERVAL 7 day ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - , subq_16.visit__referrer_id - ) subq_17 + subq_15.metric_time__day + , subq_15.visit__referrer_id + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index d252ddaed7..a6e9922aba 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/DuckDB/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > subq_30.metric_time__day - INTERVAL 7 day + subq_26.metric_time__day > subq_29.metric_time__day - INTERVAL 7 day ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql index 1b86cca4bc..1dc319e367 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - INTERVAL 7 day + subq_5.metric_time__day > subq_8.metric_time__day - INTERVAL 7 day ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql index 8f9ca82ad0..03a8c48bac 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - INTERVAL 7 day + sma_28019_cte.metric_time__day > subq_22.metric_time__day - INTERVAL 7 day ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index 0640226e4d..6a14596773 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS DOUBLE) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS DOUBLE) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - INTERVAL 7 day + subq_9.metric_time__day > subq_12.metric_time__day - INTERVAL 7 day ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - ) subq_17 + subq_15.metric_time__day + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index 679bf3b37b..c4c649aef9 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_35.metric_time__day - INTERVAL 7 day + sma_28019_cte.metric_time__day > subq_34.metric_time__day - INTERVAL 7 day ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0.sql index b97de249e7..77ba751d65 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.visit__referrer_id - ) subq_13 + subq_11.visit__referrer_id + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0_optimized.sql index e681c6fd8c..6b76198de6 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql index 78e4c8fe52..45117e07e2 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - INTERVAL 7 day + subq_5.metric_time__day > subq_8.metric_time__day - INTERVAL 7 day ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql index c468e4c331..cc8ed25746 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - INTERVAL 7 day + sma_28019_cte.metric_time__day > subq_22.metric_time__day - INTERVAL 7 day ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql index 8173623856..9c3903c3ab 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - INTERVAL 7 day + subq_5.metric_time__day > subq_8.metric_time__day - INTERVAL 7 day ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql index e3e36d963b..85c7a418cb 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - INTERVAL 7 day + sma_28019_cte.metric_time__day > subq_22.metric_time__day - INTERVAL 7 day ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0.sql index c5fa85c3fa..6b2092de64 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - INTERVAL 7 day + subq_5.metric_time__day > subq_8.metric_time__day - INTERVAL 7 day ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql index 6a5a0bb6fd..4fc8163265 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/DuckDB/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - INTERVAL 7 day + sma_28019_cte.metric_time__day > subq_22.metric_time__day - INTERVAL 7 day ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_count_with_no_group_by__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_count_with_no_group_by__plan0.xml index 76441e3b99..615237c76d 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_count_with_no_group_by__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_count_with_no_group_by__plan0.xml @@ -6,15 +6,15 @@ docstring: - + - - + + - + @@ -28,8 +28,8 @@ docstring: - - + + @@ -397,42 +397,42 @@ docstring: - + - + - - - + + + - + - + - + - + - - + + - + @@ -450,16 +450,16 @@ docstring: - + - - + + - - + + @@ -467,239 +467,239 @@ docstring: - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -863,534 +863,534 @@ docstring: - - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml index 298eed6bc2..3f937b4292 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml @@ -6,19 +6,19 @@ docstring: - - + + - + - + @@ -34,11 +34,11 @@ docstring: - + - - + + @@ -51,14 +51,14 @@ docstring: - + - + - + @@ -67,18 +67,18 @@ docstring: - + - + - + @@ -130,12 +130,12 @@ docstring: - + - + @@ -203,7 +203,7 @@ docstring: - + @@ -214,7 +214,7 @@ docstring: - + @@ -224,7 +224,7 @@ docstring: - + @@ -232,12 +232,12 @@ docstring: - + - + @@ -437,12 +437,12 @@ docstring: - + - + @@ -608,15 +608,15 @@ docstring: - + - - - + + + - - + + @@ -624,78 +624,78 @@ docstring: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -763,10 +763,10 @@ docstring: - + - + @@ -774,50 +774,50 @@ docstring: - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -835,19 +835,19 @@ docstring: - + - + - + - - + + @@ -855,239 +855,239 @@ docstring: - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - + + - + - - + + - + + + + + + + + + + + + + + + + + + + + + - + @@ -1251,260 +1251,260 @@ docstring: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1512,273 +1512,273 @@ docstring: - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate__plan0.xml index ce9268fdfa..7a71a3e79b 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate__plan0.xml @@ -6,17 +6,17 @@ docstring: - + - + - + - + @@ -35,8 +35,8 @@ docstring: - - + + @@ -425,10 +425,10 @@ docstring: - + - + @@ -436,51 +436,51 @@ docstring: - + - + - + - + - - + + - + - + - + - + - + - - + + - + @@ -503,16 +503,16 @@ docstring: - + - - + + - - + + @@ -521,244 +521,244 @@ docstring: - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -922,260 +922,260 @@ docstring: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1183,273 +1183,273 @@ docstring: - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_constant_properties__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_constant_properties__plan0.xml index b1300974bd..210ffdc888 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_constant_properties__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_constant_properties__plan0.xml @@ -6,21 +6,21 @@ docstring: - - + + - + - + - + @@ -44,8 +44,8 @@ docstring: - - + + @@ -448,12 +448,12 @@ docstring: - + - + - + @@ -461,60 +461,60 @@ docstring: - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + @@ -542,16 +542,16 @@ docstring: - + - - + + - - + + @@ -561,249 +561,249 @@ docstring: - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -967,260 +967,260 @@ docstring: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1228,273 +1228,273 @@ docstring: - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_no_group_by__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_no_group_by__plan0.xml index 3c270d9a90..c7b444e00c 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_no_group_by__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_no_group_by__plan0.xml @@ -6,18 +6,18 @@ docstring: - + - + - + @@ -31,8 +31,8 @@ docstring: - - + + @@ -400,42 +400,42 @@ docstring: - + - + - - - + + + - + - + - + - + - - + + - + @@ -453,16 +453,16 @@ docstring: - + - - + + - - + + @@ -470,239 +470,239 @@ docstring: - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -866,534 +866,534 @@ docstring: - - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_window__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_window__plan0.xml index 272d8cfa23..149672390e 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_window__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/test_conversion_rate_with_window__plan0.xml @@ -6,21 +6,21 @@ docstring: - - + + - + - + - + @@ -44,8 +44,8 @@ docstring: - - + + @@ -448,12 +448,12 @@ docstring: - + - + - + @@ -461,58 +461,58 @@ docstring: - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + @@ -535,16 +535,16 @@ docstring: - + - - + + - - + + @@ -553,244 +553,244 @@ docstring: - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -954,260 +954,260 @@ docstring: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1215,273 +1215,273 @@ docstring: - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt b/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt index 237da5c0be..c58143f060 100644 --- a/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt +++ b/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt @@ -6,11 +6,11 @@ docstring: sql_without_cte: -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day, subq_36.metric_time__day) AS metric_time__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest, subq_36.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day, subq_19.metric_time__day) AS metric_time__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest, subq_19.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views - , MAX(CAST(subq_36.bookings AS DOUBLE) / CAST(NULLIF(subq_36.views, 0) AS DOUBLE)) AS bookings_per_view + , MAX(subq_16.views) AS views + , MAX(CAST(subq_19.bookings AS DOUBLE) / CAST(NULLIF(subq_19.views, 0) AS DOUBLE)) AS bookings_per_view FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] @@ -62,29 +62,29 @@ sql_without_cte: GROUP BY subq_10.metric_time__day , listings_latest_src_28000.country - ) subq_17 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day ) FULL OUTER JOIN ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(subq_26.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_26.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_17.metric_time__day, subq_18.metric_time__day) AS metric_time__day + , COALESCE(subq_17.listing__country_latest, subq_18.listing__country_latest) AS listing__country_latest + , MAX(subq_17.bookings) AS bookings + , MAX(subq_18.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_19.metric_time__day AS metric_time__day + subq_1.metric_time__day AS metric_time__day , listings_latest_src_28000.country AS listing__country_latest - , SUM(subq_19.bookings) AS bookings + , SUM(subq_1.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -93,24 +93,24 @@ sql_without_cte: , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_19 + ) subq_1 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_19.listing = listings_latest_src_28000.listing_id + subq_1.listing = listings_latest_src_28000.listing_id GROUP BY - subq_19.metric_time__day + subq_1.metric_time__day , listings_latest_src_28000.country - ) subq_26 + ) subq_17 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'metric_time__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_28.metric_time__day AS metric_time__day + subq_10.metric_time__day AS metric_time__day , listings_latest_src_28000.country AS listing__country_latest - , SUM(subq_28.views) AS views + , SUM(subq_10.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -119,34 +119,34 @@ sql_without_cte: , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_28 + ) subq_10 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_28.listing = listings_latest_src_28000.listing_id + subq_10.listing = listings_latest_src_28000.listing_id GROUP BY - subq_28.metric_time__day + subq_10.metric_time__day , listings_latest_src_28000.country - ) subq_35 + ) subq_18 ON ( - subq_26.listing__country_latest = subq_35.listing__country_latest + subq_17.listing__country_latest = subq_18.listing__country_latest ) AND ( - subq_26.metric_time__day = subq_35.metric_time__day + subq_17.metric_time__day = subq_18.metric_time__day ) GROUP BY - COALESCE(subq_26.metric_time__day, subq_35.metric_time__day) - , COALESCE(subq_26.listing__country_latest, subq_35.listing__country_latest) - ) subq_36 + COALESCE(subq_17.metric_time__day, subq_18.metric_time__day) + , COALESCE(subq_17.listing__country_latest, subq_18.listing__country_latest) + ) subq_19 ON ( - COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) = subq_36.listing__country_latest + COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) = subq_19.listing__country_latest ) AND ( - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) = subq_36.metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) = subq_19.metric_time__day ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day, subq_36.metric_time__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest, subq_36.listing__country_latest) + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day, subq_19.metric_time__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest, subq_19.listing__country_latest) sql_with_cte: @@ -157,9 +157,9 @@ sql_with_cte: -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_39.metric_time__day AS metric_time__day + subq_22.metric_time__day AS metric_time__day , listings_latest_src_28000.country AS listing__country_latest - , SUM(subq_39.bookings) AS bookings + , SUM(subq_22.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -168,13 +168,13 @@ sql_with_cte: , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_22 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_39.listing = listings_latest_src_28000.listing_id + subq_22.listing = listings_latest_src_28000.listing_id GROUP BY - subq_39.metric_time__day + subq_22.metric_time__day , listings_latest_src_28000.country ) @@ -184,9 +184,9 @@ sql_with_cte: -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_48.metric_time__day AS metric_time__day + subq_31.metric_time__day AS metric_time__day , listings_latest_src_28000.country AS listing__country_latest - , SUM(subq_48.views) AS views + , SUM(subq_31.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -195,22 +195,22 @@ sql_with_cte: , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_48 + ) subq_31 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_48.listing = listings_latest_src_28000.listing_id + subq_31.listing = listings_latest_src_28000.listing_id GROUP BY - subq_48.metric_time__day + subq_31.metric_time__day , listings_latest_src_28000.country ) SELECT - COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day, subq_58.metric_time__day) AS metric_time__day - , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest, subq_58.listing__country_latest) AS listing__country_latest + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day, subq_40.metric_time__day) AS metric_time__day + , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest, subq_40.listing__country_latest) AS listing__country_latest , MAX(cm_0_cte.bookings) AS bookings , MAX(cm_1_cte.views) AS views - , MAX(CAST(subq_58.bookings AS DOUBLE) / CAST(NULLIF(subq_58.views, 0) AS DOUBLE)) AS bookings_per_view + , MAX(CAST(subq_40.bookings AS DOUBLE) / CAST(NULLIF(subq_40.views, 0) AS DOUBLE)) AS bookings_per_view FROM cm_0_cte cm_0_cte FULL OUTER JOIN cm_1_cte cm_1_cte @@ -239,13 +239,13 @@ sql_with_cte: GROUP BY COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day) , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest) - ) subq_58 + ) subq_40 ON ( - COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest) = subq_58.listing__country_latest + COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest) = subq_40.listing__country_latest ) AND ( - COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day) = subq_58.metric_time__day + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day) = subq_40.metric_time__day ) GROUP BY - COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day, subq_58.metric_time__day) - , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest, subq_58.listing__country_latest) + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day, subq_40.metric_time__day) + , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest, subq_40.listing__country_latest) diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index c9d4da08c5..35f8d3db33 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index b9b94ef7a7..e3da558dd6 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2000-01-01' AND '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql index b2b07b6456..743b8112d6 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > subq_3.metric_time__day - INTERVAL 2 month + subq_3.metric_time__day > subq_4.metric_time__day - INTERVAL 2 month ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index 2bc9d97bd0..c747035989 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/DuckDB/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2019-11-01' AND '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > subq_12.metric_time__day - INTERVAL 2 month + subq_12.metric_time__day > subq_13.metric_time__day - INTERVAL 2 month ) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0.sql index 2fd1b887cc..bcab7c7c12 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > subq_11.metric_time__day - INTERVAL 7 day + subq_7.metric_time__day > subq_10.metric_time__day - INTERVAL 7 day ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__martian_day - ) subq_15 + subq_13.metric_time__martian_day + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) -) subq_16 + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index f752973ec4..8cc7e5e079 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY - subq_18.martian_day - ) subq_21 + subq_17.martian_day + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > subq_27.metric_time__day - INTERVAL 7 day + subq_23.metric_time__day > subq_26.metric_time__day - INTERVAL 7 day ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) -) subq_32 + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0.sql index 35481ddb4a..aa232a090b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - INTERVAL 7 day + subq_9.metric_time__day > subq_12.metric_time__day - INTERVAL 7 day ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__martian_day - ) subq_17 + subq_15.metric_time__martian_day + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) -) subq_18 + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index a42790cb01..2aea7a1ccd 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > subq_31.metric_time__day - INTERVAL 7 day + subq_27.metric_time__day > subq_30.metric_time__day - INTERVAL 7 day ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) -) subq_36 + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index 712e6681d8..c3f277248c 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - INTERVAL 7 day + subq_9.metric_time__day > subq_12.metric_time__day - INTERVAL 7 day ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index 6bda1913ba..01085ca8c9 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_24.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_23.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > subq_31.metric_time__day - INTERVAL 7 day + subq_27.metric_time__day > subq_30.metric_time__day - INTERVAL 7 day ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0.sql index 0f65b8b553..88fcec93e1 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN subq_4.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day <= subq_4.ds__martian_day__last_value__lead - THEN subq_4.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day + WHEN subq_8.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day <= subq_8.ds__martian_day__last_value__lead + THEN subq_8.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY - subq_9.metric_time__day - ) subq_10 -) subq_11 + subq_13.metric_time__day + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0_optimized.sql index 60c350ffa7..263af333e8 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN subq_16.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day <= subq_16.ds__martian_day__last_value__lead - THEN subq_16.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day + WHEN subq_24.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day <= subq_24.ds__martian_day__last_value__lead + THEN subq_24.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY - subq_17.ds__day__lead -) subq_23 + subq_25.ds__day__lead +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index ecb783d475..7462d3616b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATE_TRUNC('month', subq_5.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATE_TRUNC('month', subq_9.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN subq_4.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day <= subq_4.ds__martian_day__last_value__lead - THEN subq_4.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day + WHEN subq_8.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day <= subq_8.ds__martian_day__last_value__lead + THEN subq_8.ds__martian_day__first_value__lead + INTERVAL (cte_2.ds__day__row_number - 1) day ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - ) subq_11 -) subq_12 + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index 9aea062192..e9ee9ae008 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN subq_17.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day <= subq_17.ds__martian_day__last_value__lead - THEN subq_17.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day + WHEN subq_25.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day <= subq_25.ds__martian_day__last_value__lead + THEN subq_25.ds__martian_day__first_value__lead + INTERVAL (cte_6.ds__day__row_number - 1) day ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY - subq_21.martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) - , EXTRACT(year FROM subq_18.ds__day__lead) -) subq_25 + subq_29.martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) + , EXTRACT(year FROM subq_26.ds__day__lead) +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0.sql index fa95f7e2a5..6c33a0f003 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY - subq_9.booking__ds__martian_day - ) subq_10 - ) subq_11 + subq_8.booking__ds__martian_day + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) -) subq_12 + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0_optimized.sql index 090fed233c..4390109145 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_14.ds + DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_13.ds GROUP BY - subq_14.martian_day -) subq_18 + subq_13.martian_day +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index face17e258..8d26c89e41 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY - subq_11.listing__user__ds__martian_day -) subq_12 + subq_35.listing__user__ds__martian_day +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index eaf84be05b..a163eb4d0a 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/DuckDB/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY - subq_22.martian_day + subq_46.martian_day diff --git a/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml index 7988cd5e69..dbdb6223cf 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_execution.py/ExecutionPlan/DuckDB/test_multihop_joined_plan__ep_0.xml @@ -7,40 +7,40 @@ docstring: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index 3a6062017c..aacb52d960 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS DOUBLE) / CAST(NULLIF(subq_18.views, 0) AS DOUBLE) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS DOUBLE) / CAST(NULLIF(subq_17.views, 0) AS DOUBLE) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY - subq_15.ds__day - , subq_15.listing__country_latest - ) subq_16 - ) subq_17 + subq_14.ds__day + , subq_14.listing__country_latest + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY - COALESCE(subq_8.ds__day, subq_17.ds__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) -) subq_18 + COALESCE(subq_8.ds__day, subq_16.ds__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index fc27a90b6e..cb95211fe8 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY - subq_20.ds__day + subq_19.ds__day , sma_28014_cte.country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY - subq_29.ds__day + subq_28.ds__day , sma_28014_cte.country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY - COALESCE(subq_27.ds__day, subq_35.ds__day) - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) -) subq_36 + COALESCE(subq_26.ds__day, subq_34.ds__day) + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0.sql index 16d0c36be3..475ace2a4a 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: DuckDB -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0_optimized.sql index deb4291897..370d4f3dbd 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/DuckDB/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_combine_output_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_combine_output_node__plan0.xml index 671d2fb176..b4870d7a5f 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_combine_output_node__plan0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_combine_output_node__plan0.xml @@ -6,7 +6,7 @@ docstring: - + @@ -30,7 +30,7 @@ docstring: - + @@ -453,7 +453,7 @@ docstring: - + @@ -465,23 +465,23 @@ docstring: - + - + - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml index 27a1d242c7..f7b0ba15e7 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml @@ -6,17 +6,17 @@ docstring: - - + + - + - + - + @@ -40,8 +40,8 @@ docstring: - - + + @@ -2222,25 +2222,25 @@ docstring: - - + + - + - - + + - + - + - + @@ -2248,341 +2248,341 @@ docstring: - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -3154,364 +3154,364 @@ docstring: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_multi_join_node__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_multi_join_node__plan0.xml index 9a90120bf2..e082b784f1 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_multi_join_node__plan0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/test_multi_join_node__plan0.xml @@ -6,13 +6,13 @@ docstring: - + - - - - + + + + @@ -23,8 +23,8 @@ docstring: - - + + @@ -584,15 +584,15 @@ docstring: - - - - + + + + - + diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0.sql index 00aa81f84d..2d37bd0b29 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) -) subq_10 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0_optimized.sql index 99170ffa98..b77108f20a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index c0c3268fa8..96fa394706 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: DuckDB --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + subq_7.booking__is_instant + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) -) subq_12 + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index 67859c9f1b..a5f2595266 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql index 3824e51f2c..0561596c97 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index 06ee1ddb8c..5535f9cdfd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index e7ac33bbbf..cab5170cc3 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__week - ) subq_12 - ) subq_13 + subq_10.metric_time__week + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) -) subq_14 + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index 27737461df..c1bbd7a3e1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATE_TRUNC('week', time_spine_src_28006.ds) = time_spine_src_28006.ds GROUP BY DATE_TRUNC('week', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) -) subq_28 + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql index 4220dcd2e0..1fe5fdd5c6 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.metric_time__day - INTERVAL 14 day = subq_6.metric_time__day - ) subq_10 - ) subq_11 + subq_8.metric_time__day - INTERVAL 14 day = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql index 948f8402e1..bf2e99e844 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( time_spine_src_28006.ds - INTERVAL 14 day = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql index f025a5b0e3..3a694addc8 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.metric_time__day - INTERVAL 14 day = subq_6.metric_time__day - ) subq_10 - ) subq_11 + subq_8.metric_time__day - INTERVAL 14 day = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__quarter - ) subq_12 - ) subq_13 + subq_10.metric_time__quarter + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) -) subq_14 + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index ca94895765..17112224d6 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( time_spine_src_28006.ds - INTERVAL 14 day = sma_28009_cte.metric_time__day GROUP BY DATE_TRUNC('quarter', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) -) subq_28 + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index 814113fda2..236e1fd84a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - subq_13.metric_time__day - INTERVAL 1 month = subq_10.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day - INTERVAL 1 month = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index d1ff51240e..495cdb5d95 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATE_TRUNC('month', rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( rss_28018_cte.ds__day - INTERVAL 1 month = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index 44a022f1fb..8a65dc2aac 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - subq_13.metric_time__day - INTERVAL 1 month = subq_10.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day - INTERVAL 1 month = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__year - ) subq_16 - ) subq_17 + subq_14.metric_time__year + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) -) subq_18 + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index 5e12f42132..fdd652f226 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY rss_28018_cte.ds__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( rss_28018_cte.ds__day - INTERVAL 1 month = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) -) subq_36 + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 35b6aaf04b..b988daab42 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - subq_10.metric_time__day - INTERVAL 14 day = subq_7.metric_time__day - ) subq_11 + subq_9.metric_time__day - INTERVAL 14 day = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index 74406cf6d8..85bbef9662 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON time_spine_src_28006.ds - INTERVAL 14 day = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 2d8c9c40aa..951c440ae5 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index bb7b97f611..4c9e1a75f4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( time_spine_src_28006.ds - INTERVAL 1 week = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0.sql index 5975d41830..c84c2fec4b 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) - ) subq_10 - ) subq_11 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY - subq_14.metric_time__day - ) subq_15 - ) subq_16 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_19.metric_time__day - ) subq_20 - ) subq_21 + subq_6.metric_time__day + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql index 8d9bf1af41..97dd6313f2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) -) subq_34 + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index a28f87d3c3..756f47d6dd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + subq_11.metric_time__day + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index c577329a06..06474e08a7 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATE_TRUNC('month', time_spine_src_28006.ds) = subq_22.metric_time__day - ) subq_26 + DATE_TRUNC('month', time_spine_src_28006.ds) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0.sql index 27d3e680e1..01e21eb467 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0_optimized.sql index d61665f8ea..2f1a95fd07 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql index 74ad0b6660..7ffd8d9e5b 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index 1807061266..af4a55d796 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index 9adac6b080..023db308cc 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__month - ) subq_14 - ) subq_15 + subq_12.metric_time__month + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) -) subq_16 + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index da13fedcc1..aa7429584a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON time_spine_src_28006.ds - INTERVAL 1 week = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) -) subq_32 + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql index 096248f5d2..f5feabbb98 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - ) subq_12 - ) subq_13 + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) -) subq_14 + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index 22154d994c..4f4ace45ca 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( time_spine_src_28006.ds , DATE_TRUNC('month', time_spine_src_28006.ds) , DATE_TRUNC('year', time_spine_src_28006.ds) - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) -) subq_28 + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql index 84f8f72bd6..035c30ce60 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.booking__ds__day - INTERVAL 14 day = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + subq_8.booking__ds__day - INTERVAL 14 day = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql index 71f8c7e514..fe0b30bb12 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/DuckDB/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( time_spine_src_28006.ds - INTERVAL 14 day = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_explain.py/str/test_optimization_level__result.txt b/tests_metricflow/snapshots/test_explain.py/str/test_optimization_level__result.txt index a6d27bb8cd..09033daf88 100644 --- a/tests_metricflow/snapshots/test_explain.py/str/test_optimization_level__result.txt +++ b/tests_metricflow/snapshots/test_explain.py/str/test_optimization_level__result.txt @@ -7,10 +7,10 @@ expectation_description: --- O4: SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( SELECT subq_1.metric_time__day AS metric_time__day @@ -50,16 +50,16 @@ O4: GROUP BY subq_10.metric_time__day , listings_latest_src_10000.country - ) subq_17 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) O5: WITH sma_10014_cte AS ( diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql index a8cf1036ed..d23fc3f4a8 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - subq_13.metric_time__day - INTERVAL 14 day = subq_10.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day - INTERVAL 14 day = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 04ccd15223..db84b0cd38 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( rss_28018_cte.ds__day - INTERVAL 14 day = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql index 645f31182d..4726764c15 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - ) subq_5 + subq_5.metric_time__day + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql index a29cff3999..040dd31242 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATE_TRUNC('week', ds) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0.sql index 8ec951e626..7cc2aba975 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.metric_time__day - INTERVAL 14 day = subq_6.metric_time__day - ) subq_10 - ) subq_11 + subq_8.metric_time__day - INTERVAL 14 day = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__extract_dow - ) subq_12 - ) subq_13 + subq_10.metric_time__extract_dow + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) -) subq_14 + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql index 823a050c81..d4e0b458b2 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( time_spine_src_28006.ds - INTERVAL 14 day = sma_28009_cte.metric_time__day GROUP BY EXTRACT(isodow FROM time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) -) subq_28 + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index 6fa0b2a72c..a644e45832 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY - subq_10.listing__user__bio_added_ts__minute -) subq_11 + subq_22.listing__user__bio_added_ts__minute +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index 0e9ca352a9..9a4387a9c7 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY - subq_20.user__bio_added_ts__minute + subq_32.user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0.sql index 9163159724..34e52201ec 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , EXTRACT(isodow FROM time_spine_src_28005.ts) AS ts__extract_dow , EXTRACT(doy FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__hour - ) subq_4 + subq_4.metric_time__hour + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index ab05a47a39..446dcd5610 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/DuckDB/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: DuckDB -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATE_TRUNC('hour', archived_at) BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql index 4dc4d730e1..a3ea95af60 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0.sql @@ -6,21 +6,21 @@ sql_engine: DuckDB --- -- Pass Only Elements: ['listing',] SELECT - subq_8.listing + subq_11.listing FROM ( -- Constrain Output with WHERE SELECT - subq_7.listing - , subq_7.lux_listing - , subq_7.listing__lux_listing - , subq_7.listing__bookings + subq_10.listing + , subq_10.lux_listing + , subq_10.listing__lux_listing + , subq_10.listing__bookings FROM ( -- Join Standard Outputs SELECT - subq_6.listing__bookings AS listing__bookings - , subq_0.listing AS listing - , subq_0.lux_listing AS lux_listing - , subq_0.listing__lux_listing AS listing__lux_listing + subq_9.listing__bookings AS listing__bookings + , subq_3.listing AS listing + , subq_3.lux_listing AS lux_listing + , subq_3.listing__lux_listing AS listing__lux_listing FROM ( -- Read Elements From Semantic Model 'lux_listing_mapping' SELECT @@ -28,128 +28,128 @@ FROM ( , lux_listing_mapping_src_28000.lux_listing_id AS lux_listing , lux_listing_mapping_src_28000.lux_listing_id AS listing__lux_listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_28000 - ) subq_0 + ) subq_3 FULL OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_5.listing - , subq_5.listing__bookings + subq_8.listing + , subq_8.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_4.listing - , subq_4.bookings AS listing__bookings + subq_7.listing + , subq_7.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_3.listing - , SUM(subq_3.bookings) AS bookings + subq_6.listing + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_2.listing - , subq_2.bookings + subq_5.listing + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.ds__day AS metric_time__day - , subq_1.ds__week AS metric_time__week - , subq_1.ds__month AS metric_time__month - , subq_1.ds__quarter AS metric_time__quarter - , subq_1.ds__year AS metric_time__year - , subq_1.ds__extract_year AS metric_time__extract_year - , subq_1.ds__extract_quarter AS metric_time__extract_quarter - , subq_1.ds__extract_month AS metric_time__extract_month - , subq_1.ds__extract_day AS metric_time__extract_day - , subq_1.ds__extract_dow AS metric_time__extract_dow - , subq_1.ds__extract_doy AS metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -242,18 +242,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_1 - ) subq_2 - ) subq_3 + ) subq_4 + ) subq_5 + ) subq_6 GROUP BY - subq_3.listing - ) subq_4 - ) subq_5 - ) subq_6 + subq_6.listing + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_0.listing = subq_6.listing - ) subq_7 + subq_3.listing = subq_9.listing + ) subq_10 WHERE listing__bookings > 2 -) subq_8 +) subq_11 GROUP BY - subq_8.listing + subq_11.listing diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql index 48d70e9ee4..6e4adfc35d 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_distinct_values_query_with_metric_filter__plan0_optimized.sql @@ -11,7 +11,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_15.listing__bookings AS listing__bookings + subq_18.listing__bookings AS listing__bookings , lux_listing_mapping_src_28000.listing_id AS listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_28000 FULL OUTER JOIN ( @@ -29,13 +29,13 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 + ) subq_15 GROUP BY listing - ) subq_15 + ) subq_18 ON - lux_listing_mapping_src_28000.listing_id = subq_15.listing -) subq_16 + lux_listing_mapping_src_28000.listing_id = subq_18.listing +) subq_19 WHERE listing__bookings > 2 GROUP BY listing diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql index a66792b0dd..12f6ad379e 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql @@ -6,320 +6,320 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.bookers + subq_13.bookers FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_10.bookers) AS bookers + COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers',] SELECT - subq_9.bookers + subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.guest__booking_value - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.guest__booking_value + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.guest__booking_value AS guest__booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.guest__booking_value AS guest__booking_value + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -412,129 +412,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['guest', 'guest__booking_value'] SELECT - subq_6.guest - , subq_6.guest__booking_value + subq_8.guest + , subq_8.guest__booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_5.guest - , subq_5.booking_value AS guest__booking_value + subq_7.guest + , subq_7.booking_value AS guest__booking_value FROM ( -- Aggregate Measures SELECT - subq_4.guest - , SUM(subq_4.booking_value) AS booking_value + subq_6.guest + , SUM(subq_6.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'guest'] SELECT - subq_3.guest - , subq_3.booking_value + subq_5.guest + , subq_5.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -627,18 +627,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY - subq_4.guest - ) subq_5 - ) subq_6 - ) subq_7 + subq_6.guest + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.guest = subq_7.guest - ) subq_8 + subq_4.guest = subq_9.guest + ) subq_10 WHERE guest__booking_value > 1.00 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql index 51a8845229..b3737394c8 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql @@ -23,15 +23,16 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_18.guest__booking_value AS guest__booking_value - , subq_13.bookers AS bookers + subq_20.guest__booking_value AS guest__booking_value + , subq_15.bookers AS bookers FROM ( -- Read From CTE For node_id=sma_28009 SELECT guest + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_15 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['booking_value', 'guest'] @@ -44,8 +45,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY guest - ) subq_18 + ) subq_20 ON - subq_13.guest = subq_18.guest -) subq_19 + subq_15.guest = subq_20.guest +) subq_21 WHERE guest__booking_value > 1.00 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0.sql index 74e84b9dea..7898400b4f 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0.sql @@ -4,227 +4,227 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_22.listings + subq_33.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_21.listings) AS listings + SUM(subq_32.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_20.listings + subq_31.listings FROM ( -- Constrain Output with WHERE SELECT - subq_19.ds__day - , subq_19.ds__week - , subq_19.ds__month - , subq_19.ds__quarter - , subq_19.ds__year - , subq_19.ds__extract_year - , subq_19.ds__extract_quarter - , subq_19.ds__extract_month - , subq_19.ds__extract_day - , subq_19.ds__extract_dow - , subq_19.ds__extract_doy - , subq_19.created_at__day - , subq_19.created_at__week - , subq_19.created_at__month - , subq_19.created_at__quarter - , subq_19.created_at__year - , subq_19.created_at__extract_year - , subq_19.created_at__extract_quarter - , subq_19.created_at__extract_month - , subq_19.created_at__extract_day - , subq_19.created_at__extract_dow - , subq_19.created_at__extract_doy - , subq_19.listing__ds__day - , subq_19.listing__ds__week - , subq_19.listing__ds__month - , subq_19.listing__ds__quarter - , subq_19.listing__ds__year - , subq_19.listing__ds__extract_year - , subq_19.listing__ds__extract_quarter - , subq_19.listing__ds__extract_month - , subq_19.listing__ds__extract_day - , subq_19.listing__ds__extract_dow - , subq_19.listing__ds__extract_doy - , subq_19.listing__created_at__day - , subq_19.listing__created_at__week - , subq_19.listing__created_at__month - , subq_19.listing__created_at__quarter - , subq_19.listing__created_at__year - , subq_19.listing__created_at__extract_year - , subq_19.listing__created_at__extract_quarter - , subq_19.listing__created_at__extract_month - , subq_19.listing__created_at__extract_day - , subq_19.listing__created_at__extract_dow - , subq_19.listing__created_at__extract_doy - , subq_19.metric_time__day - , subq_19.metric_time__week - , subq_19.metric_time__month - , subq_19.metric_time__quarter - , subq_19.metric_time__year - , subq_19.metric_time__extract_year - , subq_19.metric_time__extract_quarter - , subq_19.metric_time__extract_month - , subq_19.metric_time__extract_day - , subq_19.metric_time__extract_dow - , subq_19.metric_time__extract_doy - , subq_19.listing - , subq_19.user - , subq_19.listing__user - , subq_19.country_latest - , subq_19.is_lux_latest - , subq_19.capacity_latest - , subq_19.listing__country_latest - , subq_19.listing__is_lux_latest - , subq_19.listing__capacity_latest - , subq_19.user__visit_buy_conversion_rate - , subq_19.listings - , subq_19.largest_listing - , subq_19.smallest_listing + subq_30.ds__day + , subq_30.ds__week + , subq_30.ds__month + , subq_30.ds__quarter + , subq_30.ds__year + , subq_30.ds__extract_year + , subq_30.ds__extract_quarter + , subq_30.ds__extract_month + , subq_30.ds__extract_day + , subq_30.ds__extract_dow + , subq_30.ds__extract_doy + , subq_30.created_at__day + , subq_30.created_at__week + , subq_30.created_at__month + , subq_30.created_at__quarter + , subq_30.created_at__year + , subq_30.created_at__extract_year + , subq_30.created_at__extract_quarter + , subq_30.created_at__extract_month + , subq_30.created_at__extract_day + , subq_30.created_at__extract_dow + , subq_30.created_at__extract_doy + , subq_30.listing__ds__day + , subq_30.listing__ds__week + , subq_30.listing__ds__month + , subq_30.listing__ds__quarter + , subq_30.listing__ds__year + , subq_30.listing__ds__extract_year + , subq_30.listing__ds__extract_quarter + , subq_30.listing__ds__extract_month + , subq_30.listing__ds__extract_day + , subq_30.listing__ds__extract_dow + , subq_30.listing__ds__extract_doy + , subq_30.listing__created_at__day + , subq_30.listing__created_at__week + , subq_30.listing__created_at__month + , subq_30.listing__created_at__quarter + , subq_30.listing__created_at__year + , subq_30.listing__created_at__extract_year + , subq_30.listing__created_at__extract_quarter + , subq_30.listing__created_at__extract_month + , subq_30.listing__created_at__extract_day + , subq_30.listing__created_at__extract_dow + , subq_30.listing__created_at__extract_doy + , subq_30.metric_time__day + , subq_30.metric_time__week + , subq_30.metric_time__month + , subq_30.metric_time__quarter + , subq_30.metric_time__year + , subq_30.metric_time__extract_year + , subq_30.metric_time__extract_quarter + , subq_30.metric_time__extract_month + , subq_30.metric_time__extract_day + , subq_30.metric_time__extract_dow + , subq_30.metric_time__extract_doy + , subq_30.listing + , subq_30.user + , subq_30.listing__user + , subq_30.country_latest + , subq_30.is_lux_latest + , subq_30.capacity_latest + , subq_30.listing__country_latest + , subq_30.listing__is_lux_latest + , subq_30.listing__capacity_latest + , subq_30.user__visit_buy_conversion_rate + , subq_30.listings + , subq_30.largest_listing + , subq_30.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_18.user__visit_buy_conversion_rate AS user__visit_buy_conversion_rate - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_29.user__visit_buy_conversion_rate AS user__visit_buy_conversion_rate + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.created_at__day AS created_at__day + , subq_13.created_at__week AS created_at__week + , subq_13.created_at__month AS created_at__month + , subq_13.created_at__quarter AS created_at__quarter + , subq_13.created_at__year AS created_at__year + , subq_13.created_at__extract_year AS created_at__extract_year + , subq_13.created_at__extract_quarter AS created_at__extract_quarter + , subq_13.created_at__extract_month AS created_at__extract_month + , subq_13.created_at__extract_day AS created_at__extract_day + , subq_13.created_at__extract_dow AS created_at__extract_dow + , subq_13.created_at__extract_doy AS created_at__extract_doy + , subq_13.listing__ds__day AS listing__ds__day + , subq_13.listing__ds__week AS listing__ds__week + , subq_13.listing__ds__month AS listing__ds__month + , subq_13.listing__ds__quarter AS listing__ds__quarter + , subq_13.listing__ds__year AS listing__ds__year + , subq_13.listing__ds__extract_year AS listing__ds__extract_year + , subq_13.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_13.listing__ds__extract_month AS listing__ds__extract_month + , subq_13.listing__ds__extract_day AS listing__ds__extract_day + , subq_13.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_13.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_13.listing__created_at__day AS listing__created_at__day + , subq_13.listing__created_at__week AS listing__created_at__week + , subq_13.listing__created_at__month AS listing__created_at__month + , subq_13.listing__created_at__quarter AS listing__created_at__quarter + , subq_13.listing__created_at__year AS listing__created_at__year + , subq_13.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_13.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_13.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_13.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_13.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_13.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.user AS user + , subq_13.listing__user AS listing__user + , subq_13.country_latest AS country_latest + , subq_13.is_lux_latest AS is_lux_latest + , subq_13.capacity_latest AS capacity_latest + , subq_13.listing__country_latest AS listing__country_latest + , subq_13.listing__is_lux_latest AS listing__is_lux_latest + , subq_13.listing__capacity_latest AS listing__capacity_latest + , subq_13.listings AS listings + , subq_13.largest_listing AS largest_listing + , subq_13.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.created_at__day + , subq_12.created_at__week + , subq_12.created_at__month + , subq_12.created_at__quarter + , subq_12.created_at__year + , subq_12.created_at__extract_year + , subq_12.created_at__extract_quarter + , subq_12.created_at__extract_month + , subq_12.created_at__extract_day + , subq_12.created_at__extract_dow + , subq_12.created_at__extract_doy + , subq_12.listing__ds__day + , subq_12.listing__ds__week + , subq_12.listing__ds__month + , subq_12.listing__ds__quarter + , subq_12.listing__ds__year + , subq_12.listing__ds__extract_year + , subq_12.listing__ds__extract_quarter + , subq_12.listing__ds__extract_month + , subq_12.listing__ds__extract_day + , subq_12.listing__ds__extract_dow + , subq_12.listing__ds__extract_doy + , subq_12.listing__created_at__day + , subq_12.listing__created_at__week + , subq_12.listing__created_at__month + , subq_12.listing__created_at__quarter + , subq_12.listing__created_at__year + , subq_12.listing__created_at__extract_year + , subq_12.listing__created_at__extract_quarter + , subq_12.listing__created_at__extract_month + , subq_12.listing__created_at__extract_day + , subq_12.listing__created_at__extract_dow + , subq_12.listing__created_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.user + , subq_12.listing__user + , subq_12.country_latest + , subq_12.is_lux_latest + , subq_12.capacity_latest + , subq_12.listing__country_latest + , subq_12.listing__is_lux_latest + , subq_12.listing__capacity_latest + , subq_12.listings + , subq_12.largest_listing + , subq_12.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -285,78 +285,78 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user', 'user__visit_buy_conversion_rate'] SELECT - subq_17.user - , subq_17.user__visit_buy_conversion_rate + subq_28.user + , subq_28.user__visit_buy_conversion_rate FROM ( -- Compute Metrics via Expressions SELECT - subq_16.user - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate + subq_27.user + , CAST(subq_27.buys AS DOUBLE) / CAST(NULLIF(subq_27.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.user, subq_15.user) AS user - , MAX(subq_5.visits) AS visits - , MAX(subq_15.buys) AS buys + COALESCE(subq_17.user, subq_26.user) AS user + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.user - , SUM(subq_4.visits) AS visits + subq_16.user + , SUM(subq_16.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'user'] SELECT - subq_3.user - , subq_3.visits + subq_15.user + , subq_15.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.visit__ds__day + , subq_14.visit__ds__week + , subq_14.visit__ds__month + , subq_14.visit__ds__quarter + , subq_14.visit__ds__year + , subq_14.visit__ds__extract_year + , subq_14.visit__ds__extract_quarter + , subq_14.visit__ds__extract_month + , subq_14.visit__ds__extract_day + , subq_14.visit__ds__extract_dow + , subq_14.visit__ds__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session + , subq_14.visit__user + , subq_14.visit__session + , subq_14.referrer_id + , subq_14.visit__referrer_id + , subq_14.visits + , subq_14.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -391,108 +391,108 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_14 + ) subq_15 + ) subq_16 GROUP BY - subq_4.user - ) subq_5 + subq_16.user + ) subq_17 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.user - , SUM(subq_14.buys) AS buys + subq_25.user + , SUM(subq_25.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'user'] SELECT - subq_13.user - , subq_13.buys + subq_24.user + , subq_24.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_23.metric_time__day + , subq_23.user + , subq_23.buys + , subq_23.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_19.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_19.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_19.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_18.metric_time__day + , subq_18.user + , subq_18.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.visit__ds__day + , subq_14.visit__ds__week + , subq_14.visit__ds__month + , subq_14.visit__ds__quarter + , subq_14.visit__ds__year + , subq_14.visit__ds__extract_year + , subq_14.visit__ds__extract_quarter + , subq_14.visit__ds__extract_month + , subq_14.visit__ds__extract_day + , subq_14.visit__ds__extract_dow + , subq_14.visit__ds__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session + , subq_14.visit__user + , subq_14.visit__session + , subq_14.referrer_id + , subq_14.visit__referrer_id + , subq_14.visits + , subq_14.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -527,118 +527,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_14 + ) subq_18 + ) subq_19 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_21.ds__day + , subq_21.ds__week + , subq_21.ds__month + , subq_21.ds__quarter + , subq_21.ds__year + , subq_21.ds__extract_year + , subq_21.ds__extract_quarter + , subq_21.ds__extract_month + , subq_21.ds__extract_day + , subq_21.ds__extract_dow + , subq_21.ds__extract_doy + , subq_21.ds_month__month + , subq_21.ds_month__quarter + , subq_21.ds_month__year + , subq_21.ds_month__extract_year + , subq_21.ds_month__extract_quarter + , subq_21.ds_month__extract_month + , subq_21.buy__ds__day + , subq_21.buy__ds__week + , subq_21.buy__ds__month + , subq_21.buy__ds__quarter + , subq_21.buy__ds__year + , subq_21.buy__ds__extract_year + , subq_21.buy__ds__extract_quarter + , subq_21.buy__ds__extract_month + , subq_21.buy__ds__extract_day + , subq_21.buy__ds__extract_dow + , subq_21.buy__ds__extract_doy + , subq_21.buy__ds_month__month + , subq_21.buy__ds_month__quarter + , subq_21.buy__ds_month__year + , subq_21.buy__ds_month__extract_year + , subq_21.buy__ds_month__extract_quarter + , subq_21.buy__ds_month__extract_month + , subq_21.metric_time__day + , subq_21.metric_time__week + , subq_21.metric_time__month + , subq_21.metric_time__quarter + , subq_21.metric_time__year + , subq_21.metric_time__extract_year + , subq_21.metric_time__extract_quarter + , subq_21.metric_time__extract_month + , subq_21.metric_time__extract_day + , subq_21.metric_time__extract_dow + , subq_21.metric_time__extract_doy + , subq_21.user + , subq_21.session_id + , subq_21.buy__user + , subq_21.buy__session_id + , subq_21.buys + , subq_21.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_20.ds__day + , subq_20.ds__week + , subq_20.ds__month + , subq_20.ds__quarter + , subq_20.ds__year + , subq_20.ds__extract_year + , subq_20.ds__extract_quarter + , subq_20.ds__extract_month + , subq_20.ds__extract_day + , subq_20.ds__extract_dow + , subq_20.ds__extract_doy + , subq_20.ds_month__month + , subq_20.ds_month__quarter + , subq_20.ds_month__year + , subq_20.ds_month__extract_year + , subq_20.ds_month__extract_quarter + , subq_20.ds_month__extract_month + , subq_20.buy__ds__day + , subq_20.buy__ds__week + , subq_20.buy__ds__month + , subq_20.buy__ds__quarter + , subq_20.buy__ds__year + , subq_20.buy__ds__extract_year + , subq_20.buy__ds__extract_quarter + , subq_20.buy__ds__extract_month + , subq_20.buy__ds__extract_day + , subq_20.buy__ds__extract_dow + , subq_20.buy__ds__extract_doy + , subq_20.buy__ds_month__month + , subq_20.buy__ds_month__quarter + , subq_20.buy__ds_month__year + , subq_20.buy__ds_month__extract_year + , subq_20.buy__ds_month__extract_quarter + , subq_20.buy__ds_month__extract_month + , subq_20.ds__day AS metric_time__day + , subq_20.ds__week AS metric_time__week + , subq_20.ds__month AS metric_time__month + , subq_20.ds__quarter AS metric_time__quarter + , subq_20.ds__year AS metric_time__year + , subq_20.ds__extract_year AS metric_time__extract_year + , subq_20.ds__extract_quarter AS metric_time__extract_quarter + , subq_20.ds__extract_month AS metric_time__extract_month + , subq_20.ds__extract_day AS metric_time__extract_day + , subq_20.ds__extract_dow AS metric_time__extract_dow + , subq_20.ds__extract_doy AS metric_time__extract_doy + , subq_20.user + , subq_20.session_id + , subq_20.buy__user + , subq_20.buy__session_id + , subq_20.buys + , subq_20.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -684,32 +684,32 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_20 + ) subq_21 + ) subq_22 ON ( - subq_8.user = subq_11.user + subq_19.user = subq_22.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_19.metric_time__day <= subq_22.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_23 + ) subq_24 + ) subq_25 GROUP BY - subq_14.user - ) subq_15 + subq_25.user + ) subq_26 ON - subq_5.user = subq_15.user + subq_17.user = subq_26.user GROUP BY - COALESCE(subq_5.user, subq_15.user) - ) subq_16 - ) subq_17 - ) subq_18 + COALESCE(subq_17.user, subq_26.user) + ) subq_27 + ) subq_28 + ) subq_29 ON - subq_1.user = subq_18.user - ) subq_19 + subq_13.user = subq_29.user + ) subq_30 WHERE user__visit_buy_conversion_rate > 2 - ) subq_20 - ) subq_21 -) subq_22 + ) subq_31 + ) subq_32 +) subq_33 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0_optimized.sql index c651d79d77..ff00892455 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_filter_with_conversion_metric__plan0_optimized.sql @@ -21,8 +21,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - CAST(subq_38.buys AS DOUBLE) / CAST(NULLIF(subq_38.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate - , subq_24.listings AS listings + CAST(subq_49.buys AS DOUBLE) / CAST(NULLIF(subq_49.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate + , subq_35.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -30,13 +30,13 @@ FROM ( user_id AS user , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_24 + ) subq_35 LEFT OUTER JOIN ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.user, subq_37.user) AS user - , MAX(subq_28.visits) AS visits - , MAX(subq_37.buys) AS buys + COALESCE(subq_39.user, subq_48.user) AS user + , MAX(subq_39.visits) AS visits + , MAX(subq_48.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'user'] @@ -47,43 +47,43 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY sma_28019_cte.user - ) subq_28 + ) subq_39 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'user'] -- Aggregate Measures SELECT - subq_34.user + subq_45.user , SUM(buys) AS buys FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_33.mf_internal_uuid AS mf_internal_uuid - , subq_33.buys AS buys + , subq_44.mf_internal_uuid AS mf_internal_uuid + , subq_44.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -95,23 +95,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_33 + ) subq_44 ON ( - sma_28019_cte.user = subq_33.user + sma_28019_cte.user = subq_44.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_33.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_44.metric_time__day) ) - ) subq_34 + ) subq_45 GROUP BY - subq_34.user - ) subq_37 + subq_45.user + ) subq_48 ON - subq_28.user = subq_37.user + subq_39.user = subq_48.user GROUP BY - COALESCE(subq_28.user, subq_37.user) - ) subq_38 + COALESCE(subq_39.user, subq_48.user) + ) subq_49 ON - subq_24.user = subq_38.user -) subq_41 + subq_35.user = subq_49.user +) subq_52 WHERE user__visit_buy_conversion_rate > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0.sql index 1b529325d3..385fda7f44 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0.sql @@ -4,229 +4,229 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_15.listings + subq_20.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_14.listings) AS listings + SUM(subq_19.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_13.listings + subq_18.listings FROM ( -- Constrain Output with WHERE SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.user__listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.user__listing__user__average_booking_value - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.listing__ds__day + , subq_17.listing__ds__week + , subq_17.listing__ds__month + , subq_17.listing__ds__quarter + , subq_17.listing__ds__year + , subq_17.listing__ds__extract_year + , subq_17.listing__ds__extract_quarter + , subq_17.listing__ds__extract_month + , subq_17.listing__ds__extract_day + , subq_17.listing__ds__extract_dow + , subq_17.listing__ds__extract_doy + , subq_17.listing__created_at__day + , subq_17.listing__created_at__week + , subq_17.listing__created_at__month + , subq_17.listing__created_at__quarter + , subq_17.listing__created_at__year + , subq_17.listing__created_at__extract_year + , subq_17.listing__created_at__extract_quarter + , subq_17.listing__created_at__extract_month + , subq_17.listing__created_at__extract_day + , subq_17.listing__created_at__extract_dow + , subq_17.listing__created_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.listing + , subq_17.user + , subq_17.listing__user + , subq_17.user__listing__user + , subq_17.country_latest + , subq_17.is_lux_latest + , subq_17.capacity_latest + , subq_17.listing__country_latest + , subq_17.listing__is_lux_latest + , subq_17.listing__capacity_latest + , subq_17.user__listing__user__average_booking_value + , subq_17.listings + , subq_17.largest_listing + , subq_17.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_11.listing__user AS user__listing__user - , subq_11.listing__user__average_booking_value AS user__listing__user__average_booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_16.listing__user AS user__listing__user + , subq_16.listing__user__average_booking_value AS user__listing__user__average_booking_value + , subq_7.ds__day AS ds__day + , subq_7.ds__week AS ds__week + , subq_7.ds__month AS ds__month + , subq_7.ds__quarter AS ds__quarter + , subq_7.ds__year AS ds__year + , subq_7.ds__extract_year AS ds__extract_year + , subq_7.ds__extract_quarter AS ds__extract_quarter + , subq_7.ds__extract_month AS ds__extract_month + , subq_7.ds__extract_day AS ds__extract_day + , subq_7.ds__extract_dow AS ds__extract_dow + , subq_7.ds__extract_doy AS ds__extract_doy + , subq_7.created_at__day AS created_at__day + , subq_7.created_at__week AS created_at__week + , subq_7.created_at__month AS created_at__month + , subq_7.created_at__quarter AS created_at__quarter + , subq_7.created_at__year AS created_at__year + , subq_7.created_at__extract_year AS created_at__extract_year + , subq_7.created_at__extract_quarter AS created_at__extract_quarter + , subq_7.created_at__extract_month AS created_at__extract_month + , subq_7.created_at__extract_day AS created_at__extract_day + , subq_7.created_at__extract_dow AS created_at__extract_dow + , subq_7.created_at__extract_doy AS created_at__extract_doy + , subq_7.listing__ds__day AS listing__ds__day + , subq_7.listing__ds__week AS listing__ds__week + , subq_7.listing__ds__month AS listing__ds__month + , subq_7.listing__ds__quarter AS listing__ds__quarter + , subq_7.listing__ds__year AS listing__ds__year + , subq_7.listing__ds__extract_year AS listing__ds__extract_year + , subq_7.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_7.listing__ds__extract_month AS listing__ds__extract_month + , subq_7.listing__ds__extract_day AS listing__ds__extract_day + , subq_7.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_7.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_7.listing__created_at__day AS listing__created_at__day + , subq_7.listing__created_at__week AS listing__created_at__week + , subq_7.listing__created_at__month AS listing__created_at__month + , subq_7.listing__created_at__quarter AS listing__created_at__quarter + , subq_7.listing__created_at__year AS listing__created_at__year + , subq_7.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_7.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_7.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_7.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_7.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_7.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_7.metric_time__day AS metric_time__day + , subq_7.metric_time__week AS metric_time__week + , subq_7.metric_time__month AS metric_time__month + , subq_7.metric_time__quarter AS metric_time__quarter + , subq_7.metric_time__year AS metric_time__year + , subq_7.metric_time__extract_year AS metric_time__extract_year + , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_7.metric_time__extract_month AS metric_time__extract_month + , subq_7.metric_time__extract_day AS metric_time__extract_day + , subq_7.metric_time__extract_dow AS metric_time__extract_dow + , subq_7.metric_time__extract_doy AS metric_time__extract_doy + , subq_7.listing AS listing + , subq_7.user AS user + , subq_7.listing__user AS listing__user + , subq_7.country_latest AS country_latest + , subq_7.is_lux_latest AS is_lux_latest + , subq_7.capacity_latest AS capacity_latest + , subq_7.listing__country_latest AS listing__country_latest + , subq_7.listing__is_lux_latest AS listing__is_lux_latest + , subq_7.listing__capacity_latest AS listing__capacity_latest + , subq_7.listings AS listings + , subq_7.largest_listing AS largest_listing + , subq_7.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,231 +287,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_6 + ) subq_7 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing__user', 'listing__user__average_booking_value'] SELECT - subq_10.listing__user - , subq_10.listing__user__average_booking_value + subq_15.listing__user + , subq_15.listing__user__average_booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_9.listing__user - , subq_9.average_booking_value AS listing__user__average_booking_value + subq_14.listing__user + , subq_14.average_booking_value AS listing__user__average_booking_value FROM ( -- Aggregate Measures SELECT - subq_8.listing__user - , AVG(subq_8.average_booking_value) AS average_booking_value + subq_13.listing__user + , AVG(subq_13.average_booking_value) AS average_booking_value FROM ( -- Pass Only Elements: ['average_booking_value', 'listing__user'] SELECT - subq_7.listing__user - , subq_7.average_booking_value + subq_12.listing__user + , subq_12.average_booking_value FROM ( -- Join Standard Outputs SELECT - subq_6.user AS listing__user - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.paid_at__day AS paid_at__day - , subq_3.paid_at__week AS paid_at__week - , subq_3.paid_at__month AS paid_at__month - , subq_3.paid_at__quarter AS paid_at__quarter - , subq_3.paid_at__year AS paid_at__year - , subq_3.paid_at__extract_year AS paid_at__extract_year - , subq_3.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_3.paid_at__extract_month AS paid_at__extract_month - , subq_3.paid_at__extract_day AS paid_at__extract_day - , subq_3.paid_at__extract_dow AS paid_at__extract_dow - , subq_3.paid_at__extract_doy AS paid_at__extract_doy - , subq_3.booking__ds__day AS booking__ds__day - , subq_3.booking__ds__week AS booking__ds__week - , subq_3.booking__ds__month AS booking__ds__month - , subq_3.booking__ds__quarter AS booking__ds__quarter - , subq_3.booking__ds__year AS booking__ds__year - , subq_3.booking__ds__extract_year AS booking__ds__extract_year - , subq_3.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_3.booking__ds__extract_month AS booking__ds__extract_month - , subq_3.booking__ds__extract_day AS booking__ds__extract_day - , subq_3.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_3.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_3.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_3.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_3.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_3.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_3.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_3.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_3.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_3.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_3.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_3.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_3.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_3.booking__paid_at__day AS booking__paid_at__day - , subq_3.booking__paid_at__week AS booking__paid_at__week - , subq_3.booking__paid_at__month AS booking__paid_at__month - , subq_3.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_3.booking__paid_at__year AS booking__paid_at__year - , subq_3.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_3.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_3.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_3.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_3.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_3.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.guest AS guest - , subq_3.host AS host - , subq_3.booking__listing AS booking__listing - , subq_3.booking__guest AS booking__guest - , subq_3.booking__host AS booking__host - , subq_3.is_instant AS is_instant - , subq_3.booking__is_instant AS booking__is_instant - , subq_3.bookings AS bookings - , subq_3.instant_bookings AS instant_bookings - , subq_3.booking_value AS booking_value - , subq_3.max_booking_value AS max_booking_value - , subq_3.min_booking_value AS min_booking_value - , subq_3.bookers AS bookers - , subq_3.average_booking_value AS average_booking_value - , subq_3.referred_bookings AS referred_bookings - , subq_3.median_booking_value AS median_booking_value - , subq_3.booking_value_p99 AS booking_value_p99 - , subq_3.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_3.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_3.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.user AS listing__user + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__day AS metric_time__day + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.paid_at__day + , subq_8.paid_at__week + , subq_8.paid_at__month + , subq_8.paid_at__quarter + , subq_8.paid_at__year + , subq_8.paid_at__extract_year + , subq_8.paid_at__extract_quarter + , subq_8.paid_at__extract_month + , subq_8.paid_at__extract_day + , subq_8.paid_at__extract_dow + , subq_8.paid_at__extract_doy + , subq_8.booking__ds__day + , subq_8.booking__ds__week + , subq_8.booking__ds__month + , subq_8.booking__ds__quarter + , subq_8.booking__ds__year + , subq_8.booking__ds__extract_year + , subq_8.booking__ds__extract_quarter + , subq_8.booking__ds__extract_month + , subq_8.booking__ds__extract_day + , subq_8.booking__ds__extract_dow + , subq_8.booking__ds__extract_doy + , subq_8.booking__ds_partitioned__day + , subq_8.booking__ds_partitioned__week + , subq_8.booking__ds_partitioned__month + , subq_8.booking__ds_partitioned__quarter + , subq_8.booking__ds_partitioned__year + , subq_8.booking__ds_partitioned__extract_year + , subq_8.booking__ds_partitioned__extract_quarter + , subq_8.booking__ds_partitioned__extract_month + , subq_8.booking__ds_partitioned__extract_day + , subq_8.booking__ds_partitioned__extract_dow + , subq_8.booking__ds_partitioned__extract_doy + , subq_8.booking__paid_at__day + , subq_8.booking__paid_at__week + , subq_8.booking__paid_at__month + , subq_8.booking__paid_at__quarter + , subq_8.booking__paid_at__year + , subq_8.booking__paid_at__extract_year + , subq_8.booking__paid_at__extract_quarter + , subq_8.booking__paid_at__extract_month + , subq_8.booking__paid_at__extract_day + , subq_8.booking__paid_at__extract_dow + , subq_8.booking__paid_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.guest + , subq_8.host + , subq_8.booking__listing + , subq_8.booking__guest + , subq_8.booking__host + , subq_8.is_instant + , subq_8.booking__is_instant + , subq_8.bookings + , subq_8.instant_bookings + , subq_8.booking_value + , subq_8.max_booking_value + , subq_8.min_booking_value + , subq_8.bookers + , subq_8.average_booking_value + , subq_8.referred_bookings + , subq_8.median_booking_value + , subq_8.booking_value_p99 + , subq_8.discrete_booking_value_p99 + , subq_8.approximate_continuous_booking_value_p99 + , subq_8.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -604,83 +604,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'user'] SELECT - subq_5.listing - , subq_5.user + subq_10.listing + , subq_10.user FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.listing__ds__day - , subq_4.listing__ds__week - , subq_4.listing__ds__month - , subq_4.listing__ds__quarter - , subq_4.listing__ds__year - , subq_4.listing__ds__extract_year - , subq_4.listing__ds__extract_quarter - , subq_4.listing__ds__extract_month - , subq_4.listing__ds__extract_day - , subq_4.listing__ds__extract_dow - , subq_4.listing__ds__extract_doy - , subq_4.listing__created_at__day - , subq_4.listing__created_at__week - , subq_4.listing__created_at__month - , subq_4.listing__created_at__quarter - , subq_4.listing__created_at__year - , subq_4.listing__created_at__extract_year - , subq_4.listing__created_at__extract_quarter - , subq_4.listing__created_at__extract_month - , subq_4.listing__created_at__extract_day - , subq_4.listing__created_at__extract_dow - , subq_4.listing__created_at__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.listing - , subq_4.user - , subq_4.listing__user - , subq_4.country_latest - , subq_4.is_lux_latest - , subq_4.capacity_latest - , subq_4.listing__country_latest - , subq_4.listing__is_lux_latest - , subq_4.listing__capacity_latest - , subq_4.listings - , subq_4.largest_listing - , subq_4.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -741,22 +741,22 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_6 + ) subq_10 + ) subq_11 ON - subq_3.listing = subq_6.listing - ) subq_7 - ) subq_8 + subq_9.listing = subq_11.listing + ) subq_12 + ) subq_13 GROUP BY - subq_8.listing__user - ) subq_9 - ) subq_10 - ) subq_11 + subq_13.listing__user + ) subq_14 + ) subq_15 + ) subq_16 ON - subq_1.user = subq_11.listing__user - ) subq_12 + subq_7.user = subq_16.listing__user + ) subq_17 WHERE user__listing__user__average_booking_value > 1 - ) subq_13 - ) subq_14 -) subq_15 + ) subq_18 + ) subq_19 +) subq_20 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0_optimized.sql index 9fbb646605..c7ec78bcf5 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_group_by_has_local_entity_prefix__plan0_optimized.sql @@ -21,7 +21,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_26.listing__user__average_booking_value AS user__listing__user__average_booking_value + subq_31.listing__user__average_booking_value AS user__listing__user__average_booking_value , sma_28014_cte.listings AS listings FROM sma_28014_cte sma_28014_cte LEFT OUTER JOIN ( @@ -40,8 +40,8 @@ FROM ( bookings_source_src_28000.listing_id = sma_28014_cte.listing GROUP BY sma_28014_cte.user - ) subq_26 + ) subq_31 ON - sma_28014_cte.user = subq_26.listing__user -) subq_27 + sma_28014_cte.user = subq_31.listing__user +) subq_32 WHERE user__listing__user__average_booking_value > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0.sql index 4ce34a0176..03b499cbd9 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0.sql @@ -6,139 +6,139 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_19.third_hop_count + subq_28.third_hop_count FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_18.third_hop_count) AS third_hop_count + COUNT(DISTINCT subq_27.third_hop_count) AS third_hop_count FROM ( -- Pass Only Elements: ['third_hop_count',] SELECT - subq_17.third_hop_count + subq_26.third_hop_count FROM ( -- Constrain Output with WHERE SELECT - subq_16.third_hop_ds__day - , subq_16.third_hop_ds__week - , subq_16.third_hop_ds__month - , subq_16.third_hop_ds__quarter - , subq_16.third_hop_ds__year - , subq_16.third_hop_ds__extract_year - , subq_16.third_hop_ds__extract_quarter - , subq_16.third_hop_ds__extract_month - , subq_16.third_hop_ds__extract_day - , subq_16.third_hop_ds__extract_dow - , subq_16.third_hop_ds__extract_doy - , subq_16.customer_third_hop_id__third_hop_ds__day - , subq_16.customer_third_hop_id__third_hop_ds__week - , subq_16.customer_third_hop_id__third_hop_ds__month - , subq_16.customer_third_hop_id__third_hop_ds__quarter - , subq_16.customer_third_hop_id__third_hop_ds__year - , subq_16.customer_third_hop_id__third_hop_ds__extract_year - , subq_16.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_16.customer_third_hop_id__third_hop_ds__extract_month - , subq_16.customer_third_hop_id__third_hop_ds__extract_day - , subq_16.customer_third_hop_id__third_hop_ds__extract_dow - , subq_16.customer_third_hop_id__third_hop_ds__extract_doy - , subq_16.metric_time__day - , subq_16.metric_time__week - , subq_16.metric_time__month - , subq_16.metric_time__quarter - , subq_16.metric_time__year - , subq_16.metric_time__extract_year - , subq_16.metric_time__extract_quarter - , subq_16.metric_time__extract_month - , subq_16.metric_time__extract_day - , subq_16.metric_time__extract_dow - , subq_16.metric_time__extract_doy - , subq_16.customer_third_hop_id - , subq_16.customer_third_hop_id__account_id__customer_id__customer_third_hop_id - , subq_16.value - , subq_16.customer_third_hop_id__value - , subq_16.customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count - , subq_16.third_hop_count + subq_25.third_hop_ds__day + , subq_25.third_hop_ds__week + , subq_25.third_hop_ds__month + , subq_25.third_hop_ds__quarter + , subq_25.third_hop_ds__year + , subq_25.third_hop_ds__extract_year + , subq_25.third_hop_ds__extract_quarter + , subq_25.third_hop_ds__extract_month + , subq_25.third_hop_ds__extract_day + , subq_25.third_hop_ds__extract_dow + , subq_25.third_hop_ds__extract_doy + , subq_25.customer_third_hop_id__third_hop_ds__day + , subq_25.customer_third_hop_id__third_hop_ds__week + , subq_25.customer_third_hop_id__third_hop_ds__month + , subq_25.customer_third_hop_id__third_hop_ds__quarter + , subq_25.customer_third_hop_id__third_hop_ds__year + , subq_25.customer_third_hop_id__third_hop_ds__extract_year + , subq_25.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_25.customer_third_hop_id__third_hop_ds__extract_month + , subq_25.customer_third_hop_id__third_hop_ds__extract_day + , subq_25.customer_third_hop_id__third_hop_ds__extract_dow + , subq_25.customer_third_hop_id__third_hop_ds__extract_doy + , subq_25.metric_time__day + , subq_25.metric_time__week + , subq_25.metric_time__month + , subq_25.metric_time__quarter + , subq_25.metric_time__year + , subq_25.metric_time__extract_year + , subq_25.metric_time__extract_quarter + , subq_25.metric_time__extract_month + , subq_25.metric_time__extract_day + , subq_25.metric_time__extract_dow + , subq_25.metric_time__extract_doy + , subq_25.customer_third_hop_id + , subq_25.customer_third_hop_id__account_id__customer_id__customer_third_hop_id + , subq_25.value + , subq_25.customer_third_hop_id__value + , subq_25.customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + , subq_25.third_hop_count FROM ( -- Join Standard Outputs SELECT - subq_15.account_id__customer_id__customer_third_hop_id AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id - , subq_15.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count - , subq_1.third_hop_ds__day AS third_hop_ds__day - , subq_1.third_hop_ds__week AS third_hop_ds__week - , subq_1.third_hop_ds__month AS third_hop_ds__month - , subq_1.third_hop_ds__quarter AS third_hop_ds__quarter - , subq_1.third_hop_ds__year AS third_hop_ds__year - , subq_1.third_hop_ds__extract_year AS third_hop_ds__extract_year - , subq_1.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter - , subq_1.third_hop_ds__extract_month AS third_hop_ds__extract_month - , subq_1.third_hop_ds__extract_day AS third_hop_ds__extract_day - , subq_1.third_hop_ds__extract_dow AS third_hop_ds__extract_dow - , subq_1.third_hop_ds__extract_doy AS third_hop_ds__extract_doy - , subq_1.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day - , subq_1.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week - , subq_1.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month - , subq_1.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter - , subq_1.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year - , subq_1.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year - , subq_1.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter - , subq_1.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month - , subq_1.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day - , subq_1.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow - , subq_1.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.customer_third_hop_id AS customer_third_hop_id - , subq_1.value AS value - , subq_1.customer_third_hop_id__value AS customer_third_hop_id__value - , subq_1.third_hop_count AS third_hop_count + subq_24.account_id__customer_id__customer_third_hop_id AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id + , subq_24.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + , subq_10.third_hop_ds__day AS third_hop_ds__day + , subq_10.third_hop_ds__week AS third_hop_ds__week + , subq_10.third_hop_ds__month AS third_hop_ds__month + , subq_10.third_hop_ds__quarter AS third_hop_ds__quarter + , subq_10.third_hop_ds__year AS third_hop_ds__year + , subq_10.third_hop_ds__extract_year AS third_hop_ds__extract_year + , subq_10.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter + , subq_10.third_hop_ds__extract_month AS third_hop_ds__extract_month + , subq_10.third_hop_ds__extract_day AS third_hop_ds__extract_day + , subq_10.third_hop_ds__extract_dow AS third_hop_ds__extract_dow + , subq_10.third_hop_ds__extract_doy AS third_hop_ds__extract_doy + , subq_10.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day + , subq_10.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week + , subq_10.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month + , subq_10.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter + , subq_10.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year + , subq_10.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year + , subq_10.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter + , subq_10.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month + , subq_10.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day + , subq_10.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow + , subq_10.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.customer_third_hop_id AS customer_third_hop_id + , subq_10.value AS value + , subq_10.customer_third_hop_id__value AS customer_third_hop_id__value + , subq_10.third_hop_count AS third_hop_count FROM ( -- Metric Time Dimension 'third_hop_ds' SELECT - subq_0.third_hop_ds__day - , subq_0.third_hop_ds__week - , subq_0.third_hop_ds__month - , subq_0.third_hop_ds__quarter - , subq_0.third_hop_ds__year - , subq_0.third_hop_ds__extract_year - , subq_0.third_hop_ds__extract_quarter - , subq_0.third_hop_ds__extract_month - , subq_0.third_hop_ds__extract_day - , subq_0.third_hop_ds__extract_dow - , subq_0.third_hop_ds__extract_doy - , subq_0.customer_third_hop_id__third_hop_ds__day - , subq_0.customer_third_hop_id__third_hop_ds__week - , subq_0.customer_third_hop_id__third_hop_ds__month - , subq_0.customer_third_hop_id__third_hop_ds__quarter - , subq_0.customer_third_hop_id__third_hop_ds__year - , subq_0.customer_third_hop_id__third_hop_ds__extract_year - , subq_0.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_0.customer_third_hop_id__third_hop_ds__extract_month - , subq_0.customer_third_hop_id__third_hop_ds__extract_day - , subq_0.customer_third_hop_id__third_hop_ds__extract_dow - , subq_0.customer_third_hop_id__third_hop_ds__extract_doy - , subq_0.third_hop_ds__day AS metric_time__day - , subq_0.third_hop_ds__week AS metric_time__week - , subq_0.third_hop_ds__month AS metric_time__month - , subq_0.third_hop_ds__quarter AS metric_time__quarter - , subq_0.third_hop_ds__year AS metric_time__year - , subq_0.third_hop_ds__extract_year AS metric_time__extract_year - , subq_0.third_hop_ds__extract_quarter AS metric_time__extract_quarter - , subq_0.third_hop_ds__extract_month AS metric_time__extract_month - , subq_0.third_hop_ds__extract_day AS metric_time__extract_day - , subq_0.third_hop_ds__extract_dow AS metric_time__extract_dow - , subq_0.third_hop_ds__extract_doy AS metric_time__extract_doy - , subq_0.customer_third_hop_id - , subq_0.value - , subq_0.customer_third_hop_id__value - , subq_0.third_hop_count + subq_9.third_hop_ds__day + , subq_9.third_hop_ds__week + , subq_9.third_hop_ds__month + , subq_9.third_hop_ds__quarter + , subq_9.third_hop_ds__year + , subq_9.third_hop_ds__extract_year + , subq_9.third_hop_ds__extract_quarter + , subq_9.third_hop_ds__extract_month + , subq_9.third_hop_ds__extract_day + , subq_9.third_hop_ds__extract_dow + , subq_9.third_hop_ds__extract_doy + , subq_9.customer_third_hop_id__third_hop_ds__day + , subq_9.customer_third_hop_id__third_hop_ds__week + , subq_9.customer_third_hop_id__third_hop_ds__month + , subq_9.customer_third_hop_id__third_hop_ds__quarter + , subq_9.customer_third_hop_id__third_hop_ds__year + , subq_9.customer_third_hop_id__third_hop_ds__extract_year + , subq_9.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_9.customer_third_hop_id__third_hop_ds__extract_month + , subq_9.customer_third_hop_id__third_hop_ds__extract_day + , subq_9.customer_third_hop_id__third_hop_ds__extract_dow + , subq_9.customer_third_hop_id__third_hop_ds__extract_doy + , subq_9.third_hop_ds__day AS metric_time__day + , subq_9.third_hop_ds__week AS metric_time__week + , subq_9.third_hop_ds__month AS metric_time__month + , subq_9.third_hop_ds__quarter AS metric_time__quarter + , subq_9.third_hop_ds__year AS metric_time__year + , subq_9.third_hop_ds__extract_year AS metric_time__extract_year + , subq_9.third_hop_ds__extract_quarter AS metric_time__extract_quarter + , subq_9.third_hop_ds__extract_month AS metric_time__extract_month + , subq_9.third_hop_ds__extract_day AS metric_time__extract_day + , subq_9.third_hop_ds__extract_dow AS metric_time__extract_dow + , subq_9.third_hop_ds__extract_doy AS metric_time__extract_doy + , subq_9.customer_third_hop_id + , subq_9.value + , subq_9.customer_third_hop_id__value + , subq_9.third_hop_count FROM ( -- Read Elements From Semantic Model 'third_hop_table' SELECT @@ -169,154 +169,154 @@ FROM ( , EXTRACT(doy FROM third_hop_table_src_22000.third_hop_ds) AS customer_third_hop_id__third_hop_ds__extract_doy , third_hop_table_src_22000.customer_third_hop_id FROM ***************************.third_hop_table third_hop_table_src_22000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['account_id__customer_id__customer_third_hop_id', 'account_id__customer_id__customer_third_hop_id__txn_count'] SELECT - subq_14.account_id__customer_id__customer_third_hop_id - , subq_14.account_id__customer_id__customer_third_hop_id__txn_count + subq_23.account_id__customer_id__customer_third_hop_id + , subq_23.account_id__customer_id__customer_third_hop_id__txn_count FROM ( -- Compute Metrics via Expressions SELECT - subq_13.account_id__customer_id__customer_third_hop_id - , subq_13.txn_count AS account_id__customer_id__customer_third_hop_id__txn_count + subq_22.account_id__customer_id__customer_third_hop_id + , subq_22.txn_count AS account_id__customer_id__customer_third_hop_id__txn_count FROM ( -- Aggregate Measures SELECT - subq_12.account_id__customer_id__customer_third_hop_id - , SUM(subq_12.txn_count) AS txn_count + subq_21.account_id__customer_id__customer_third_hop_id + , SUM(subq_21.txn_count) AS txn_count FROM ( -- Pass Only Elements: ['txn_count', 'account_id__customer_id__customer_third_hop_id'] SELECT - subq_11.account_id__customer_id__customer_third_hop_id - , subq_11.txn_count + subq_20.account_id__customer_id__customer_third_hop_id + , subq_20.txn_count FROM ( -- Join Standard Outputs SELECT - subq_10.ds_partitioned__day AS account_id__ds_partitioned__day - , subq_10.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_3.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_3.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_3.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_3.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_3.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_3.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_3.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_3.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_3.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_3.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_3.account_id__ds__day AS account_id__ds__day - , subq_3.account_id__ds__week AS account_id__ds__week - , subq_3.account_id__ds__month AS account_id__ds__month - , subq_3.account_id__ds__quarter AS account_id__ds__quarter - , subq_3.account_id__ds__year AS account_id__ds__year - , subq_3.account_id__ds__extract_year AS account_id__ds__extract_year - , subq_3.account_id__ds__extract_quarter AS account_id__ds__extract_quarter - , subq_3.account_id__ds__extract_month AS account_id__ds__extract_month - , subq_3.account_id__ds__extract_day AS account_id__ds__extract_day - , subq_3.account_id__ds__extract_dow AS account_id__ds__extract_dow - , subq_3.account_id__ds__extract_doy AS account_id__ds__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.account_id AS account_id - , subq_3.account_month AS account_month - , subq_3.account_id__account_month AS account_id__account_month - , subq_3.txn_count AS txn_count + subq_19.ds_partitioned__day AS account_id__ds_partitioned__day + , subq_19.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id + , subq_12.ds_partitioned__day AS ds_partitioned__day + , subq_12.ds_partitioned__week AS ds_partitioned__week + , subq_12.ds_partitioned__month AS ds_partitioned__month + , subq_12.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_12.ds_partitioned__year AS ds_partitioned__year + , subq_12.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_12.ds__day AS ds__day + , subq_12.ds__week AS ds__week + , subq_12.ds__month AS ds__month + , subq_12.ds__quarter AS ds__quarter + , subq_12.ds__year AS ds__year + , subq_12.ds__extract_year AS ds__extract_year + , subq_12.ds__extract_quarter AS ds__extract_quarter + , subq_12.ds__extract_month AS ds__extract_month + , subq_12.ds__extract_day AS ds__extract_day + , subq_12.ds__extract_dow AS ds__extract_dow + , subq_12.ds__extract_doy AS ds__extract_doy + , subq_12.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_12.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_12.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_12.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_12.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_12.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_12.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_12.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_12.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_12.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_12.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_12.account_id__ds__day AS account_id__ds__day + , subq_12.account_id__ds__week AS account_id__ds__week + , subq_12.account_id__ds__month AS account_id__ds__month + , subq_12.account_id__ds__quarter AS account_id__ds__quarter + , subq_12.account_id__ds__year AS account_id__ds__year + , subq_12.account_id__ds__extract_year AS account_id__ds__extract_year + , subq_12.account_id__ds__extract_quarter AS account_id__ds__extract_quarter + , subq_12.account_id__ds__extract_month AS account_id__ds__extract_month + , subq_12.account_id__ds__extract_day AS account_id__ds__extract_day + , subq_12.account_id__ds__extract_dow AS account_id__ds__extract_dow + , subq_12.account_id__ds__extract_doy AS account_id__ds__extract_doy + , subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__week AS metric_time__week + , subq_12.metric_time__month AS metric_time__month + , subq_12.metric_time__quarter AS metric_time__quarter + , subq_12.metric_time__year AS metric_time__year + , subq_12.metric_time__extract_year AS metric_time__extract_year + , subq_12.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_12.metric_time__extract_month AS metric_time__extract_month + , subq_12.metric_time__extract_day AS metric_time__extract_day + , subq_12.metric_time__extract_dow AS metric_time__extract_dow + , subq_12.metric_time__extract_doy AS metric_time__extract_doy + , subq_12.account_id AS account_id + , subq_12.account_month AS account_month + , subq_12.account_id__account_month AS account_id__account_month + , subq_12.txn_count AS txn_count FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.account_id__ds_partitioned__day - , subq_2.account_id__ds_partitioned__week - , subq_2.account_id__ds_partitioned__month - , subq_2.account_id__ds_partitioned__quarter - , subq_2.account_id__ds_partitioned__year - , subq_2.account_id__ds_partitioned__extract_year - , subq_2.account_id__ds_partitioned__extract_quarter - , subq_2.account_id__ds_partitioned__extract_month - , subq_2.account_id__ds_partitioned__extract_day - , subq_2.account_id__ds_partitioned__extract_dow - , subq_2.account_id__ds_partitioned__extract_doy - , subq_2.account_id__ds__day - , subq_2.account_id__ds__week - , subq_2.account_id__ds__month - , subq_2.account_id__ds__quarter - , subq_2.account_id__ds__year - , subq_2.account_id__ds__extract_year - , subq_2.account_id__ds__extract_quarter - , subq_2.account_id__ds__extract_month - , subq_2.account_id__ds__extract_day - , subq_2.account_id__ds__extract_dow - , subq_2.account_id__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.account_id - , subq_2.account_month - , subq_2.account_id__account_month - , subq_2.txn_count + subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.account_id__ds_partitioned__day + , subq_11.account_id__ds_partitioned__week + , subq_11.account_id__ds_partitioned__month + , subq_11.account_id__ds_partitioned__quarter + , subq_11.account_id__ds_partitioned__year + , subq_11.account_id__ds_partitioned__extract_year + , subq_11.account_id__ds_partitioned__extract_quarter + , subq_11.account_id__ds_partitioned__extract_month + , subq_11.account_id__ds_partitioned__extract_day + , subq_11.account_id__ds_partitioned__extract_dow + , subq_11.account_id__ds_partitioned__extract_doy + , subq_11.account_id__ds__day + , subq_11.account_id__ds__week + , subq_11.account_id__ds__month + , subq_11.account_id__ds__quarter + , subq_11.account_id__ds__year + , subq_11.account_id__ds__extract_year + , subq_11.account_id__ds__extract_quarter + , subq_11.account_id__ds__extract_month + , subq_11.account_id__ds__extract_day + , subq_11.account_id__ds__extract_dow + , subq_11.account_id__ds__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.account_id + , subq_11.account_month + , subq_11.account_id__account_month + , subq_11.txn_count FROM ( -- Read Elements From Semantic Model 'account_month_txns' SELECT @@ -369,163 +369,163 @@ FROM ( , account_month_txns_src_22000.account_month AS account_id__account_month , account_month_txns_src_22000.account_id FROM ***************************.account_month_txns account_month_txns_src_22000 - ) subq_2 - ) subq_3 + ) subq_11 + ) subq_12 LEFT OUTER JOIN ( -- Pass Only Elements: ['ds_partitioned__day', 'account_id', 'customer_id__customer_third_hop_id'] SELECT - subq_9.ds_partitioned__day - , subq_9.account_id - , subq_9.customer_id__customer_third_hop_id + subq_18.ds_partitioned__day + , subq_18.account_id + , subq_18.customer_id__customer_third_hop_id FROM ( -- Join Standard Outputs SELECT - subq_8.country AS customer_id__country - , subq_8.customer_third_hop_id__country AS customer_id__customer_third_hop_id__country - , subq_8.acquired_ds__day AS customer_id__acquired_ds__day - , subq_8.acquired_ds__week AS customer_id__acquired_ds__week - , subq_8.acquired_ds__month AS customer_id__acquired_ds__month - , subq_8.acquired_ds__quarter AS customer_id__acquired_ds__quarter - , subq_8.acquired_ds__year AS customer_id__acquired_ds__year - , subq_8.acquired_ds__extract_year AS customer_id__acquired_ds__extract_year - , subq_8.acquired_ds__extract_quarter AS customer_id__acquired_ds__extract_quarter - , subq_8.acquired_ds__extract_month AS customer_id__acquired_ds__extract_month - , subq_8.acquired_ds__extract_day AS customer_id__acquired_ds__extract_day - , subq_8.acquired_ds__extract_dow AS customer_id__acquired_ds__extract_dow - , subq_8.acquired_ds__extract_doy AS customer_id__acquired_ds__extract_doy - , subq_8.customer_third_hop_id__acquired_ds__day AS customer_id__customer_third_hop_id__acquired_ds__day - , subq_8.customer_third_hop_id__acquired_ds__week AS customer_id__customer_third_hop_id__acquired_ds__week - , subq_8.customer_third_hop_id__acquired_ds__month AS customer_id__customer_third_hop_id__acquired_ds__month - , subq_8.customer_third_hop_id__acquired_ds__quarter AS customer_id__customer_third_hop_id__acquired_ds__quarter - , subq_8.customer_third_hop_id__acquired_ds__year AS customer_id__customer_third_hop_id__acquired_ds__year - , subq_8.customer_third_hop_id__acquired_ds__extract_year AS customer_id__customer_third_hop_id__acquired_ds__extract_year - , subq_8.customer_third_hop_id__acquired_ds__extract_quarter AS customer_id__customer_third_hop_id__acquired_ds__extract_quarter - , subq_8.customer_third_hop_id__acquired_ds__extract_month AS customer_id__customer_third_hop_id__acquired_ds__extract_month - , subq_8.customer_third_hop_id__acquired_ds__extract_day AS customer_id__customer_third_hop_id__acquired_ds__extract_day - , subq_8.customer_third_hop_id__acquired_ds__extract_dow AS customer_id__customer_third_hop_id__acquired_ds__extract_dow - , subq_8.customer_third_hop_id__acquired_ds__extract_doy AS customer_id__customer_third_hop_id__acquired_ds__extract_doy - , subq_8.metric_time__day AS customer_id__metric_time__day - , subq_8.metric_time__week AS customer_id__metric_time__week - , subq_8.metric_time__month AS customer_id__metric_time__month - , subq_8.metric_time__quarter AS customer_id__metric_time__quarter - , subq_8.metric_time__year AS customer_id__metric_time__year - , subq_8.metric_time__extract_year AS customer_id__metric_time__extract_year - , subq_8.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter - , subq_8.metric_time__extract_month AS customer_id__metric_time__extract_month - , subq_8.metric_time__extract_day AS customer_id__metric_time__extract_day - , subq_8.metric_time__extract_dow AS customer_id__metric_time__extract_dow - , subq_8.metric_time__extract_doy AS customer_id__metric_time__extract_doy - , subq_8.customer_third_hop_id AS customer_id__customer_third_hop_id - , subq_8.customer_third_hop_id__customer_id AS customer_id__customer_third_hop_id__customer_id - , subq_5.ds_partitioned__day AS ds_partitioned__day - , subq_5.ds_partitioned__week AS ds_partitioned__week - , subq_5.ds_partitioned__month AS ds_partitioned__month - , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_5.ds_partitioned__year AS ds_partitioned__year - , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_5.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_5.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_5.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_5.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_5.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_5.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_5.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_5.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_5.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_5.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_5.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_5.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day - , subq_5.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week - , subq_5.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month - , subq_5.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter - , subq_5.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year - , subq_5.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year - , subq_5.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter - , subq_5.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month - , subq_5.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day - , subq_5.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow - , subq_5.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy - , subq_5.metric_time__day AS metric_time__day - , subq_5.metric_time__week AS metric_time__week - , subq_5.metric_time__month AS metric_time__month - , subq_5.metric_time__quarter AS metric_time__quarter - , subq_5.metric_time__year AS metric_time__year - , subq_5.metric_time__extract_year AS metric_time__extract_year - , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_5.metric_time__extract_month AS metric_time__extract_month - , subq_5.metric_time__extract_day AS metric_time__extract_day - , subq_5.metric_time__extract_dow AS metric_time__extract_dow - , subq_5.metric_time__extract_doy AS metric_time__extract_doy - , subq_5.account_id AS account_id - , subq_5.customer_id AS customer_id - , subq_5.account_id__customer_id AS account_id__customer_id - , subq_5.bridge_account__account_id AS bridge_account__account_id - , subq_5.bridge_account__customer_id AS bridge_account__customer_id - , subq_5.extra_dim AS extra_dim - , subq_5.account_id__extra_dim AS account_id__extra_dim - , subq_5.bridge_account__extra_dim AS bridge_account__extra_dim - , subq_5.account_customer_combos AS account_customer_combos + subq_17.country AS customer_id__country + , subq_17.customer_third_hop_id__country AS customer_id__customer_third_hop_id__country + , subq_17.acquired_ds__day AS customer_id__acquired_ds__day + , subq_17.acquired_ds__week AS customer_id__acquired_ds__week + , subq_17.acquired_ds__month AS customer_id__acquired_ds__month + , subq_17.acquired_ds__quarter AS customer_id__acquired_ds__quarter + , subq_17.acquired_ds__year AS customer_id__acquired_ds__year + , subq_17.acquired_ds__extract_year AS customer_id__acquired_ds__extract_year + , subq_17.acquired_ds__extract_quarter AS customer_id__acquired_ds__extract_quarter + , subq_17.acquired_ds__extract_month AS customer_id__acquired_ds__extract_month + , subq_17.acquired_ds__extract_day AS customer_id__acquired_ds__extract_day + , subq_17.acquired_ds__extract_dow AS customer_id__acquired_ds__extract_dow + , subq_17.acquired_ds__extract_doy AS customer_id__acquired_ds__extract_doy + , subq_17.customer_third_hop_id__acquired_ds__day AS customer_id__customer_third_hop_id__acquired_ds__day + , subq_17.customer_third_hop_id__acquired_ds__week AS customer_id__customer_third_hop_id__acquired_ds__week + , subq_17.customer_third_hop_id__acquired_ds__month AS customer_id__customer_third_hop_id__acquired_ds__month + , subq_17.customer_third_hop_id__acquired_ds__quarter AS customer_id__customer_third_hop_id__acquired_ds__quarter + , subq_17.customer_third_hop_id__acquired_ds__year AS customer_id__customer_third_hop_id__acquired_ds__year + , subq_17.customer_third_hop_id__acquired_ds__extract_year AS customer_id__customer_third_hop_id__acquired_ds__extract_year + , subq_17.customer_third_hop_id__acquired_ds__extract_quarter AS customer_id__customer_third_hop_id__acquired_ds__extract_quarter + , subq_17.customer_third_hop_id__acquired_ds__extract_month AS customer_id__customer_third_hop_id__acquired_ds__extract_month + , subq_17.customer_third_hop_id__acquired_ds__extract_day AS customer_id__customer_third_hop_id__acquired_ds__extract_day + , subq_17.customer_third_hop_id__acquired_ds__extract_dow AS customer_id__customer_third_hop_id__acquired_ds__extract_dow + , subq_17.customer_third_hop_id__acquired_ds__extract_doy AS customer_id__customer_third_hop_id__acquired_ds__extract_doy + , subq_17.metric_time__day AS customer_id__metric_time__day + , subq_17.metric_time__week AS customer_id__metric_time__week + , subq_17.metric_time__month AS customer_id__metric_time__month + , subq_17.metric_time__quarter AS customer_id__metric_time__quarter + , subq_17.metric_time__year AS customer_id__metric_time__year + , subq_17.metric_time__extract_year AS customer_id__metric_time__extract_year + , subq_17.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter + , subq_17.metric_time__extract_month AS customer_id__metric_time__extract_month + , subq_17.metric_time__extract_day AS customer_id__metric_time__extract_day + , subq_17.metric_time__extract_dow AS customer_id__metric_time__extract_dow + , subq_17.metric_time__extract_doy AS customer_id__metric_time__extract_doy + , subq_17.customer_third_hop_id AS customer_id__customer_third_hop_id + , subq_17.customer_third_hop_id__customer_id AS customer_id__customer_third_hop_id__customer_id + , subq_14.ds_partitioned__day AS ds_partitioned__day + , subq_14.ds_partitioned__week AS ds_partitioned__week + , subq_14.ds_partitioned__month AS ds_partitioned__month + , subq_14.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_14.ds_partitioned__year AS ds_partitioned__year + , subq_14.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_14.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_14.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_14.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_14.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_14.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_14.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_14.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_14.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_14.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_14.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_14.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_14.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day + , subq_14.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week + , subq_14.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month + , subq_14.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter + , subq_14.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year + , subq_14.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year + , subq_14.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter + , subq_14.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month + , subq_14.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day + , subq_14.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow + , subq_14.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy + , subq_14.metric_time__day AS metric_time__day + , subq_14.metric_time__week AS metric_time__week + , subq_14.metric_time__month AS metric_time__month + , subq_14.metric_time__quarter AS metric_time__quarter + , subq_14.metric_time__year AS metric_time__year + , subq_14.metric_time__extract_year AS metric_time__extract_year + , subq_14.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_14.metric_time__extract_month AS metric_time__extract_month + , subq_14.metric_time__extract_day AS metric_time__extract_day + , subq_14.metric_time__extract_dow AS metric_time__extract_dow + , subq_14.metric_time__extract_doy AS metric_time__extract_doy + , subq_14.account_id AS account_id + , subq_14.customer_id AS customer_id + , subq_14.account_id__customer_id AS account_id__customer_id + , subq_14.bridge_account__account_id AS bridge_account__account_id + , subq_14.bridge_account__customer_id AS bridge_account__customer_id + , subq_14.extra_dim AS extra_dim + , subq_14.account_id__extra_dim AS account_id__extra_dim + , subq_14.bridge_account__extra_dim AS bridge_account__extra_dim + , subq_14.account_customer_combos AS account_customer_combos FROM ( -- Metric Time Dimension 'ds_partitioned' SELECT - subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.account_id__ds_partitioned__day - , subq_4.account_id__ds_partitioned__week - , subq_4.account_id__ds_partitioned__month - , subq_4.account_id__ds_partitioned__quarter - , subq_4.account_id__ds_partitioned__year - , subq_4.account_id__ds_partitioned__extract_year - , subq_4.account_id__ds_partitioned__extract_quarter - , subq_4.account_id__ds_partitioned__extract_month - , subq_4.account_id__ds_partitioned__extract_day - , subq_4.account_id__ds_partitioned__extract_dow - , subq_4.account_id__ds_partitioned__extract_doy - , subq_4.bridge_account__ds_partitioned__day - , subq_4.bridge_account__ds_partitioned__week - , subq_4.bridge_account__ds_partitioned__month - , subq_4.bridge_account__ds_partitioned__quarter - , subq_4.bridge_account__ds_partitioned__year - , subq_4.bridge_account__ds_partitioned__extract_year - , subq_4.bridge_account__ds_partitioned__extract_quarter - , subq_4.bridge_account__ds_partitioned__extract_month - , subq_4.bridge_account__ds_partitioned__extract_day - , subq_4.bridge_account__ds_partitioned__extract_dow - , subq_4.bridge_account__ds_partitioned__extract_doy - , subq_4.ds_partitioned__day AS metric_time__day - , subq_4.ds_partitioned__week AS metric_time__week - , subq_4.ds_partitioned__month AS metric_time__month - , subq_4.ds_partitioned__quarter AS metric_time__quarter - , subq_4.ds_partitioned__year AS metric_time__year - , subq_4.ds_partitioned__extract_year AS metric_time__extract_year - , subq_4.ds_partitioned__extract_quarter AS metric_time__extract_quarter - , subq_4.ds_partitioned__extract_month AS metric_time__extract_month - , subq_4.ds_partitioned__extract_day AS metric_time__extract_day - , subq_4.ds_partitioned__extract_dow AS metric_time__extract_dow - , subq_4.ds_partitioned__extract_doy AS metric_time__extract_doy - , subq_4.account_id - , subq_4.customer_id - , subq_4.account_id__customer_id - , subq_4.bridge_account__account_id - , subq_4.bridge_account__customer_id - , subq_4.extra_dim - , subq_4.account_id__extra_dim - , subq_4.bridge_account__extra_dim - , subq_4.account_customer_combos + subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.account_id__ds_partitioned__day + , subq_13.account_id__ds_partitioned__week + , subq_13.account_id__ds_partitioned__month + , subq_13.account_id__ds_partitioned__quarter + , subq_13.account_id__ds_partitioned__year + , subq_13.account_id__ds_partitioned__extract_year + , subq_13.account_id__ds_partitioned__extract_quarter + , subq_13.account_id__ds_partitioned__extract_month + , subq_13.account_id__ds_partitioned__extract_day + , subq_13.account_id__ds_partitioned__extract_dow + , subq_13.account_id__ds_partitioned__extract_doy + , subq_13.bridge_account__ds_partitioned__day + , subq_13.bridge_account__ds_partitioned__week + , subq_13.bridge_account__ds_partitioned__month + , subq_13.bridge_account__ds_partitioned__quarter + , subq_13.bridge_account__ds_partitioned__year + , subq_13.bridge_account__ds_partitioned__extract_year + , subq_13.bridge_account__ds_partitioned__extract_quarter + , subq_13.bridge_account__ds_partitioned__extract_month + , subq_13.bridge_account__ds_partitioned__extract_day + , subq_13.bridge_account__ds_partitioned__extract_dow + , subq_13.bridge_account__ds_partitioned__extract_doy + , subq_13.ds_partitioned__day AS metric_time__day + , subq_13.ds_partitioned__week AS metric_time__week + , subq_13.ds_partitioned__month AS metric_time__month + , subq_13.ds_partitioned__quarter AS metric_time__quarter + , subq_13.ds_partitioned__year AS metric_time__year + , subq_13.ds_partitioned__extract_year AS metric_time__extract_year + , subq_13.ds_partitioned__extract_quarter AS metric_time__extract_quarter + , subq_13.ds_partitioned__extract_month AS metric_time__extract_month + , subq_13.ds_partitioned__extract_day AS metric_time__extract_day + , subq_13.ds_partitioned__extract_dow AS metric_time__extract_dow + , subq_13.ds_partitioned__extract_doy AS metric_time__extract_doy + , subq_13.account_id + , subq_13.customer_id + , subq_13.account_id__customer_id + , subq_13.bridge_account__account_id + , subq_13.bridge_account__customer_id + , subq_13.extra_dim + , subq_13.account_id__extra_dim + , subq_13.bridge_account__extra_dim + , subq_13.account_customer_combos FROM ( -- Read Elements From Semantic Model 'bridge_table' SELECT @@ -572,8 +572,8 @@ FROM ( , bridge_table_src_22000.account_id AS bridge_account__account_id , bridge_table_src_22000.customer_id AS bridge_account__customer_id FROM ***************************.bridge_table bridge_table_src_22000 - ) subq_4 - ) subq_5 + ) subq_13 + ) subq_14 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'country', @@ -629,112 +629,112 @@ FROM ( -- 'customer_third_hop_id__customer_id', -- ] SELECT - subq_7.acquired_ds__day - , subq_7.acquired_ds__week - , subq_7.acquired_ds__month - , subq_7.acquired_ds__quarter - , subq_7.acquired_ds__year - , subq_7.acquired_ds__extract_year - , subq_7.acquired_ds__extract_quarter - , subq_7.acquired_ds__extract_month - , subq_7.acquired_ds__extract_day - , subq_7.acquired_ds__extract_dow - , subq_7.acquired_ds__extract_doy - , subq_7.customer_id__acquired_ds__day - , subq_7.customer_id__acquired_ds__week - , subq_7.customer_id__acquired_ds__month - , subq_7.customer_id__acquired_ds__quarter - , subq_7.customer_id__acquired_ds__year - , subq_7.customer_id__acquired_ds__extract_year - , subq_7.customer_id__acquired_ds__extract_quarter - , subq_7.customer_id__acquired_ds__extract_month - , subq_7.customer_id__acquired_ds__extract_day - , subq_7.customer_id__acquired_ds__extract_dow - , subq_7.customer_id__acquired_ds__extract_doy - , subq_7.customer_third_hop_id__acquired_ds__day - , subq_7.customer_third_hop_id__acquired_ds__week - , subq_7.customer_third_hop_id__acquired_ds__month - , subq_7.customer_third_hop_id__acquired_ds__quarter - , subq_7.customer_third_hop_id__acquired_ds__year - , subq_7.customer_third_hop_id__acquired_ds__extract_year - , subq_7.customer_third_hop_id__acquired_ds__extract_quarter - , subq_7.customer_third_hop_id__acquired_ds__extract_month - , subq_7.customer_third_hop_id__acquired_ds__extract_day - , subq_7.customer_third_hop_id__acquired_ds__extract_dow - , subq_7.customer_third_hop_id__acquired_ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.customer_id - , subq_7.customer_third_hop_id - , subq_7.customer_id__customer_third_hop_id - , subq_7.customer_third_hop_id__customer_id - , subq_7.country - , subq_7.customer_id__country - , subq_7.customer_third_hop_id__country + subq_16.acquired_ds__day + , subq_16.acquired_ds__week + , subq_16.acquired_ds__month + , subq_16.acquired_ds__quarter + , subq_16.acquired_ds__year + , subq_16.acquired_ds__extract_year + , subq_16.acquired_ds__extract_quarter + , subq_16.acquired_ds__extract_month + , subq_16.acquired_ds__extract_day + , subq_16.acquired_ds__extract_dow + , subq_16.acquired_ds__extract_doy + , subq_16.customer_id__acquired_ds__day + , subq_16.customer_id__acquired_ds__week + , subq_16.customer_id__acquired_ds__month + , subq_16.customer_id__acquired_ds__quarter + , subq_16.customer_id__acquired_ds__year + , subq_16.customer_id__acquired_ds__extract_year + , subq_16.customer_id__acquired_ds__extract_quarter + , subq_16.customer_id__acquired_ds__extract_month + , subq_16.customer_id__acquired_ds__extract_day + , subq_16.customer_id__acquired_ds__extract_dow + , subq_16.customer_id__acquired_ds__extract_doy + , subq_16.customer_third_hop_id__acquired_ds__day + , subq_16.customer_third_hop_id__acquired_ds__week + , subq_16.customer_third_hop_id__acquired_ds__month + , subq_16.customer_third_hop_id__acquired_ds__quarter + , subq_16.customer_third_hop_id__acquired_ds__year + , subq_16.customer_third_hop_id__acquired_ds__extract_year + , subq_16.customer_third_hop_id__acquired_ds__extract_quarter + , subq_16.customer_third_hop_id__acquired_ds__extract_month + , subq_16.customer_third_hop_id__acquired_ds__extract_day + , subq_16.customer_third_hop_id__acquired_ds__extract_dow + , subq_16.customer_third_hop_id__acquired_ds__extract_doy + , subq_16.metric_time__day + , subq_16.metric_time__week + , subq_16.metric_time__month + , subq_16.metric_time__quarter + , subq_16.metric_time__year + , subq_16.metric_time__extract_year + , subq_16.metric_time__extract_quarter + , subq_16.metric_time__extract_month + , subq_16.metric_time__extract_day + , subq_16.metric_time__extract_dow + , subq_16.metric_time__extract_doy + , subq_16.customer_id + , subq_16.customer_third_hop_id + , subq_16.customer_id__customer_third_hop_id + , subq_16.customer_third_hop_id__customer_id + , subq_16.country + , subq_16.customer_id__country + , subq_16.customer_third_hop_id__country FROM ( -- Metric Time Dimension 'acquired_ds' SELECT - subq_6.acquired_ds__day - , subq_6.acquired_ds__week - , subq_6.acquired_ds__month - , subq_6.acquired_ds__quarter - , subq_6.acquired_ds__year - , subq_6.acquired_ds__extract_year - , subq_6.acquired_ds__extract_quarter - , subq_6.acquired_ds__extract_month - , subq_6.acquired_ds__extract_day - , subq_6.acquired_ds__extract_dow - , subq_6.acquired_ds__extract_doy - , subq_6.customer_id__acquired_ds__day - , subq_6.customer_id__acquired_ds__week - , subq_6.customer_id__acquired_ds__month - , subq_6.customer_id__acquired_ds__quarter - , subq_6.customer_id__acquired_ds__year - , subq_6.customer_id__acquired_ds__extract_year - , subq_6.customer_id__acquired_ds__extract_quarter - , subq_6.customer_id__acquired_ds__extract_month - , subq_6.customer_id__acquired_ds__extract_day - , subq_6.customer_id__acquired_ds__extract_dow - , subq_6.customer_id__acquired_ds__extract_doy - , subq_6.customer_third_hop_id__acquired_ds__day - , subq_6.customer_third_hop_id__acquired_ds__week - , subq_6.customer_third_hop_id__acquired_ds__month - , subq_6.customer_third_hop_id__acquired_ds__quarter - , subq_6.customer_third_hop_id__acquired_ds__year - , subq_6.customer_third_hop_id__acquired_ds__extract_year - , subq_6.customer_third_hop_id__acquired_ds__extract_quarter - , subq_6.customer_third_hop_id__acquired_ds__extract_month - , subq_6.customer_third_hop_id__acquired_ds__extract_day - , subq_6.customer_third_hop_id__acquired_ds__extract_dow - , subq_6.customer_third_hop_id__acquired_ds__extract_doy - , subq_6.acquired_ds__day AS metric_time__day - , subq_6.acquired_ds__week AS metric_time__week - , subq_6.acquired_ds__month AS metric_time__month - , subq_6.acquired_ds__quarter AS metric_time__quarter - , subq_6.acquired_ds__year AS metric_time__year - , subq_6.acquired_ds__extract_year AS metric_time__extract_year - , subq_6.acquired_ds__extract_quarter AS metric_time__extract_quarter - , subq_6.acquired_ds__extract_month AS metric_time__extract_month - , subq_6.acquired_ds__extract_day AS metric_time__extract_day - , subq_6.acquired_ds__extract_dow AS metric_time__extract_dow - , subq_6.acquired_ds__extract_doy AS metric_time__extract_doy - , subq_6.customer_id - , subq_6.customer_third_hop_id - , subq_6.customer_id__customer_third_hop_id - , subq_6.customer_third_hop_id__customer_id - , subq_6.country - , subq_6.customer_id__country - , subq_6.customer_third_hop_id__country - , subq_6.customers_with_other_data + subq_15.acquired_ds__day + , subq_15.acquired_ds__week + , subq_15.acquired_ds__month + , subq_15.acquired_ds__quarter + , subq_15.acquired_ds__year + , subq_15.acquired_ds__extract_year + , subq_15.acquired_ds__extract_quarter + , subq_15.acquired_ds__extract_month + , subq_15.acquired_ds__extract_day + , subq_15.acquired_ds__extract_dow + , subq_15.acquired_ds__extract_doy + , subq_15.customer_id__acquired_ds__day + , subq_15.customer_id__acquired_ds__week + , subq_15.customer_id__acquired_ds__month + , subq_15.customer_id__acquired_ds__quarter + , subq_15.customer_id__acquired_ds__year + , subq_15.customer_id__acquired_ds__extract_year + , subq_15.customer_id__acquired_ds__extract_quarter + , subq_15.customer_id__acquired_ds__extract_month + , subq_15.customer_id__acquired_ds__extract_day + , subq_15.customer_id__acquired_ds__extract_dow + , subq_15.customer_id__acquired_ds__extract_doy + , subq_15.customer_third_hop_id__acquired_ds__day + , subq_15.customer_third_hop_id__acquired_ds__week + , subq_15.customer_third_hop_id__acquired_ds__month + , subq_15.customer_third_hop_id__acquired_ds__quarter + , subq_15.customer_third_hop_id__acquired_ds__year + , subq_15.customer_third_hop_id__acquired_ds__extract_year + , subq_15.customer_third_hop_id__acquired_ds__extract_quarter + , subq_15.customer_third_hop_id__acquired_ds__extract_month + , subq_15.customer_third_hop_id__acquired_ds__extract_day + , subq_15.customer_third_hop_id__acquired_ds__extract_dow + , subq_15.customer_third_hop_id__acquired_ds__extract_doy + , subq_15.acquired_ds__day AS metric_time__day + , subq_15.acquired_ds__week AS metric_time__week + , subq_15.acquired_ds__month AS metric_time__month + , subq_15.acquired_ds__quarter AS metric_time__quarter + , subq_15.acquired_ds__year AS metric_time__year + , subq_15.acquired_ds__extract_year AS metric_time__extract_year + , subq_15.acquired_ds__extract_quarter AS metric_time__extract_quarter + , subq_15.acquired_ds__extract_month AS metric_time__extract_month + , subq_15.acquired_ds__extract_day AS metric_time__extract_day + , subq_15.acquired_ds__extract_dow AS metric_time__extract_dow + , subq_15.acquired_ds__extract_doy AS metric_time__extract_doy + , subq_15.customer_id + , subq_15.customer_third_hop_id + , subq_15.customer_id__customer_third_hop_id + , subq_15.customer_third_hop_id__customer_id + , subq_15.country + , subq_15.customer_id__country + , subq_15.customer_third_hop_id__country + , subq_15.customers_with_other_data FROM ( -- Read Elements From Semantic Model 'customer_other_data' SELECT @@ -780,30 +780,30 @@ FROM ( , customer_other_data_src_22000.customer_third_hop_id AS customer_id__customer_third_hop_id , customer_other_data_src_22000.customer_id AS customer_third_hop_id__customer_id FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_15 + ) subq_16 + ) subq_17 ON - subq_5.customer_id = subq_8.customer_id - ) subq_9 - ) subq_10 + subq_14.customer_id = subq_17.customer_id + ) subq_18 + ) subq_19 ON ( - subq_3.account_id = subq_10.account_id + subq_12.account_id = subq_19.account_id ) AND ( - subq_3.ds_partitioned__day = subq_10.ds_partitioned__day + subq_12.ds_partitioned__day = subq_19.ds_partitioned__day ) - ) subq_11 - ) subq_12 + ) subq_20 + ) subq_21 GROUP BY - subq_12.account_id__customer_id__customer_third_hop_id - ) subq_13 - ) subq_14 - ) subq_15 + subq_21.account_id__customer_id__customer_third_hop_id + ) subq_22 + ) subq_23 + ) subq_24 ON - subq_1.customer_third_hop_id = subq_15.account_id__customer_id__customer_third_hop_id - ) subq_16 + subq_10.customer_third_hop_id = subq_24.account_id__customer_id__customer_third_hop_id + ) subq_25 WHERE customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count > 2 - ) subq_17 - ) subq_18 -) subq_19 + ) subq_26 + ) subq_27 +) subq_28 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0_optimized.sql index df66df82d3..22a3f51d25 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_multi_hop__plan0_optimized.sql @@ -13,7 +13,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_35.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + subq_44.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count , third_hop_table_src_22000.customer_third_hop_id AS third_hop_count FROM ***************************.third_hop_table third_hop_table_src_22000 LEFT OUTER JOIN ( @@ -23,7 +23,7 @@ FROM ( -- Compute Metrics via Expressions -- Pass Only Elements: ['account_id__customer_id__customer_third_hop_id', 'account_id__customer_id__customer_third_hop_id__txn_count'] SELECT - subq_30.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id + subq_39.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id , SUM(account_month_txns_src_22000.txn_count) AS account_id__customer_id__customer_third_hop_id__txn_count FROM ***************************.account_month_txns account_month_txns_src_22000 LEFT OUTER JOIN ( @@ -38,17 +38,17 @@ FROM ( ***************************.customer_other_data customer_other_data_src_22000 ON bridge_table_src_22000.customer_id = customer_other_data_src_22000.customer_id - ) subq_30 + ) subq_39 ON ( - account_month_txns_src_22000.account_id = subq_30.account_id + account_month_txns_src_22000.account_id = subq_39.account_id ) AND ( - DATE_TRUNC('day', account_month_txns_src_22000.ds_partitioned) = subq_30.ds_partitioned__day + DATE_TRUNC('day', account_month_txns_src_22000.ds_partitioned) = subq_39.ds_partitioned__day ) GROUP BY - subq_30.customer_id__customer_third_hop_id - ) subq_35 + subq_39.customer_id__customer_third_hop_id + ) subq_44 ON - third_hop_table_src_22000.customer_third_hop_id = subq_35.account_id__customer_id__customer_third_hop_id -) subq_36 + third_hop_table_src_22000.customer_third_hop_id = subq_44.account_id__customer_id__customer_third_hop_id +) subq_45 WHERE customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0.sql index 3a87a7de47..dda0dc49bc 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0.sql @@ -6,139 +6,139 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_12.third_hop_count + subq_16.third_hop_count FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_11.third_hop_count) AS third_hop_count + COUNT(DISTINCT subq_15.third_hop_count) AS third_hop_count FROM ( -- Pass Only Elements: ['third_hop_count',] SELECT - subq_10.third_hop_count + subq_14.third_hop_count FROM ( -- Constrain Output with WHERE SELECT - subq_9.third_hop_ds__day - , subq_9.third_hop_ds__week - , subq_9.third_hop_ds__month - , subq_9.third_hop_ds__quarter - , subq_9.third_hop_ds__year - , subq_9.third_hop_ds__extract_year - , subq_9.third_hop_ds__extract_quarter - , subq_9.third_hop_ds__extract_month - , subq_9.third_hop_ds__extract_day - , subq_9.third_hop_ds__extract_dow - , subq_9.third_hop_ds__extract_doy - , subq_9.customer_third_hop_id__third_hop_ds__day - , subq_9.customer_third_hop_id__third_hop_ds__week - , subq_9.customer_third_hop_id__third_hop_ds__month - , subq_9.customer_third_hop_id__third_hop_ds__quarter - , subq_9.customer_third_hop_id__third_hop_ds__year - , subq_9.customer_third_hop_id__third_hop_ds__extract_year - , subq_9.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_9.customer_third_hop_id__third_hop_ds__extract_month - , subq_9.customer_third_hop_id__third_hop_ds__extract_day - , subq_9.customer_third_hop_id__third_hop_ds__extract_dow - , subq_9.customer_third_hop_id__third_hop_ds__extract_doy - , subq_9.metric_time__day - , subq_9.metric_time__week - , subq_9.metric_time__month - , subq_9.metric_time__quarter - , subq_9.metric_time__year - , subq_9.metric_time__extract_year - , subq_9.metric_time__extract_quarter - , subq_9.metric_time__extract_month - , subq_9.metric_time__extract_day - , subq_9.metric_time__extract_dow - , subq_9.metric_time__extract_doy - , subq_9.customer_third_hop_id - , subq_9.customer_third_hop_id__customer_id__customer_third_hop_id - , subq_9.value - , subq_9.customer_third_hop_id__value - , subq_9.customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers - , subq_9.third_hop_count + subq_13.third_hop_ds__day + , subq_13.third_hop_ds__week + , subq_13.third_hop_ds__month + , subq_13.third_hop_ds__quarter + , subq_13.third_hop_ds__year + , subq_13.third_hop_ds__extract_year + , subq_13.third_hop_ds__extract_quarter + , subq_13.third_hop_ds__extract_month + , subq_13.third_hop_ds__extract_day + , subq_13.third_hop_ds__extract_dow + , subq_13.third_hop_ds__extract_doy + , subq_13.customer_third_hop_id__third_hop_ds__day + , subq_13.customer_third_hop_id__third_hop_ds__week + , subq_13.customer_third_hop_id__third_hop_ds__month + , subq_13.customer_third_hop_id__third_hop_ds__quarter + , subq_13.customer_third_hop_id__third_hop_ds__year + , subq_13.customer_third_hop_id__third_hop_ds__extract_year + , subq_13.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_13.customer_third_hop_id__third_hop_ds__extract_month + , subq_13.customer_third_hop_id__third_hop_ds__extract_day + , subq_13.customer_third_hop_id__third_hop_ds__extract_dow + , subq_13.customer_third_hop_id__third_hop_ds__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.customer_third_hop_id + , subq_13.customer_third_hop_id__customer_id__customer_third_hop_id + , subq_13.value + , subq_13.customer_third_hop_id__value + , subq_13.customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + , subq_13.third_hop_count FROM ( -- Join Standard Outputs SELECT - subq_8.customer_id__customer_third_hop_id AS customer_third_hop_id__customer_id__customer_third_hop_id - , subq_8.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers - , subq_1.third_hop_ds__day AS third_hop_ds__day - , subq_1.third_hop_ds__week AS third_hop_ds__week - , subq_1.third_hop_ds__month AS third_hop_ds__month - , subq_1.third_hop_ds__quarter AS third_hop_ds__quarter - , subq_1.third_hop_ds__year AS third_hop_ds__year - , subq_1.third_hop_ds__extract_year AS third_hop_ds__extract_year - , subq_1.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter - , subq_1.third_hop_ds__extract_month AS third_hop_ds__extract_month - , subq_1.third_hop_ds__extract_day AS third_hop_ds__extract_day - , subq_1.third_hop_ds__extract_dow AS third_hop_ds__extract_dow - , subq_1.third_hop_ds__extract_doy AS third_hop_ds__extract_doy - , subq_1.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day - , subq_1.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week - , subq_1.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month - , subq_1.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter - , subq_1.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year - , subq_1.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year - , subq_1.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter - , subq_1.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month - , subq_1.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day - , subq_1.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow - , subq_1.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.customer_third_hop_id AS customer_third_hop_id - , subq_1.value AS value - , subq_1.customer_third_hop_id__value AS customer_third_hop_id__value - , subq_1.third_hop_count AS third_hop_count + subq_12.customer_id__customer_third_hop_id AS customer_third_hop_id__customer_id__customer_third_hop_id + , subq_12.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + , subq_5.third_hop_ds__day AS third_hop_ds__day + , subq_5.third_hop_ds__week AS third_hop_ds__week + , subq_5.third_hop_ds__month AS third_hop_ds__month + , subq_5.third_hop_ds__quarter AS third_hop_ds__quarter + , subq_5.third_hop_ds__year AS third_hop_ds__year + , subq_5.third_hop_ds__extract_year AS third_hop_ds__extract_year + , subq_5.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter + , subq_5.third_hop_ds__extract_month AS third_hop_ds__extract_month + , subq_5.third_hop_ds__extract_day AS third_hop_ds__extract_day + , subq_5.third_hop_ds__extract_dow AS third_hop_ds__extract_dow + , subq_5.third_hop_ds__extract_doy AS third_hop_ds__extract_doy + , subq_5.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day + , subq_5.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week + , subq_5.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month + , subq_5.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter + , subq_5.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year + , subq_5.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year + , subq_5.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter + , subq_5.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month + , subq_5.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day + , subq_5.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow + , subq_5.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.customer_third_hop_id AS customer_third_hop_id + , subq_5.value AS value + , subq_5.customer_third_hop_id__value AS customer_third_hop_id__value + , subq_5.third_hop_count AS third_hop_count FROM ( -- Metric Time Dimension 'third_hop_ds' SELECT - subq_0.third_hop_ds__day - , subq_0.third_hop_ds__week - , subq_0.third_hop_ds__month - , subq_0.third_hop_ds__quarter - , subq_0.third_hop_ds__year - , subq_0.third_hop_ds__extract_year - , subq_0.third_hop_ds__extract_quarter - , subq_0.third_hop_ds__extract_month - , subq_0.third_hop_ds__extract_day - , subq_0.third_hop_ds__extract_dow - , subq_0.third_hop_ds__extract_doy - , subq_0.customer_third_hop_id__third_hop_ds__day - , subq_0.customer_third_hop_id__third_hop_ds__week - , subq_0.customer_third_hop_id__third_hop_ds__month - , subq_0.customer_third_hop_id__third_hop_ds__quarter - , subq_0.customer_third_hop_id__third_hop_ds__year - , subq_0.customer_third_hop_id__third_hop_ds__extract_year - , subq_0.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_0.customer_third_hop_id__third_hop_ds__extract_month - , subq_0.customer_third_hop_id__third_hop_ds__extract_day - , subq_0.customer_third_hop_id__third_hop_ds__extract_dow - , subq_0.customer_third_hop_id__third_hop_ds__extract_doy - , subq_0.third_hop_ds__day AS metric_time__day - , subq_0.third_hop_ds__week AS metric_time__week - , subq_0.third_hop_ds__month AS metric_time__month - , subq_0.third_hop_ds__quarter AS metric_time__quarter - , subq_0.third_hop_ds__year AS metric_time__year - , subq_0.third_hop_ds__extract_year AS metric_time__extract_year - , subq_0.third_hop_ds__extract_quarter AS metric_time__extract_quarter - , subq_0.third_hop_ds__extract_month AS metric_time__extract_month - , subq_0.third_hop_ds__extract_day AS metric_time__extract_day - , subq_0.third_hop_ds__extract_dow AS metric_time__extract_dow - , subq_0.third_hop_ds__extract_doy AS metric_time__extract_doy - , subq_0.customer_third_hop_id - , subq_0.value - , subq_0.customer_third_hop_id__value - , subq_0.third_hop_count + subq_4.third_hop_ds__day + , subq_4.third_hop_ds__week + , subq_4.third_hop_ds__month + , subq_4.third_hop_ds__quarter + , subq_4.third_hop_ds__year + , subq_4.third_hop_ds__extract_year + , subq_4.third_hop_ds__extract_quarter + , subq_4.third_hop_ds__extract_month + , subq_4.third_hop_ds__extract_day + , subq_4.third_hop_ds__extract_dow + , subq_4.third_hop_ds__extract_doy + , subq_4.customer_third_hop_id__third_hop_ds__day + , subq_4.customer_third_hop_id__third_hop_ds__week + , subq_4.customer_third_hop_id__third_hop_ds__month + , subq_4.customer_third_hop_id__third_hop_ds__quarter + , subq_4.customer_third_hop_id__third_hop_ds__year + , subq_4.customer_third_hop_id__third_hop_ds__extract_year + , subq_4.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_4.customer_third_hop_id__third_hop_ds__extract_month + , subq_4.customer_third_hop_id__third_hop_ds__extract_day + , subq_4.customer_third_hop_id__third_hop_ds__extract_dow + , subq_4.customer_third_hop_id__third_hop_ds__extract_doy + , subq_4.third_hop_ds__day AS metric_time__day + , subq_4.third_hop_ds__week AS metric_time__week + , subq_4.third_hop_ds__month AS metric_time__month + , subq_4.third_hop_ds__quarter AS metric_time__quarter + , subq_4.third_hop_ds__year AS metric_time__year + , subq_4.third_hop_ds__extract_year AS metric_time__extract_year + , subq_4.third_hop_ds__extract_quarter AS metric_time__extract_quarter + , subq_4.third_hop_ds__extract_month AS metric_time__extract_month + , subq_4.third_hop_ds__extract_day AS metric_time__extract_day + , subq_4.third_hop_ds__extract_dow AS metric_time__extract_dow + , subq_4.third_hop_ds__extract_doy AS metric_time__extract_doy + , subq_4.customer_third_hop_id + , subq_4.value + , subq_4.customer_third_hop_id__value + , subq_4.third_hop_count FROM ( -- Read Elements From Semantic Model 'third_hop_table' SELECT @@ -169,138 +169,138 @@ FROM ( , EXTRACT(doy FROM third_hop_table_src_22000.third_hop_ds) AS customer_third_hop_id__third_hop_ds__extract_doy , third_hop_table_src_22000.customer_third_hop_id FROM ***************************.third_hop_table third_hop_table_src_22000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 LEFT OUTER JOIN ( -- Pass Only Elements: ['customer_id__customer_third_hop_id', 'customer_id__customer_third_hop_id__paraguayan_customers'] SELECT - subq_7.customer_id__customer_third_hop_id - , subq_7.customer_id__customer_third_hop_id__paraguayan_customers + subq_11.customer_id__customer_third_hop_id + , subq_11.customer_id__customer_third_hop_id__paraguayan_customers FROM ( -- Compute Metrics via Expressions SELECT - subq_6.customer_id__customer_third_hop_id - , subq_6.customers_with_other_data AS customer_id__customer_third_hop_id__paraguayan_customers + subq_10.customer_id__customer_third_hop_id + , subq_10.customers_with_other_data AS customer_id__customer_third_hop_id__paraguayan_customers FROM ( -- Aggregate Measures SELECT - subq_5.customer_id__customer_third_hop_id - , SUM(subq_5.customers_with_other_data) AS customers_with_other_data + subq_9.customer_id__customer_third_hop_id + , SUM(subq_9.customers_with_other_data) AS customers_with_other_data FROM ( -- Pass Only Elements: ['customers_with_other_data', 'customer_id__customer_third_hop_id'] SELECT - subq_4.customer_id__customer_third_hop_id - , subq_4.customers_with_other_data + subq_8.customer_id__customer_third_hop_id + , subq_8.customers_with_other_data FROM ( -- Constrain Output with WHERE SELECT - subq_3.acquired_ds__day - , subq_3.acquired_ds__week - , subq_3.acquired_ds__month - , subq_3.acquired_ds__quarter - , subq_3.acquired_ds__year - , subq_3.acquired_ds__extract_year - , subq_3.acquired_ds__extract_quarter - , subq_3.acquired_ds__extract_month - , subq_3.acquired_ds__extract_day - , subq_3.acquired_ds__extract_dow - , subq_3.acquired_ds__extract_doy - , subq_3.customer_id__acquired_ds__day - , subq_3.customer_id__acquired_ds__week - , subq_3.customer_id__acquired_ds__month - , subq_3.customer_id__acquired_ds__quarter - , subq_3.customer_id__acquired_ds__year - , subq_3.customer_id__acquired_ds__extract_year - , subq_3.customer_id__acquired_ds__extract_quarter - , subq_3.customer_id__acquired_ds__extract_month - , subq_3.customer_id__acquired_ds__extract_day - , subq_3.customer_id__acquired_ds__extract_dow - , subq_3.customer_id__acquired_ds__extract_doy - , subq_3.customer_third_hop_id__acquired_ds__day - , subq_3.customer_third_hop_id__acquired_ds__week - , subq_3.customer_third_hop_id__acquired_ds__month - , subq_3.customer_third_hop_id__acquired_ds__quarter - , subq_3.customer_third_hop_id__acquired_ds__year - , subq_3.customer_third_hop_id__acquired_ds__extract_year - , subq_3.customer_third_hop_id__acquired_ds__extract_quarter - , subq_3.customer_third_hop_id__acquired_ds__extract_month - , subq_3.customer_third_hop_id__acquired_ds__extract_day - , subq_3.customer_third_hop_id__acquired_ds__extract_dow - , subq_3.customer_third_hop_id__acquired_ds__extract_doy - , subq_3.metric_time__day - , subq_3.metric_time__week - , subq_3.metric_time__month - , subq_3.metric_time__quarter - , subq_3.metric_time__year - , subq_3.metric_time__extract_year - , subq_3.metric_time__extract_quarter - , subq_3.metric_time__extract_month - , subq_3.metric_time__extract_day - , subq_3.metric_time__extract_dow - , subq_3.metric_time__extract_doy - , subq_3.customer_id - , subq_3.customer_third_hop_id - , subq_3.customer_id__customer_third_hop_id - , subq_3.customer_third_hop_id__customer_id - , subq_3.country - , subq_3.customer_id__country - , subq_3.customer_third_hop_id__country - , subq_3.customers_with_other_data + subq_7.acquired_ds__day + , subq_7.acquired_ds__week + , subq_7.acquired_ds__month + , subq_7.acquired_ds__quarter + , subq_7.acquired_ds__year + , subq_7.acquired_ds__extract_year + , subq_7.acquired_ds__extract_quarter + , subq_7.acquired_ds__extract_month + , subq_7.acquired_ds__extract_day + , subq_7.acquired_ds__extract_dow + , subq_7.acquired_ds__extract_doy + , subq_7.customer_id__acquired_ds__day + , subq_7.customer_id__acquired_ds__week + , subq_7.customer_id__acquired_ds__month + , subq_7.customer_id__acquired_ds__quarter + , subq_7.customer_id__acquired_ds__year + , subq_7.customer_id__acquired_ds__extract_year + , subq_7.customer_id__acquired_ds__extract_quarter + , subq_7.customer_id__acquired_ds__extract_month + , subq_7.customer_id__acquired_ds__extract_day + , subq_7.customer_id__acquired_ds__extract_dow + , subq_7.customer_id__acquired_ds__extract_doy + , subq_7.customer_third_hop_id__acquired_ds__day + , subq_7.customer_third_hop_id__acquired_ds__week + , subq_7.customer_third_hop_id__acquired_ds__month + , subq_7.customer_third_hop_id__acquired_ds__quarter + , subq_7.customer_third_hop_id__acquired_ds__year + , subq_7.customer_third_hop_id__acquired_ds__extract_year + , subq_7.customer_third_hop_id__acquired_ds__extract_quarter + , subq_7.customer_third_hop_id__acquired_ds__extract_month + , subq_7.customer_third_hop_id__acquired_ds__extract_day + , subq_7.customer_third_hop_id__acquired_ds__extract_dow + , subq_7.customer_third_hop_id__acquired_ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.customer_id + , subq_7.customer_third_hop_id + , subq_7.customer_id__customer_third_hop_id + , subq_7.customer_third_hop_id__customer_id + , subq_7.country + , subq_7.customer_id__country + , subq_7.customer_third_hop_id__country + , subq_7.customers_with_other_data FROM ( -- Metric Time Dimension 'acquired_ds' SELECT - subq_2.acquired_ds__day - , subq_2.acquired_ds__week - , subq_2.acquired_ds__month - , subq_2.acquired_ds__quarter - , subq_2.acquired_ds__year - , subq_2.acquired_ds__extract_year - , subq_2.acquired_ds__extract_quarter - , subq_2.acquired_ds__extract_month - , subq_2.acquired_ds__extract_day - , subq_2.acquired_ds__extract_dow - , subq_2.acquired_ds__extract_doy - , subq_2.customer_id__acquired_ds__day - , subq_2.customer_id__acquired_ds__week - , subq_2.customer_id__acquired_ds__month - , subq_2.customer_id__acquired_ds__quarter - , subq_2.customer_id__acquired_ds__year - , subq_2.customer_id__acquired_ds__extract_year - , subq_2.customer_id__acquired_ds__extract_quarter - , subq_2.customer_id__acquired_ds__extract_month - , subq_2.customer_id__acquired_ds__extract_day - , subq_2.customer_id__acquired_ds__extract_dow - , subq_2.customer_id__acquired_ds__extract_doy - , subq_2.customer_third_hop_id__acquired_ds__day - , subq_2.customer_third_hop_id__acquired_ds__week - , subq_2.customer_third_hop_id__acquired_ds__month - , subq_2.customer_third_hop_id__acquired_ds__quarter - , subq_2.customer_third_hop_id__acquired_ds__year - , subq_2.customer_third_hop_id__acquired_ds__extract_year - , subq_2.customer_third_hop_id__acquired_ds__extract_quarter - , subq_2.customer_third_hop_id__acquired_ds__extract_month - , subq_2.customer_third_hop_id__acquired_ds__extract_day - , subq_2.customer_third_hop_id__acquired_ds__extract_dow - , subq_2.customer_third_hop_id__acquired_ds__extract_doy - , subq_2.acquired_ds__day AS metric_time__day - , subq_2.acquired_ds__week AS metric_time__week - , subq_2.acquired_ds__month AS metric_time__month - , subq_2.acquired_ds__quarter AS metric_time__quarter - , subq_2.acquired_ds__year AS metric_time__year - , subq_2.acquired_ds__extract_year AS metric_time__extract_year - , subq_2.acquired_ds__extract_quarter AS metric_time__extract_quarter - , subq_2.acquired_ds__extract_month AS metric_time__extract_month - , subq_2.acquired_ds__extract_day AS metric_time__extract_day - , subq_2.acquired_ds__extract_dow AS metric_time__extract_dow - , subq_2.acquired_ds__extract_doy AS metric_time__extract_doy - , subq_2.customer_id - , subq_2.customer_third_hop_id - , subq_2.customer_id__customer_third_hop_id - , subq_2.customer_third_hop_id__customer_id - , subq_2.country - , subq_2.customer_id__country - , subq_2.customer_third_hop_id__country - , subq_2.customers_with_other_data + subq_6.acquired_ds__day + , subq_6.acquired_ds__week + , subq_6.acquired_ds__month + , subq_6.acquired_ds__quarter + , subq_6.acquired_ds__year + , subq_6.acquired_ds__extract_year + , subq_6.acquired_ds__extract_quarter + , subq_6.acquired_ds__extract_month + , subq_6.acquired_ds__extract_day + , subq_6.acquired_ds__extract_dow + , subq_6.acquired_ds__extract_doy + , subq_6.customer_id__acquired_ds__day + , subq_6.customer_id__acquired_ds__week + , subq_6.customer_id__acquired_ds__month + , subq_6.customer_id__acquired_ds__quarter + , subq_6.customer_id__acquired_ds__year + , subq_6.customer_id__acquired_ds__extract_year + , subq_6.customer_id__acquired_ds__extract_quarter + , subq_6.customer_id__acquired_ds__extract_month + , subq_6.customer_id__acquired_ds__extract_day + , subq_6.customer_id__acquired_ds__extract_dow + , subq_6.customer_id__acquired_ds__extract_doy + , subq_6.customer_third_hop_id__acquired_ds__day + , subq_6.customer_third_hop_id__acquired_ds__week + , subq_6.customer_third_hop_id__acquired_ds__month + , subq_6.customer_third_hop_id__acquired_ds__quarter + , subq_6.customer_third_hop_id__acquired_ds__year + , subq_6.customer_third_hop_id__acquired_ds__extract_year + , subq_6.customer_third_hop_id__acquired_ds__extract_quarter + , subq_6.customer_third_hop_id__acquired_ds__extract_month + , subq_6.customer_third_hop_id__acquired_ds__extract_day + , subq_6.customer_third_hop_id__acquired_ds__extract_dow + , subq_6.customer_third_hop_id__acquired_ds__extract_doy + , subq_6.acquired_ds__day AS metric_time__day + , subq_6.acquired_ds__week AS metric_time__week + , subq_6.acquired_ds__month AS metric_time__month + , subq_6.acquired_ds__quarter AS metric_time__quarter + , subq_6.acquired_ds__year AS metric_time__year + , subq_6.acquired_ds__extract_year AS metric_time__extract_year + , subq_6.acquired_ds__extract_quarter AS metric_time__extract_quarter + , subq_6.acquired_ds__extract_month AS metric_time__extract_month + , subq_6.acquired_ds__extract_day AS metric_time__extract_day + , subq_6.acquired_ds__extract_dow AS metric_time__extract_dow + , subq_6.acquired_ds__extract_doy AS metric_time__extract_doy + , subq_6.customer_id + , subq_6.customer_third_hop_id + , subq_6.customer_id__customer_third_hop_id + , subq_6.customer_third_hop_id__customer_id + , subq_6.country + , subq_6.customer_id__country + , subq_6.customer_third_hop_id__country + , subq_6.customers_with_other_data FROM ( -- Read Elements From Semantic Model 'customer_other_data' SELECT @@ -346,20 +346,20 @@ FROM ( , customer_other_data_src_22000.customer_third_hop_id AS customer_id__customer_third_hop_id , customer_other_data_src_22000.customer_id AS customer_third_hop_id__customer_id FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_2 - ) subq_3 + ) subq_6 + ) subq_7 WHERE customer_id__country = 'paraguay' - ) subq_4 - ) subq_5 + ) subq_8 + ) subq_9 GROUP BY - subq_5.customer_id__customer_third_hop_id - ) subq_6 - ) subq_7 - ) subq_8 + subq_9.customer_id__customer_third_hop_id + ) subq_10 + ) subq_11 + ) subq_12 ON - subq_1.customer_third_hop_id = subq_8.customer_id__customer_third_hop_id - ) subq_9 + subq_5.customer_third_hop_id = subq_12.customer_id__customer_third_hop_id + ) subq_13 WHERE customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers > 0 - ) subq_10 - ) subq_11 -) subq_12 + ) subq_14 + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0_optimized.sql index a0ea887e54..bb57d9ca49 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_inner_query_single_hop__plan0_optimized.sql @@ -13,7 +13,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_21.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + subq_25.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers , third_hop_table_src_22000.customer_third_hop_id AS third_hop_count FROM ***************************.third_hop_table third_hop_table_src_22000 LEFT OUTER JOIN ( @@ -33,12 +33,12 @@ FROM ( , country AS customer_id__country , 1 AS customers_with_other_data FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_16 + ) subq_20 WHERE customer_id__country = 'paraguay' GROUP BY customer_id__customer_third_hop_id - ) subq_21 + ) subq_25 ON - third_hop_table_src_22000.customer_third_hop_id = subq_21.customer_id__customer_third_hop_id -) subq_22 + third_hop_table_src_22000.customer_third_hop_id = subq_25.customer_id__customer_third_hop_id +) subq_26 WHERE customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers > 0 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0.sql index ac7e82f126..86043661f4 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0.sql @@ -6,320 +6,320 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.bookers + subq_13.bookers FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_10.bookers) AS bookers + COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers',] SELECT - subq_9.bookers + subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.listing__bookers - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.listing__bookers + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookers AS listing__bookers - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.listing__bookers AS listing__bookers + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -412,129 +412,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookers'] SELECT - subq_6.listing - , subq_6.listing__bookers + subq_8.listing + , subq_8.listing__bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookers AS listing__bookers + subq_7.listing + , subq_7.bookers AS listing__bookers FROM ( -- Aggregate Measures SELECT - subq_4.listing - , COUNT(DISTINCT subq_4.bookers) AS bookers + subq_6.listing + , COUNT(DISTINCT subq_6.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_3.listing - , subq_3.bookers + subq_5.listing + , subq_5.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -627,18 +627,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_6.listing + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_9.listing + ) subq_10 WHERE listing__bookers > 1.00 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0_optimized.sql index 00925b6d06..3f8b488e21 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_filtered_by_itself__plan0_optimized.sql @@ -22,15 +22,15 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_18.listing__bookers AS listing__bookers - , subq_13.bookers AS bookers + subq_20.listing__bookers AS listing__bookers + , subq_15.bookers AS bookers FROM ( -- Read From CTE For node_id=sma_28009 SELECT listing , bookers FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_15 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'listing'] @@ -43,8 +43,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_18 + ) subq_20 ON - subq_13.listing = subq_18.listing -) subq_19 + subq_15.listing = subq_20.listing +) subq_21 WHERE listing__bookers > 1.00 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql index 635997908a..0f399d0c52 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0.sql @@ -6,230 +6,230 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day - , subq_11.listings AS active_listings + subq_14.metric_time__day + , subq_14.listings AS active_listings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__day - , SUM(subq_10.listings) AS listings + subq_13.metric_time__day + , SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings', 'metric_time__day'] SELECT - subq_9.metric_time__day - , subq_9.listings + subq_12.metric_time__day + , subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.listing__bookings - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.listing__bookings + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.listing__bookings AS listing__bookings + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -290,129 +290,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_9.listing + , subq_9.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_8.listing + , subq_8.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_7.listing + , SUM(subq_7.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_6.listing + , subq_6.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.paid_at__day + , subq_5.paid_at__week + , subq_5.paid_at__month + , subq_5.paid_at__quarter + , subq_5.paid_at__year + , subq_5.paid_at__extract_year + , subq_5.paid_at__extract_quarter + , subq_5.paid_at__extract_month + , subq_5.paid_at__extract_day + , subq_5.paid_at__extract_dow + , subq_5.paid_at__extract_doy + , subq_5.booking__ds__day + , subq_5.booking__ds__week + , subq_5.booking__ds__month + , subq_5.booking__ds__quarter + , subq_5.booking__ds__year + , subq_5.booking__ds__extract_year + , subq_5.booking__ds__extract_quarter + , subq_5.booking__ds__extract_month + , subq_5.booking__ds__extract_day + , subq_5.booking__ds__extract_dow + , subq_5.booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day + , subq_5.booking__paid_at__week + , subq_5.booking__paid_at__month + , subq_5.booking__paid_at__quarter + , subq_5.booking__paid_at__year + , subq_5.booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.listing + , subq_5.guest + , subq_5.host + , subq_5.booking__listing + , subq_5.booking__guest + , subq_5.booking__host + , subq_5.is_instant + , subq_5.booking__is_instant + , subq_5.bookings + , subq_5.instant_bookings + , subq_5.booking_value + , subq_5.max_booking_value + , subq_5.min_booking_value + , subq_5.bookers + , subq_5.average_booking_value + , subq_5.referred_bookings + , subq_5.median_booking_value + , subq_5.booking_value_p99 + , subq_5.discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -505,20 +505,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_7.listing + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_10.listing + ) subq_11 WHERE listing__bookings > 2 - ) subq_9 - ) subq_10 + ) subq_12 + ) subq_13 GROUP BY - subq_10.metric_time__day -) subq_11 + subq_13.metric_time__day +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql index 6493e6cbc1..10c0b969de 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_metric_with_metric_in_where_filter__plan0_optimized.sql @@ -14,9 +14,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.listing__bookings AS listing__bookings - , subq_13.metric_time__day AS metric_time__day - , subq_13.listings AS listings + subq_22.listing__bookings AS listing__bookings + , subq_16.metric_time__day AS metric_time__day + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -25,7 +25,7 @@ FROM ( , listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -41,13 +41,13 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_16 + ) subq_19 GROUP BY listing - ) subq_19 + ) subq_22 ON - subq_13.listing = subq_19.listing -) subq_20 + subq_16.listing = subq_22.listing +) subq_23 WHERE listing__bookings > 2 GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql index 3b0de88fda..482d329e47 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0.sql @@ -8,227 +8,227 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.listings + subq_14.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_10.listings) AS listings + SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_9.listings + subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.user__revenue_all_time - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.user__revenue_all_time + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.user__revenue_all_time AS user__revenue_all_time - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.user__revenue_all_time AS user__revenue_all_time + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -289,67 +289,67 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['user', 'user__revenue_all_time'] SELECT - subq_6.user - , subq_6.user__revenue_all_time + subq_9.user + , subq_9.user__revenue_all_time FROM ( -- Compute Metrics via Expressions SELECT - subq_5.user - , subq_5.txn_revenue AS user__revenue_all_time + subq_8.user + , subq_8.txn_revenue AS user__revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_4.user - , SUM(subq_4.txn_revenue) AS txn_revenue + subq_7.user + , SUM(subq_7.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'user'] SELECT - subq_3.user - , subq_3.txn_revenue + subq_6.user + , subq_6.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.revenue_instance__ds__day - , subq_2.revenue_instance__ds__week - , subq_2.revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.user - , subq_2.revenue_instance__user - , subq_2.txn_revenue + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.revenue_instance__ds__day + , subq_5.revenue_instance__ds__week + , subq_5.revenue_instance__ds__month + , subq_5.revenue_instance__ds__quarter + , subq_5.revenue_instance__ds__year + , subq_5.revenue_instance__ds__extract_year + , subq_5.revenue_instance__ds__extract_quarter + , subq_5.revenue_instance__ds__extract_month + , subq_5.revenue_instance__ds__extract_day + , subq_5.revenue_instance__ds__extract_dow + , subq_5.revenue_instance__ds__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.user + , subq_5.revenue_instance__user + , subq_5.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -379,18 +379,18 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY - subq_4.user - ) subq_5 - ) subq_6 - ) subq_7 + subq_7.user + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.user = subq_7.user - ) subq_8 + subq_4.user = subq_10.user + ) subq_11 WHERE user__revenue_all_time > 1 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_12 + ) subq_13 +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql index ffeb920a92..5838ffdbcb 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql @@ -15,8 +15,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.user__revenue_all_time AS user__revenue_all_time - , subq_13.listings AS listings + subq_22.user__revenue_all_time AS user__revenue_all_time + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -24,7 +24,7 @@ FROM ( user_id AS user , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -38,8 +38,8 @@ FROM ( FROM ***************************.fct_revenue revenue_src_28000 GROUP BY user_id - ) subq_19 + ) subq_22 ON - subq_13.user = subq_19.user -) subq_20 + subq_16.user = subq_22.user +) subq_23 WHERE user__revenue_all_time > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql index 338dd2e147..7ac406c421 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.listings + subq_27.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.listings) AS listings + SUM(subq_26.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_16.listings + subq_25.listings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.created_at__day - , subq_15.created_at__week - , subq_15.created_at__month - , subq_15.created_at__quarter - , subq_15.created_at__year - , subq_15.created_at__extract_year - , subq_15.created_at__extract_quarter - , subq_15.created_at__extract_month - , subq_15.created_at__extract_day - , subq_15.created_at__extract_dow - , subq_15.created_at__extract_doy - , subq_15.listing__ds__day - , subq_15.listing__ds__week - , subq_15.listing__ds__month - , subq_15.listing__ds__quarter - , subq_15.listing__ds__year - , subq_15.listing__ds__extract_year - , subq_15.listing__ds__extract_quarter - , subq_15.listing__ds__extract_month - , subq_15.listing__ds__extract_day - , subq_15.listing__ds__extract_dow - , subq_15.listing__ds__extract_doy - , subq_15.listing__created_at__day - , subq_15.listing__created_at__week - , subq_15.listing__created_at__month - , subq_15.listing__created_at__quarter - , subq_15.listing__created_at__year - , subq_15.listing__created_at__extract_year - , subq_15.listing__created_at__extract_quarter - , subq_15.listing__created_at__extract_month - , subq_15.listing__created_at__extract_day - , subq_15.listing__created_at__extract_dow - , subq_15.listing__created_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.listing__user - , subq_15.country_latest - , subq_15.is_lux_latest - , subq_15.capacity_latest - , subq_15.listing__country_latest - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.listing__views_times_booking_value - , subq_15.listings - , subq_15.largest_listing - , subq_15.smallest_listing + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.created_at__day + , subq_24.created_at__week + , subq_24.created_at__month + , subq_24.created_at__quarter + , subq_24.created_at__year + , subq_24.created_at__extract_year + , subq_24.created_at__extract_quarter + , subq_24.created_at__extract_month + , subq_24.created_at__extract_day + , subq_24.created_at__extract_dow + , subq_24.created_at__extract_doy + , subq_24.listing__ds__day + , subq_24.listing__ds__week + , subq_24.listing__ds__month + , subq_24.listing__ds__quarter + , subq_24.listing__ds__year + , subq_24.listing__ds__extract_year + , subq_24.listing__ds__extract_quarter + , subq_24.listing__ds__extract_month + , subq_24.listing__ds__extract_day + , subq_24.listing__ds__extract_dow + , subq_24.listing__ds__extract_doy + , subq_24.listing__created_at__day + , subq_24.listing__created_at__week + , subq_24.listing__created_at__month + , subq_24.listing__created_at__quarter + , subq_24.listing__created_at__year + , subq_24.listing__created_at__extract_year + , subq_24.listing__created_at__extract_quarter + , subq_24.listing__created_at__extract_month + , subq_24.listing__created_at__extract_day + , subq_24.listing__created_at__extract_dow + , subq_24.listing__created_at__extract_doy + , subq_24.metric_time__day + , subq_24.metric_time__week + , subq_24.metric_time__month + , subq_24.metric_time__quarter + , subq_24.metric_time__year + , subq_24.metric_time__extract_year + , subq_24.metric_time__extract_quarter + , subq_24.metric_time__extract_month + , subq_24.metric_time__extract_day + , subq_24.metric_time__extract_dow + , subq_24.metric_time__extract_doy + , subq_24.listing + , subq_24.user + , subq_24.listing__user + , subq_24.country_latest + , subq_24.is_lux_latest + , subq_24.capacity_latest + , subq_24.listing__country_latest + , subq_24.listing__is_lux_latest + , subq_24.listing__capacity_latest + , subq_24.listing__views_times_booking_value + , subq_24.listings + , subq_24.largest_listing + , subq_24.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_14.listing__views_times_booking_value AS listing__views_times_booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_23.listing__views_times_booking_value AS listing__views_times_booking_value + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.created_at__day AS created_at__day + , subq_10.created_at__week AS created_at__week + , subq_10.created_at__month AS created_at__month + , subq_10.created_at__quarter AS created_at__quarter + , subq_10.created_at__year AS created_at__year + , subq_10.created_at__extract_year AS created_at__extract_year + , subq_10.created_at__extract_quarter AS created_at__extract_quarter + , subq_10.created_at__extract_month AS created_at__extract_month + , subq_10.created_at__extract_day AS created_at__extract_day + , subq_10.created_at__extract_dow AS created_at__extract_dow + , subq_10.created_at__extract_doy AS created_at__extract_doy + , subq_10.listing__ds__day AS listing__ds__day + , subq_10.listing__ds__week AS listing__ds__week + , subq_10.listing__ds__month AS listing__ds__month + , subq_10.listing__ds__quarter AS listing__ds__quarter + , subq_10.listing__ds__year AS listing__ds__year + , subq_10.listing__ds__extract_year AS listing__ds__extract_year + , subq_10.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_10.listing__ds__extract_month AS listing__ds__extract_month + , subq_10.listing__ds__extract_day AS listing__ds__extract_day + , subq_10.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_10.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_10.listing__created_at__day AS listing__created_at__day + , subq_10.listing__created_at__week AS listing__created_at__week + , subq_10.listing__created_at__month AS listing__created_at__month + , subq_10.listing__created_at__quarter AS listing__created_at__quarter + , subq_10.listing__created_at__year AS listing__created_at__year + , subq_10.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_10.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_10.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_10.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_10.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_10.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.user AS user + , subq_10.listing__user AS listing__user + , subq_10.country_latest AS country_latest + , subq_10.is_lux_latest AS is_lux_latest + , subq_10.capacity_latest AS capacity_latest + , subq_10.listing__country_latest AS listing__country_latest + , subq_10.listing__is_lux_latest AS listing__is_lux_latest + , subq_10.listing__capacity_latest AS listing__capacity_latest + , subq_10.listings AS listings + , subq_10.largest_listing AS largest_listing + , subq_10.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,140 +287,140 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__views_times_booking_value'] SELECT - subq_13.listing - , subq_13.listing__views_times_booking_value + subq_22.listing + , subq_22.listing__views_times_booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_12.listing + subq_21.listing , booking_value * views AS listing__views_times_booking_value FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_6.listing, subq_11.listing) AS listing - , MAX(subq_6.booking_value) AS booking_value - , MAX(subq_11.views) AS views + COALESCE(subq_15.listing, subq_20.listing) AS listing + , MAX(subq_15.booking_value) AS booking_value + , MAX(subq_20.views) AS views FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.booking_value + subq_14.listing + , subq_14.booking_value FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.booking_value) AS booking_value + subq_13.listing + , SUM(subq_13.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'listing'] SELECT - subq_3.listing - , subq_3.booking_value + subq_12.listing + , subq_12.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -513,91 +513,91 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 + subq_13.listing + ) subq_14 + ) subq_15 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listing - , subq_10.views + subq_19.listing + , subq_19.views FROM ( -- Aggregate Measures SELECT - subq_9.listing - , SUM(subq_9.views) AS views + subq_18.listing + , SUM(subq_18.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing'] SELECT - subq_8.listing - , subq_8.views + subq_17.listing + , subq_17.views FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_partitioned__day - , subq_7.ds_partitioned__week - , subq_7.ds_partitioned__month - , subq_7.ds_partitioned__quarter - , subq_7.ds_partitioned__year - , subq_7.ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy - , subq_7.view__ds__day - , subq_7.view__ds__week - , subq_7.view__ds__month - , subq_7.view__ds__quarter - , subq_7.view__ds__year - , subq_7.view__ds__extract_year - , subq_7.view__ds__extract_quarter - , subq_7.view__ds__extract_month - , subq_7.view__ds__extract_day - , subq_7.view__ds__extract_dow - , subq_7.view__ds__extract_doy - , subq_7.view__ds_partitioned__day - , subq_7.view__ds_partitioned__week - , subq_7.view__ds_partitioned__month - , subq_7.view__ds_partitioned__quarter - , subq_7.view__ds_partitioned__year - , subq_7.view__ds_partitioned__extract_year - , subq_7.view__ds_partitioned__extract_quarter - , subq_7.view__ds_partitioned__extract_month - , subq_7.view__ds_partitioned__extract_day - , subq_7.view__ds_partitioned__extract_dow - , subq_7.view__ds_partitioned__extract_doy - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.listing - , subq_7.user - , subq_7.view__listing - , subq_7.view__user - , subq_7.views + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.view__ds__day + , subq_16.view__ds__week + , subq_16.view__ds__month + , subq_16.view__ds__quarter + , subq_16.view__ds__year + , subq_16.view__ds__extract_year + , subq_16.view__ds__extract_quarter + , subq_16.view__ds__extract_month + , subq_16.view__ds__extract_day + , subq_16.view__ds__extract_dow + , subq_16.view__ds__extract_doy + , subq_16.view__ds_partitioned__day + , subq_16.view__ds_partitioned__week + , subq_16.view__ds_partitioned__month + , subq_16.view__ds_partitioned__quarter + , subq_16.view__ds_partitioned__year + , subq_16.view__ds_partitioned__extract_year + , subq_16.view__ds_partitioned__extract_quarter + , subq_16.view__ds_partitioned__extract_month + , subq_16.view__ds_partitioned__extract_day + , subq_16.view__ds_partitioned__extract_dow + , subq_16.view__ds_partitioned__extract_doy + , subq_16.ds__day AS metric_time__day + , subq_16.ds__week AS metric_time__week + , subq_16.ds__month AS metric_time__month + , subq_16.ds__quarter AS metric_time__quarter + , subq_16.ds__year AS metric_time__year + , subq_16.ds__extract_year AS metric_time__extract_year + , subq_16.ds__extract_quarter AS metric_time__extract_quarter + , subq_16.ds__extract_month AS metric_time__extract_month + , subq_16.ds__extract_day AS metric_time__extract_day + , subq_16.ds__extract_dow AS metric_time__extract_dow + , subq_16.ds__extract_doy AS metric_time__extract_doy + , subq_16.listing + , subq_16.user + , subq_16.view__listing + , subq_16.view__user + , subq_16.views FROM ( -- Read Elements From Semantic Model 'views_source' SELECT @@ -651,24 +651,24 @@ FROM ( , views_source_src_28000.listing_id AS view__listing , views_source_src_28000.user_id AS view__user FROM ***************************.fct_views views_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_16 + ) subq_17 + ) subq_18 GROUP BY - subq_9.listing - ) subq_10 - ) subq_11 + subq_18.listing + ) subq_19 + ) subq_20 ON - subq_6.listing = subq_11.listing + subq_15.listing = subq_20.listing GROUP BY - COALESCE(subq_6.listing, subq_11.listing) - ) subq_12 - ) subq_13 - ) subq_14 + COALESCE(subq_15.listing, subq_20.listing) + ) subq_21 + ) subq_22 + ) subq_23 ON - subq_1.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_23.listing + ) subq_24 WHERE listing__views_times_booking_value > 1 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_25 + ) subq_26 +) subq_27 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql index 8f88a88e44..c0adf89195 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_33.listing__views_times_booking_value AS listing__views_times_booking_value - , subq_20.listings AS listings + subq_42.listing__views_times_booking_value AS listing__views_times_booking_value + , subq_29.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_20 + ) subq_29 LEFT OUTER JOIN ( -- Compute Metrics via Expressions -- Pass Only Elements: ['listing', 'listing__views_times_booking_value'] @@ -32,9 +32,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_25.listing, subq_30.listing) AS listing - , MAX(subq_25.booking_value) AS booking_value - , MAX(subq_30.views) AS views + COALESCE(subq_34.listing, subq_39.listing) AS listing + , MAX(subq_34.booking_value) AS booking_value + , MAX(subq_39.views) AS views FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -47,7 +47,7 @@ FROM ( FROM ***************************.fct_bookings bookings_source_src_28000 GROUP BY listing_id - ) subq_25 + ) subq_34 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -62,17 +62,17 @@ FROM ( listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_28 + ) subq_37 GROUP BY listing - ) subq_30 + ) subq_39 ON - subq_25.listing = subq_30.listing + subq_34.listing = subq_39.listing GROUP BY - COALESCE(subq_25.listing, subq_30.listing) - ) subq_31 - ) subq_33 + COALESCE(subq_34.listing, subq_39.listing) + ) subq_40 + ) subq_42 ON - subq_20.listing = subq_33.listing -) subq_34 + subq_29.listing = subq_42.listing +) subq_43 WHERE listing__views_times_booking_value > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql index fb6e976345..b36f47360a 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0.sql @@ -6,229 +6,229 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_17.listings + subq_22.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_16.listings) AS listings + SUM(subq_21.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_15.listings + subq_20.listings FROM ( -- Constrain Output with WHERE SELECT - subq_14.ds__day - , subq_14.ds__week - , subq_14.ds__month - , subq_14.ds__quarter - , subq_14.ds__year - , subq_14.ds__extract_year - , subq_14.ds__extract_quarter - , subq_14.ds__extract_month - , subq_14.ds__extract_day - , subq_14.ds__extract_dow - , subq_14.ds__extract_doy - , subq_14.created_at__day - , subq_14.created_at__week - , subq_14.created_at__month - , subq_14.created_at__quarter - , subq_14.created_at__year - , subq_14.created_at__extract_year - , subq_14.created_at__extract_quarter - , subq_14.created_at__extract_month - , subq_14.created_at__extract_day - , subq_14.created_at__extract_dow - , subq_14.created_at__extract_doy - , subq_14.listing__ds__day - , subq_14.listing__ds__week - , subq_14.listing__ds__month - , subq_14.listing__ds__quarter - , subq_14.listing__ds__year - , subq_14.listing__ds__extract_year - , subq_14.listing__ds__extract_quarter - , subq_14.listing__ds__extract_month - , subq_14.listing__ds__extract_day - , subq_14.listing__ds__extract_dow - , subq_14.listing__ds__extract_doy - , subq_14.listing__created_at__day - , subq_14.listing__created_at__week - , subq_14.listing__created_at__month - , subq_14.listing__created_at__quarter - , subq_14.listing__created_at__year - , subq_14.listing__created_at__extract_year - , subq_14.listing__created_at__extract_quarter - , subq_14.listing__created_at__extract_month - , subq_14.listing__created_at__extract_day - , subq_14.listing__created_at__extract_dow - , subq_14.listing__created_at__extract_doy - , subq_14.metric_time__day - , subq_14.metric_time__week - , subq_14.metric_time__month - , subq_14.metric_time__quarter - , subq_14.metric_time__year - , subq_14.metric_time__extract_year - , subq_14.metric_time__extract_quarter - , subq_14.metric_time__extract_month - , subq_14.metric_time__extract_day - , subq_14.metric_time__extract_dow - , subq_14.metric_time__extract_doy - , subq_14.listing - , subq_14.user - , subq_14.listing__user - , subq_14.country_latest - , subq_14.is_lux_latest - , subq_14.capacity_latest - , subq_14.listing__country_latest - , subq_14.listing__is_lux_latest - , subq_14.listing__capacity_latest - , subq_14.listing__bookings - , subq_14.listing__bookers - , subq_14.listings - , subq_14.largest_listing - , subq_14.smallest_listing + subq_19.ds__day + , subq_19.ds__week + , subq_19.ds__month + , subq_19.ds__quarter + , subq_19.ds__year + , subq_19.ds__extract_year + , subq_19.ds__extract_quarter + , subq_19.ds__extract_month + , subq_19.ds__extract_day + , subq_19.ds__extract_dow + , subq_19.ds__extract_doy + , subq_19.created_at__day + , subq_19.created_at__week + , subq_19.created_at__month + , subq_19.created_at__quarter + , subq_19.created_at__year + , subq_19.created_at__extract_year + , subq_19.created_at__extract_quarter + , subq_19.created_at__extract_month + , subq_19.created_at__extract_day + , subq_19.created_at__extract_dow + , subq_19.created_at__extract_doy + , subq_19.listing__ds__day + , subq_19.listing__ds__week + , subq_19.listing__ds__month + , subq_19.listing__ds__quarter + , subq_19.listing__ds__year + , subq_19.listing__ds__extract_year + , subq_19.listing__ds__extract_quarter + , subq_19.listing__ds__extract_month + , subq_19.listing__ds__extract_day + , subq_19.listing__ds__extract_dow + , subq_19.listing__ds__extract_doy + , subq_19.listing__created_at__day + , subq_19.listing__created_at__week + , subq_19.listing__created_at__month + , subq_19.listing__created_at__quarter + , subq_19.listing__created_at__year + , subq_19.listing__created_at__extract_year + , subq_19.listing__created_at__extract_quarter + , subq_19.listing__created_at__extract_month + , subq_19.listing__created_at__extract_day + , subq_19.listing__created_at__extract_dow + , subq_19.listing__created_at__extract_doy + , subq_19.metric_time__day + , subq_19.metric_time__week + , subq_19.metric_time__month + , subq_19.metric_time__quarter + , subq_19.metric_time__year + , subq_19.metric_time__extract_year + , subq_19.metric_time__extract_quarter + , subq_19.metric_time__extract_month + , subq_19.metric_time__extract_day + , subq_19.metric_time__extract_dow + , subq_19.metric_time__extract_doy + , subq_19.listing + , subq_19.user + , subq_19.listing__user + , subq_19.country_latest + , subq_19.is_lux_latest + , subq_19.capacity_latest + , subq_19.listing__country_latest + , subq_19.listing__is_lux_latest + , subq_19.listing__capacity_latest + , subq_19.listing__bookings + , subq_19.listing__bookers + , subq_19.listings + , subq_19.largest_listing + , subq_19.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_13.listing__bookers AS listing__bookers - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_13.listing__bookings AS listing__bookings + , subq_18.listing__bookers AS listing__bookers + , subq_7.ds__day AS ds__day + , subq_7.ds__week AS ds__week + , subq_7.ds__month AS ds__month + , subq_7.ds__quarter AS ds__quarter + , subq_7.ds__year AS ds__year + , subq_7.ds__extract_year AS ds__extract_year + , subq_7.ds__extract_quarter AS ds__extract_quarter + , subq_7.ds__extract_month AS ds__extract_month + , subq_7.ds__extract_day AS ds__extract_day + , subq_7.ds__extract_dow AS ds__extract_dow + , subq_7.ds__extract_doy AS ds__extract_doy + , subq_7.created_at__day AS created_at__day + , subq_7.created_at__week AS created_at__week + , subq_7.created_at__month AS created_at__month + , subq_7.created_at__quarter AS created_at__quarter + , subq_7.created_at__year AS created_at__year + , subq_7.created_at__extract_year AS created_at__extract_year + , subq_7.created_at__extract_quarter AS created_at__extract_quarter + , subq_7.created_at__extract_month AS created_at__extract_month + , subq_7.created_at__extract_day AS created_at__extract_day + , subq_7.created_at__extract_dow AS created_at__extract_dow + , subq_7.created_at__extract_doy AS created_at__extract_doy + , subq_7.listing__ds__day AS listing__ds__day + , subq_7.listing__ds__week AS listing__ds__week + , subq_7.listing__ds__month AS listing__ds__month + , subq_7.listing__ds__quarter AS listing__ds__quarter + , subq_7.listing__ds__year AS listing__ds__year + , subq_7.listing__ds__extract_year AS listing__ds__extract_year + , subq_7.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_7.listing__ds__extract_month AS listing__ds__extract_month + , subq_7.listing__ds__extract_day AS listing__ds__extract_day + , subq_7.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_7.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_7.listing__created_at__day AS listing__created_at__day + , subq_7.listing__created_at__week AS listing__created_at__week + , subq_7.listing__created_at__month AS listing__created_at__month + , subq_7.listing__created_at__quarter AS listing__created_at__quarter + , subq_7.listing__created_at__year AS listing__created_at__year + , subq_7.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_7.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_7.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_7.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_7.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_7.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_7.metric_time__day AS metric_time__day + , subq_7.metric_time__week AS metric_time__week + , subq_7.metric_time__month AS metric_time__month + , subq_7.metric_time__quarter AS metric_time__quarter + , subq_7.metric_time__year AS metric_time__year + , subq_7.metric_time__extract_year AS metric_time__extract_year + , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_7.metric_time__extract_month AS metric_time__extract_month + , subq_7.metric_time__extract_day AS metric_time__extract_day + , subq_7.metric_time__extract_dow AS metric_time__extract_dow + , subq_7.metric_time__extract_doy AS metric_time__extract_doy + , subq_7.listing AS listing + , subq_7.user AS user + , subq_7.listing__user AS listing__user + , subq_7.country_latest AS country_latest + , subq_7.is_lux_latest AS is_lux_latest + , subq_7.capacity_latest AS capacity_latest + , subq_7.listing__country_latest AS listing__country_latest + , subq_7.listing__is_lux_latest AS listing__is_lux_latest + , subq_7.listing__capacity_latest AS listing__capacity_latest + , subq_7.listings AS listings + , subq_7.largest_listing AS largest_listing + , subq_7.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -289,129 +289,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_6 + ) subq_7 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_12.listing + , subq_12.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_11.listing + , subq_11.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_10.listing + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_9.listing + , subq_9.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.paid_at__day + , subq_8.paid_at__week + , subq_8.paid_at__month + , subq_8.paid_at__quarter + , subq_8.paid_at__year + , subq_8.paid_at__extract_year + , subq_8.paid_at__extract_quarter + , subq_8.paid_at__extract_month + , subq_8.paid_at__extract_day + , subq_8.paid_at__extract_dow + , subq_8.paid_at__extract_doy + , subq_8.booking__ds__day + , subq_8.booking__ds__week + , subq_8.booking__ds__month + , subq_8.booking__ds__quarter + , subq_8.booking__ds__year + , subq_8.booking__ds__extract_year + , subq_8.booking__ds__extract_quarter + , subq_8.booking__ds__extract_month + , subq_8.booking__ds__extract_day + , subq_8.booking__ds__extract_dow + , subq_8.booking__ds__extract_doy + , subq_8.booking__ds_partitioned__day + , subq_8.booking__ds_partitioned__week + , subq_8.booking__ds_partitioned__month + , subq_8.booking__ds_partitioned__quarter + , subq_8.booking__ds_partitioned__year + , subq_8.booking__ds_partitioned__extract_year + , subq_8.booking__ds_partitioned__extract_quarter + , subq_8.booking__ds_partitioned__extract_month + , subq_8.booking__ds_partitioned__extract_day + , subq_8.booking__ds_partitioned__extract_dow + , subq_8.booking__ds_partitioned__extract_doy + , subq_8.booking__paid_at__day + , subq_8.booking__paid_at__week + , subq_8.booking__paid_at__month + , subq_8.booking__paid_at__quarter + , subq_8.booking__paid_at__year + , subq_8.booking__paid_at__extract_year + , subq_8.booking__paid_at__extract_quarter + , subq_8.booking__paid_at__extract_month + , subq_8.booking__paid_at__extract_day + , subq_8.booking__paid_at__extract_dow + , subq_8.booking__paid_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.guest + , subq_8.host + , subq_8.booking__listing + , subq_8.booking__guest + , subq_8.booking__host + , subq_8.is_instant + , subq_8.booking__is_instant + , subq_8.bookings + , subq_8.instant_bookings + , subq_8.booking_value + , subq_8.max_booking_value + , subq_8.min_booking_value + , subq_8.bookers + , subq_8.average_booking_value + , subq_8.referred_bookings + , subq_8.median_booking_value + , subq_8.booking_value_p99 + , subq_8.discrete_booking_value_p99 + , subq_8.approximate_continuous_booking_value_p99 + , subq_8.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -504,36 +504,36 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_8 + ) subq_9 + ) subq_10 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_10.listing + ) subq_11 + ) subq_12 + ) subq_13 ON - subq_1.listing = subq_7.listing + subq_7.listing = subq_13.listing LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookers'] SELECT - subq_12.listing - , subq_12.listing__bookers + subq_17.listing + , subq_17.listing__bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_11.listing - , subq_11.bookers AS listing__bookers + subq_16.listing + , subq_16.bookers AS listing__bookers FROM ( -- Aggregate Measures SELECT - subq_10.listing - , COUNT(DISTINCT subq_10.bookers) AS bookers + subq_15.listing + , COUNT(DISTINCT subq_15.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_9.listing - , subq_9.bookers + subq_14.listing + , subq_14.bookers FROM ( -- Metric Time Dimension 'ds' SELECT @@ -728,17 +728,17 @@ FROM ( , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 ) subq_8 - ) subq_9 - ) subq_10 + ) subq_14 + ) subq_15 GROUP BY - subq_10.listing - ) subq_11 - ) subq_12 - ) subq_13 + subq_15.listing + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_1.listing = subq_13.listing - ) subq_14 + subq_7.listing = subq_18.listing + ) subq_19 WHERE listing__bookings > 2 AND listing__bookers > 1 - ) subq_15 - ) subq_16 -) subq_17 + ) subq_20 + ) subq_21 +) subq_22 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql index e4d413bf79..5c76770a16 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql @@ -23,9 +23,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_25.listing__bookings AS listing__bookings - , subq_30.listing__bookers AS listing__bookers - , subq_19.listings AS listings + subq_30.listing__bookings AS listing__bookings + , subq_35.listing__bookers AS listing__bookers + , subq_24.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -33,7 +33,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_19 + ) subq_24 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'listing'] @@ -46,9 +46,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_25 + ) subq_30 ON - subq_19.listing = subq_25.listing + subq_24.listing = subq_30.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'listing'] @@ -61,8 +61,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_30 + ) subq_35 ON - subq_19.listing = subq_30.listing -) subq_31 + subq_24.listing = subq_35.listing +) subq_36 WHERE listing__bookings > 2 AND listing__bookers > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql index d982b173a8..be55b35ac5 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_18.listings + subq_26.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.listings) AS listings + SUM(subq_25.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_16.listings + subq_24.listings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.created_at__day - , subq_15.created_at__week - , subq_15.created_at__month - , subq_15.created_at__quarter - , subq_15.created_at__year - , subq_15.created_at__extract_year - , subq_15.created_at__extract_quarter - , subq_15.created_at__extract_month - , subq_15.created_at__extract_day - , subq_15.created_at__extract_dow - , subq_15.created_at__extract_doy - , subq_15.listing__ds__day - , subq_15.listing__ds__week - , subq_15.listing__ds__month - , subq_15.listing__ds__quarter - , subq_15.listing__ds__year - , subq_15.listing__ds__extract_year - , subq_15.listing__ds__extract_quarter - , subq_15.listing__ds__extract_month - , subq_15.listing__ds__extract_day - , subq_15.listing__ds__extract_dow - , subq_15.listing__ds__extract_doy - , subq_15.listing__created_at__day - , subq_15.listing__created_at__week - , subq_15.listing__created_at__month - , subq_15.listing__created_at__quarter - , subq_15.listing__created_at__year - , subq_15.listing__created_at__extract_year - , subq_15.listing__created_at__extract_quarter - , subq_15.listing__created_at__extract_month - , subq_15.listing__created_at__extract_day - , subq_15.listing__created_at__extract_dow - , subq_15.listing__created_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.listing__user - , subq_15.country_latest - , subq_15.is_lux_latest - , subq_15.capacity_latest - , subq_15.listing__country_latest - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.listing__bookings_per_booker - , subq_15.listings - , subq_15.largest_listing - , subq_15.smallest_listing + subq_23.ds__day + , subq_23.ds__week + , subq_23.ds__month + , subq_23.ds__quarter + , subq_23.ds__year + , subq_23.ds__extract_year + , subq_23.ds__extract_quarter + , subq_23.ds__extract_month + , subq_23.ds__extract_day + , subq_23.ds__extract_dow + , subq_23.ds__extract_doy + , subq_23.created_at__day + , subq_23.created_at__week + , subq_23.created_at__month + , subq_23.created_at__quarter + , subq_23.created_at__year + , subq_23.created_at__extract_year + , subq_23.created_at__extract_quarter + , subq_23.created_at__extract_month + , subq_23.created_at__extract_day + , subq_23.created_at__extract_dow + , subq_23.created_at__extract_doy + , subq_23.listing__ds__day + , subq_23.listing__ds__week + , subq_23.listing__ds__month + , subq_23.listing__ds__quarter + , subq_23.listing__ds__year + , subq_23.listing__ds__extract_year + , subq_23.listing__ds__extract_quarter + , subq_23.listing__ds__extract_month + , subq_23.listing__ds__extract_day + , subq_23.listing__ds__extract_dow + , subq_23.listing__ds__extract_doy + , subq_23.listing__created_at__day + , subq_23.listing__created_at__week + , subq_23.listing__created_at__month + , subq_23.listing__created_at__quarter + , subq_23.listing__created_at__year + , subq_23.listing__created_at__extract_year + , subq_23.listing__created_at__extract_quarter + , subq_23.listing__created_at__extract_month + , subq_23.listing__created_at__extract_day + , subq_23.listing__created_at__extract_dow + , subq_23.listing__created_at__extract_doy + , subq_23.metric_time__day + , subq_23.metric_time__week + , subq_23.metric_time__month + , subq_23.metric_time__quarter + , subq_23.metric_time__year + , subq_23.metric_time__extract_year + , subq_23.metric_time__extract_quarter + , subq_23.metric_time__extract_month + , subq_23.metric_time__extract_day + , subq_23.metric_time__extract_dow + , subq_23.metric_time__extract_doy + , subq_23.listing + , subq_23.user + , subq_23.listing__user + , subq_23.country_latest + , subq_23.is_lux_latest + , subq_23.capacity_latest + , subq_23.listing__country_latest + , subq_23.listing__is_lux_latest + , subq_23.listing__capacity_latest + , subq_23.listing__bookings_per_booker + , subq_23.listings + , subq_23.largest_listing + , subq_23.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_14.listing__bookings_per_booker AS listing__bookings_per_booker - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_22.listing__bookings_per_booker AS listing__bookings_per_booker + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.created_at__day AS created_at__day + , subq_10.created_at__week AS created_at__week + , subq_10.created_at__month AS created_at__month + , subq_10.created_at__quarter AS created_at__quarter + , subq_10.created_at__year AS created_at__year + , subq_10.created_at__extract_year AS created_at__extract_year + , subq_10.created_at__extract_quarter AS created_at__extract_quarter + , subq_10.created_at__extract_month AS created_at__extract_month + , subq_10.created_at__extract_day AS created_at__extract_day + , subq_10.created_at__extract_dow AS created_at__extract_dow + , subq_10.created_at__extract_doy AS created_at__extract_doy + , subq_10.listing__ds__day AS listing__ds__day + , subq_10.listing__ds__week AS listing__ds__week + , subq_10.listing__ds__month AS listing__ds__month + , subq_10.listing__ds__quarter AS listing__ds__quarter + , subq_10.listing__ds__year AS listing__ds__year + , subq_10.listing__ds__extract_year AS listing__ds__extract_year + , subq_10.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_10.listing__ds__extract_month AS listing__ds__extract_month + , subq_10.listing__ds__extract_day AS listing__ds__extract_day + , subq_10.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_10.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_10.listing__created_at__day AS listing__created_at__day + , subq_10.listing__created_at__week AS listing__created_at__week + , subq_10.listing__created_at__month AS listing__created_at__month + , subq_10.listing__created_at__quarter AS listing__created_at__quarter + , subq_10.listing__created_at__year AS listing__created_at__year + , subq_10.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_10.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_10.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_10.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_10.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_10.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.user AS user + , subq_10.listing__user AS listing__user + , subq_10.country_latest AS country_latest + , subq_10.is_lux_latest AS is_lux_latest + , subq_10.capacity_latest AS capacity_latest + , subq_10.listing__country_latest AS listing__country_latest + , subq_10.listing__is_lux_latest AS listing__is_lux_latest + , subq_10.listing__capacity_latest AS listing__capacity_latest + , subq_10.listings AS listings + , subq_10.largest_listing AS largest_listing + , subq_10.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,140 +287,140 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings_per_booker'] SELECT - subq_13.listing - , subq_13.listing__bookings_per_booker + subq_21.listing + , subq_21.listing__bookings_per_booker FROM ( -- Compute Metrics via Expressions SELECT - subq_12.listing - , CAST(subq_12.bookings AS DOUBLE) / CAST(NULLIF(subq_12.bookers, 0) AS DOUBLE) AS listing__bookings_per_booker + subq_20.listing + , CAST(subq_20.bookings AS DOUBLE) / CAST(NULLIF(subq_20.bookers, 0) AS DOUBLE) AS listing__bookings_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_6.listing, subq_11.listing) AS listing - , MAX(subq_6.bookings) AS bookings - , MAX(subq_11.bookers) AS bookers + COALESCE(subq_15.listing, subq_19.listing) AS listing + , MAX(subq_15.bookings) AS bookings + , MAX(subq_19.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings + subq_14.listing + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_13.listing + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_12.listing + , subq_12.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -513,129 +513,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 + subq_13.listing + ) subq_14 + ) subq_15 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listing - , subq_10.bookers + subq_18.listing + , subq_18.bookers FROM ( -- Aggregate Measures SELECT - subq_9.listing - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_17.listing + , COUNT(DISTINCT subq_17.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_8.listing - , subq_8.bookers + subq_16.listing + , subq_16.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_partitioned__day - , subq_7.ds_partitioned__week - , subq_7.ds_partitioned__month - , subq_7.ds_partitioned__quarter - , subq_7.ds_partitioned__year - , subq_7.ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy - , subq_7.paid_at__day - , subq_7.paid_at__week - , subq_7.paid_at__month - , subq_7.paid_at__quarter - , subq_7.paid_at__year - , subq_7.paid_at__extract_year - , subq_7.paid_at__extract_quarter - , subq_7.paid_at__extract_month - , subq_7.paid_at__extract_day - , subq_7.paid_at__extract_dow - , subq_7.paid_at__extract_doy - , subq_7.booking__ds__day - , subq_7.booking__ds__week - , subq_7.booking__ds__month - , subq_7.booking__ds__quarter - , subq_7.booking__ds__year - , subq_7.booking__ds__extract_year - , subq_7.booking__ds__extract_quarter - , subq_7.booking__ds__extract_month - , subq_7.booking__ds__extract_day - , subq_7.booking__ds__extract_dow - , subq_7.booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day - , subq_7.booking__paid_at__week - , subq_7.booking__paid_at__month - , subq_7.booking__paid_at__quarter - , subq_7.booking__paid_at__year - , subq_7.booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.listing - , subq_7.guest - , subq_7.host - , subq_7.booking__listing - , subq_7.booking__guest - , subq_7.booking__host - , subq_7.is_instant - , subq_7.booking__is_instant - , subq_7.bookings - , subq_7.instant_bookings - , subq_7.booking_value - , subq_7.max_booking_value - , subq_7.min_booking_value - , subq_7.bookers - , subq_7.average_booking_value - , subq_7.referred_bookings - , subq_7.median_booking_value - , subq_7.booking_value_p99 - , subq_7.discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -728,24 +728,24 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_11 + ) subq_16 + ) subq_17 GROUP BY - subq_9.listing - ) subq_10 - ) subq_11 + subq_17.listing + ) subq_18 + ) subq_19 ON - subq_6.listing = subq_11.listing + subq_15.listing = subq_19.listing GROUP BY - COALESCE(subq_6.listing, subq_11.listing) - ) subq_12 - ) subq_13 - ) subq_14 + COALESCE(subq_15.listing, subq_19.listing) + ) subq_20 + ) subq_21 + ) subq_22 ON - subq_1.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_22.listing + ) subq_23 WHERE listing__bookings_per_booker > 1 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_24 + ) subq_25 +) subq_26 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql index 5bf661c2aa..b1279234c1 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - CAST(subq_25.bookings AS DOUBLE) / CAST(NULLIF(subq_25.bookers, 0) AS DOUBLE) AS listing__bookings_per_booker - , subq_20.listings AS listings + CAST(subq_33.bookings AS DOUBLE) / CAST(NULLIF(subq_33.bookers, 0) AS DOUBLE) AS listing__bookings_per_booker + , subq_28.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_20 + ) subq_28 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -39,11 +39,11 @@ FROM ( , 1 AS bookings , guest_id AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_23 + ) subq_31 GROUP BY listing - ) subq_25 + ) subq_33 ON - subq_20.listing = subq_25.listing -) subq_28 + subq_28.listing = subq_33.listing +) subq_36 WHERE listing__bookings_per_booker > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql index bc212b66c8..3d3c3db61c 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.listings + subq_14.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_10.listings) AS listings + SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_9.listings + subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.listing__bookings - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.listing__bookings + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.listing__bookings AS listing__bookings + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,129 +287,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_9.listing + , subq_9.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_8.listing + , subq_8.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_7.listing + , SUM(subq_7.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_6.listing + , subq_6.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.paid_at__day + , subq_5.paid_at__week + , subq_5.paid_at__month + , subq_5.paid_at__quarter + , subq_5.paid_at__year + , subq_5.paid_at__extract_year + , subq_5.paid_at__extract_quarter + , subq_5.paid_at__extract_month + , subq_5.paid_at__extract_day + , subq_5.paid_at__extract_dow + , subq_5.paid_at__extract_doy + , subq_5.booking__ds__day + , subq_5.booking__ds__week + , subq_5.booking__ds__month + , subq_5.booking__ds__quarter + , subq_5.booking__ds__year + , subq_5.booking__ds__extract_year + , subq_5.booking__ds__extract_quarter + , subq_5.booking__ds__extract_month + , subq_5.booking__ds__extract_day + , subq_5.booking__ds__extract_dow + , subq_5.booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day + , subq_5.booking__paid_at__week + , subq_5.booking__paid_at__month + , subq_5.booking__paid_at__quarter + , subq_5.booking__paid_at__year + , subq_5.booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.listing + , subq_5.guest + , subq_5.host + , subq_5.booking__listing + , subq_5.booking__guest + , subq_5.booking__host + , subq_5.is_instant + , subq_5.booking__is_instant + , subq_5.bookings + , subq_5.instant_bookings + , subq_5.booking_value + , subq_5.max_booking_value + , subq_5.min_booking_value + , subq_5.bookers + , subq_5.average_booking_value + , subq_5.referred_bookings + , subq_5.median_booking_value + , subq_5.booking_value_p99 + , subq_5.discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -502,18 +502,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_7.listing + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_10.listing + ) subq_11 WHERE listing__bookings > 2 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_12 + ) subq_13 +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql index c514aae8c2..2f6d184ed0 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/DuckDB/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.listing__bookings AS listing__bookings - , subq_13.listings AS listings + subq_22.listing__bookings AS listing__bookings + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -38,11 +38,11 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_16 + ) subq_19 GROUP BY listing - ) subq_19 + ) subq_22 ON - subq_13.listing = subq_19.listing -) subq_20 + subq_16.listing = subq_22.listing +) subq_23 WHERE listing__bookings > 2 diff --git a/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlPlan/test_simple_query_with_metric_time_dimension__plan0.xml b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlPlan/test_simple_query_with_metric_time_dimension__plan0.xml index 68b7d5c3b7..cbd99f107f 100644 --- a/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlPlan/test_simple_query_with_metric_time_dimension__plan0.xml +++ b/tests_metricflow/snapshots/test_metric_time_dimension_to_sql.py/SqlPlan/test_simple_query_with_metric_time_dimension__plan0.xml @@ -6,7 +6,7 @@ docstring: - + @@ -25,7 +25,7 @@ docstring: - + @@ -992,17 +992,17 @@ docstring: - + - + - + @@ -1010,14 +1010,14 @@ docstring: - + - + @@ -1028,12 +1028,12 @@ docstring: - + - + @@ -1446,12 +1446,12 @@ docstring: - + - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0.sql index 6128ce335e..c156d4cf3f 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0.sql @@ -6,16 +6,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , subq_22.user__home_state_latest - , CAST(subq_22.buys AS DOUBLE) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_21.metric_time__day + , subq_21.user__home_state_latest + , CAST(subq_21.buys AS DOUBLE) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , COALESCE(subq_7.user__home_state_latest, subq_21.user__home_state_latest) AS user__home_state_latest + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day + , COALESCE(subq_7.user__home_state_latest, subq_20.user__home_state_latest) AS user__home_state_latest , MAX(subq_7.visits) AS visits - , MAX(subq_21.buys) AS buys + , MAX(subq_20.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -247,211 +247,211 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_20.metric_time__day - , subq_20.user__home_state_latest - , SUM(subq_20.buys) AS buys + subq_19.metric_time__day + , subq_19.user__home_state_latest + , SUM(subq_19.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'user__home_state_latest', 'metric_time__day'] SELECT - subq_19.metric_time__day - , subq_19.user__home_state_latest - , subq_19.buys + subq_18.metric_time__day + , subq_18.user__home_state_latest + , subq_18.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_18.metric_time__day - , subq_18.user - , subq_18.visit__referrer_id - , subq_18.user__home_state_latest - , subq_18.buys - , subq_18.visits + subq_17.metric_time__day + , subq_17.user + , subq_17.visit__referrer_id + , subq_17.user__home_state_latest + , subq_17.buys + , subq_17.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_14.visits) OVER ( + FIRST_VALUE(subq_13.visits) OVER ( PARTITION BY - subq_17.user - , subq_17.metric_time__day - , subq_17.mf_internal_uuid - ORDER BY subq_14.metric_time__day DESC + subq_16.user + , subq_16.metric_time__day + , subq_16.mf_internal_uuid + ORDER BY subq_13.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_14.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_13.visit__referrer_id) OVER ( PARTITION BY - subq_17.user - , subq_17.metric_time__day - , subq_17.mf_internal_uuid - ORDER BY subq_14.metric_time__day DESC + subq_16.user + , subq_16.metric_time__day + , subq_16.mf_internal_uuid + ORDER BY subq_13.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_14.user__home_state_latest) OVER ( + , FIRST_VALUE(subq_13.user__home_state_latest) OVER ( PARTITION BY - subq_17.user - , subq_17.metric_time__day - , subq_17.mf_internal_uuid - ORDER BY subq_14.metric_time__day DESC + subq_16.user + , subq_16.metric_time__day + , subq_16.mf_internal_uuid + ORDER BY subq_13.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user__home_state_latest - , FIRST_VALUE(subq_14.metric_time__day) OVER ( + , FIRST_VALUE(subq_13.metric_time__day) OVER ( PARTITION BY - subq_17.user - , subq_17.metric_time__day - , subq_17.mf_internal_uuid - ORDER BY subq_14.metric_time__day DESC + subq_16.user + , subq_16.metric_time__day + , subq_16.mf_internal_uuid + ORDER BY subq_13.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_14.user) OVER ( + , FIRST_VALUE(subq_13.user) OVER ( PARTITION BY - subq_17.user - , subq_17.metric_time__day - , subq_17.mf_internal_uuid - ORDER BY subq_14.metric_time__day DESC + subq_16.user + , subq_16.metric_time__day + , subq_16.mf_internal_uuid + ORDER BY subq_13.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_17.mf_internal_uuid AS mf_internal_uuid - , subq_17.buys AS buys + , subq_16.mf_internal_uuid AS mf_internal_uuid + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'user__home_state_latest', 'metric_time__day', 'user'] SELECT - subq_13.metric_time__day - , subq_13.user - , subq_13.visit__referrer_id - , subq_13.user__home_state_latest - , subq_13.visits + subq_12.metric_time__day + , subq_12.user + , subq_12.visit__referrer_id + , subq_12.user__home_state_latest + , subq_12.visits FROM ( -- Constrain Output with WHERE SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.visit__ds__day - , subq_12.visit__ds__week - , subq_12.visit__ds__month - , subq_12.visit__ds__quarter - , subq_12.visit__ds__year - , subq_12.visit__ds__extract_year - , subq_12.visit__ds__extract_quarter - , subq_12.visit__ds__extract_month - , subq_12.visit__ds__extract_day - , subq_12.visit__ds__extract_dow - , subq_12.visit__ds__extract_doy - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session - , subq_12.visit__user - , subq_12.visit__session - , subq_12.referrer_id - , subq_12.visit__referrer_id - , subq_12.user__home_state_latest - , subq_12.visits - , subq_12.visitors + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.visit__ds__day + , subq_11.visit__ds__week + , subq_11.visit__ds__month + , subq_11.visit__ds__quarter + , subq_11.visit__ds__year + , subq_11.visit__ds__extract_year + , subq_11.visit__ds__extract_quarter + , subq_11.visit__ds__extract_month + , subq_11.visit__ds__extract_day + , subq_11.visit__ds__extract_dow + , subq_11.visit__ds__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session + , subq_11.visit__user + , subq_11.visit__session + , subq_11.referrer_id + , subq_11.visit__referrer_id + , subq_11.user__home_state_latest + , subq_11.visits + , subq_11.visitors FROM ( -- Join Standard Outputs SELECT - subq_11.home_state_latest AS user__home_state_latest - , subq_9.ds__day AS ds__day - , subq_9.ds__week AS ds__week - , subq_9.ds__month AS ds__month - , subq_9.ds__quarter AS ds__quarter - , subq_9.ds__year AS ds__year - , subq_9.ds__extract_year AS ds__extract_year - , subq_9.ds__extract_quarter AS ds__extract_quarter - , subq_9.ds__extract_month AS ds__extract_month - , subq_9.ds__extract_day AS ds__extract_day - , subq_9.ds__extract_dow AS ds__extract_dow - , subq_9.ds__extract_doy AS ds__extract_doy - , subq_9.visit__ds__day AS visit__ds__day - , subq_9.visit__ds__week AS visit__ds__week - , subq_9.visit__ds__month AS visit__ds__month - , subq_9.visit__ds__quarter AS visit__ds__quarter - , subq_9.visit__ds__year AS visit__ds__year - , subq_9.visit__ds__extract_year AS visit__ds__extract_year - , subq_9.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_9.visit__ds__extract_month AS visit__ds__extract_month - , subq_9.visit__ds__extract_day AS visit__ds__extract_day - , subq_9.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_9.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_9.metric_time__month AS metric_time__month - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_9.metric_time__year AS metric_time__year - , subq_9.metric_time__extract_year AS metric_time__extract_year - , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_9.metric_time__extract_month AS metric_time__extract_month - , subq_9.metric_time__extract_day AS metric_time__extract_day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_9.metric_time__extract_doy AS metric_time__extract_doy - , subq_9.user AS user - , subq_9.session AS session - , subq_9.visit__user AS visit__user - , subq_9.visit__session AS visit__session - , subq_9.referrer_id AS referrer_id - , subq_9.visit__referrer_id AS visit__referrer_id - , subq_9.visits AS visits - , subq_9.visitors AS visitors + subq_10.home_state_latest AS user__home_state_latest + , subq_8.ds__day AS ds__day + , subq_8.ds__week AS ds__week + , subq_8.ds__month AS ds__month + , subq_8.ds__quarter AS ds__quarter + , subq_8.ds__year AS ds__year + , subq_8.ds__extract_year AS ds__extract_year + , subq_8.ds__extract_quarter AS ds__extract_quarter + , subq_8.ds__extract_month AS ds__extract_month + , subq_8.ds__extract_day AS ds__extract_day + , subq_8.ds__extract_dow AS ds__extract_dow + , subq_8.ds__extract_doy AS ds__extract_doy + , subq_8.visit__ds__day AS visit__ds__day + , subq_8.visit__ds__week AS visit__ds__week + , subq_8.visit__ds__month AS visit__ds__month + , subq_8.visit__ds__quarter AS visit__ds__quarter + , subq_8.visit__ds__year AS visit__ds__year + , subq_8.visit__ds__extract_year AS visit__ds__extract_year + , subq_8.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_8.visit__ds__extract_month AS visit__ds__extract_month + , subq_8.visit__ds__extract_day AS visit__ds__extract_day + , subq_8.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_8.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_8.metric_time__month AS metric_time__month + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_8.metric_time__year AS metric_time__year + , subq_8.metric_time__extract_year AS metric_time__extract_year + , subq_8.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_8.metric_time__extract_month AS metric_time__extract_month + , subq_8.metric_time__extract_day AS metric_time__extract_day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_8.metric_time__extract_doy AS metric_time__extract_doy + , subq_8.user AS user + , subq_8.session AS session + , subq_8.visit__user AS visit__user + , subq_8.visit__session AS visit__session + , subq_8.referrer_id AS referrer_id + , subq_8.visit__referrer_id AS visit__referrer_id + , subq_8.visits AS visits + , subq_8.visitors AS visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -486,13 +486,13 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 + ) subq_0 + ) subq_8 LEFT OUTER JOIN ( -- Pass Only Elements: ['home_state_latest', 'user'] SELECT - subq_10.user - , subq_10.home_state_latest + subq_9.user + , subq_9.home_state_latest FROM ( -- Read Elements From Semantic Model 'users_latest' SELECT @@ -522,123 +522,123 @@ FROM ( , users_latest_src_28000.home_state_latest AS user__home_state_latest , users_latest_src_28000.user_id AS user FROM ***************************.dim_users_latest users_latest_src_28000 - ) subq_10 - ) subq_11 + ) subq_9 + ) subq_10 ON - subq_9.user = subq_11.user - ) subq_12 + subq_8.user = subq_10.user + ) subq_11 WHERE visit__referrer_id = '123456' - ) subq_13 - ) subq_14 + ) subq_12 + ) subq_13 INNER JOIN ( -- Add column with generated UUID SELECT - subq_16.ds__day - , subq_16.ds__week - , subq_16.ds__month - , subq_16.ds__quarter - , subq_16.ds__year - , subq_16.ds__extract_year - , subq_16.ds__extract_quarter - , subq_16.ds__extract_month - , subq_16.ds__extract_day - , subq_16.ds__extract_dow - , subq_16.ds__extract_doy - , subq_16.ds_month__month - , subq_16.ds_month__quarter - , subq_16.ds_month__year - , subq_16.ds_month__extract_year - , subq_16.ds_month__extract_quarter - , subq_16.ds_month__extract_month - , subq_16.buy__ds__day - , subq_16.buy__ds__week - , subq_16.buy__ds__month - , subq_16.buy__ds__quarter - , subq_16.buy__ds__year - , subq_16.buy__ds__extract_year - , subq_16.buy__ds__extract_quarter - , subq_16.buy__ds__extract_month - , subq_16.buy__ds__extract_day - , subq_16.buy__ds__extract_dow - , subq_16.buy__ds__extract_doy - , subq_16.buy__ds_month__month - , subq_16.buy__ds_month__quarter - , subq_16.buy__ds_month__year - , subq_16.buy__ds_month__extract_year - , subq_16.buy__ds_month__extract_quarter - , subq_16.buy__ds_month__extract_month - , subq_16.metric_time__day - , subq_16.metric_time__week - , subq_16.metric_time__month - , subq_16.metric_time__quarter - , subq_16.metric_time__year - , subq_16.metric_time__extract_year - , subq_16.metric_time__extract_quarter - , subq_16.metric_time__extract_month - , subq_16.metric_time__extract_day - , subq_16.metric_time__extract_dow - , subq_16.metric_time__extract_doy - , subq_16.user - , subq_16.session_id - , subq_16.buy__user - , subq_16.buy__session_id - , subq_16.buys - , subq_16.buyers + subq_15.ds__day + , subq_15.ds__week + , subq_15.ds__month + , subq_15.ds__quarter + , subq_15.ds__year + , subq_15.ds__extract_year + , subq_15.ds__extract_quarter + , subq_15.ds__extract_month + , subq_15.ds__extract_day + , subq_15.ds__extract_dow + , subq_15.ds__extract_doy + , subq_15.ds_month__month + , subq_15.ds_month__quarter + , subq_15.ds_month__year + , subq_15.ds_month__extract_year + , subq_15.ds_month__extract_quarter + , subq_15.ds_month__extract_month + , subq_15.buy__ds__day + , subq_15.buy__ds__week + , subq_15.buy__ds__month + , subq_15.buy__ds__quarter + , subq_15.buy__ds__year + , subq_15.buy__ds__extract_year + , subq_15.buy__ds__extract_quarter + , subq_15.buy__ds__extract_month + , subq_15.buy__ds__extract_day + , subq_15.buy__ds__extract_dow + , subq_15.buy__ds__extract_doy + , subq_15.buy__ds_month__month + , subq_15.buy__ds_month__quarter + , subq_15.buy__ds_month__year + , subq_15.buy__ds_month__extract_year + , subq_15.buy__ds_month__extract_quarter + , subq_15.buy__ds_month__extract_month + , subq_15.metric_time__day + , subq_15.metric_time__week + , subq_15.metric_time__month + , subq_15.metric_time__quarter + , subq_15.metric_time__year + , subq_15.metric_time__extract_year + , subq_15.metric_time__extract_quarter + , subq_15.metric_time__extract_month + , subq_15.metric_time__extract_day + , subq_15.metric_time__extract_dow + , subq_15.metric_time__extract_doy + , subq_15.user + , subq_15.session_id + , subq_15.buy__user + , subq_15.buy__session_id + , subq_15.buys + , subq_15.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_month__month - , subq_15.ds_month__quarter - , subq_15.ds_month__year - , subq_15.ds_month__extract_year - , subq_15.ds_month__extract_quarter - , subq_15.ds_month__extract_month - , subq_15.buy__ds__day - , subq_15.buy__ds__week - , subq_15.buy__ds__month - , subq_15.buy__ds__quarter - , subq_15.buy__ds__year - , subq_15.buy__ds__extract_year - , subq_15.buy__ds__extract_quarter - , subq_15.buy__ds__extract_month - , subq_15.buy__ds__extract_day - , subq_15.buy__ds__extract_dow - , subq_15.buy__ds__extract_doy - , subq_15.buy__ds_month__month - , subq_15.buy__ds_month__quarter - , subq_15.buy__ds_month__year - , subq_15.buy__ds_month__extract_year - , subq_15.buy__ds_month__extract_quarter - , subq_15.buy__ds_month__extract_month - , subq_15.ds__day AS metric_time__day - , subq_15.ds__week AS metric_time__week - , subq_15.ds__month AS metric_time__month - , subq_15.ds__quarter AS metric_time__quarter - , subq_15.ds__year AS metric_time__year - , subq_15.ds__extract_year AS metric_time__extract_year - , subq_15.ds__extract_quarter AS metric_time__extract_quarter - , subq_15.ds__extract_month AS metric_time__extract_month - , subq_15.ds__extract_day AS metric_time__extract_day - , subq_15.ds__extract_dow AS metric_time__extract_dow - , subq_15.ds__extract_doy AS metric_time__extract_doy - , subq_15.user - , subq_15.session_id - , subq_15.buy__user - , subq_15.buy__session_id - , subq_15.buys - , subq_15.buyers + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.ds_month__month + , subq_14.ds_month__quarter + , subq_14.ds_month__year + , subq_14.ds_month__extract_year + , subq_14.ds_month__extract_quarter + , subq_14.ds_month__extract_month + , subq_14.buy__ds__day + , subq_14.buy__ds__week + , subq_14.buy__ds__month + , subq_14.buy__ds__quarter + , subq_14.buy__ds__year + , subq_14.buy__ds__extract_year + , subq_14.buy__ds__extract_quarter + , subq_14.buy__ds__extract_month + , subq_14.buy__ds__extract_day + , subq_14.buy__ds__extract_dow + , subq_14.buy__ds__extract_doy + , subq_14.buy__ds_month__month + , subq_14.buy__ds_month__quarter + , subq_14.buy__ds_month__year + , subq_14.buy__ds_month__extract_year + , subq_14.buy__ds_month__extract_quarter + , subq_14.buy__ds_month__extract_month + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session_id + , subq_14.buy__user + , subq_14.buy__session_id + , subq_14.buys + , subq_14.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -684,33 +684,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_15 - ) subq_16 - ) subq_17 + ) subq_14 + ) subq_15 + ) subq_16 ON ( - subq_14.user = subq_17.user + subq_13.user = subq_16.user ) AND ( ( - subq_14.metric_time__day <= subq_17.metric_time__day + subq_13.metric_time__day <= subq_16.metric_time__day ) AND ( - subq_14.metric_time__day > subq_17.metric_time__day - INTERVAL 7 day + subq_13.metric_time__day > subq_16.metric_time__day - INTERVAL 7 day ) ) - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 GROUP BY - subq_20.metric_time__day - , subq_20.user__home_state_latest - ) subq_21 + subq_19.metric_time__day + , subq_19.user__home_state_latest + ) subq_20 ON ( - subq_7.user__home_state_latest = subq_21.user__home_state_latest + subq_7.user__home_state_latest = subq_20.user__home_state_latest ) AND ( - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day ) GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) - , COALESCE(subq_7.user__home_state_latest, subq_21.user__home_state_latest) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) + , COALESCE(subq_7.user__home_state_latest, subq_20.user__home_state_latest) +) subq_21 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0_optimized.sql index 7b280a2a46..0e9e77aa23 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_conversion_metric_query_filters__plan0_optimized.sql @@ -31,10 +31,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(subq_30.user__home_state_latest, subq_43.user__home_state_latest) AS user__home_state_latest - , MAX(subq_30.visits) AS visits - , MAX(subq_43.buys) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(subq_29.user__home_state_latest, subq_42.user__home_state_latest) AS user__home_state_latest + , MAX(subq_29.visits) AS visits + , MAX(subq_42.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'user__home_state_latest', 'metric_time__day'] @@ -55,12 +55,12 @@ FROM ( rss_28028_cte rss_28028_cte ON sma_28019_cte.user = rss_28028_cte.user - ) subq_27 + ) subq_26 WHERE visit__referrer_id = '123456' GROUP BY metric_time__day , user__home_state_latest - ) subq_30 + ) subq_29 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'user__home_state_latest', 'metric_time__day'] @@ -72,54 +72,54 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_36.visits) OVER ( + FIRST_VALUE(subq_35.visits) OVER ( PARTITION BY - subq_39.user - , subq_39.metric_time__day - , subq_39.mf_internal_uuid - ORDER BY subq_36.metric_time__day DESC + subq_38.user + , subq_38.metric_time__day + , subq_38.mf_internal_uuid + ORDER BY subq_35.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_36.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_35.visit__referrer_id) OVER ( PARTITION BY - subq_39.user - , subq_39.metric_time__day - , subq_39.mf_internal_uuid - ORDER BY subq_36.metric_time__day DESC + subq_38.user + , subq_38.metric_time__day + , subq_38.mf_internal_uuid + ORDER BY subq_35.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_36.user__home_state_latest) OVER ( + , FIRST_VALUE(subq_35.user__home_state_latest) OVER ( PARTITION BY - subq_39.user - , subq_39.metric_time__day - , subq_39.mf_internal_uuid - ORDER BY subq_36.metric_time__day DESC + subq_38.user + , subq_38.metric_time__day + , subq_38.mf_internal_uuid + ORDER BY subq_35.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user__home_state_latest - , FIRST_VALUE(subq_36.metric_time__day) OVER ( + , FIRST_VALUE(subq_35.metric_time__day) OVER ( PARTITION BY - subq_39.user - , subq_39.metric_time__day - , subq_39.mf_internal_uuid - ORDER BY subq_36.metric_time__day DESC + subq_38.user + , subq_38.metric_time__day + , subq_38.mf_internal_uuid + ORDER BY subq_35.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_36.user) OVER ( + , FIRST_VALUE(subq_35.user) OVER ( PARTITION BY - subq_39.user - , subq_39.metric_time__day - , subq_39.mf_internal_uuid - ORDER BY subq_36.metric_time__day DESC + subq_38.user + , subq_38.metric_time__day + , subq_38.mf_internal_uuid + ORDER BY subq_35.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_39.mf_internal_uuid AS mf_internal_uuid - , subq_39.buys AS buys + , subq_38.mf_internal_uuid AS mf_internal_uuid + , subq_38.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'user__home_state_latest', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_34.user + , subq_33.user , visit__referrer_id , user__home_state_latest , visits @@ -136,9 +136,9 @@ FROM ( rss_28028_cte rss_28028_cte ON sma_28019_cte.user = rss_28028_cte.user - ) subq_34 + ) subq_33 WHERE visit__referrer_id = '123456' - ) subq_36 + ) subq_35 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -149,29 +149,29 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_39 + ) subq_38 ON ( - subq_36.user = subq_39.user + subq_35.user = subq_38.user ) AND ( ( - subq_36.metric_time__day <= subq_39.metric_time__day + subq_35.metric_time__day <= subq_38.metric_time__day ) AND ( - subq_36.metric_time__day > subq_39.metric_time__day - INTERVAL 7 day + subq_35.metric_time__day > subq_38.metric_time__day - INTERVAL 7 day ) ) - ) subq_40 + ) subq_39 GROUP BY metric_time__day , user__home_state_latest - ) subq_43 + ) subq_42 ON ( - subq_30.user__home_state_latest = subq_43.user__home_state_latest + subq_29.user__home_state_latest = subq_42.user__home_state_latest ) AND ( - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day ) GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) - , COALESCE(subq_30.user__home_state_latest, subq_43.user__home_state_latest) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) + , COALESCE(subq_29.user__home_state_latest, subq_42.user__home_state_latest) +) subq_43 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0.sql index df38de09e2..edee24e3b3 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0.sql @@ -14,14 +14,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day - , CAST(subq_11.average_booking_value AS DOUBLE) / CAST(NULLIF(subq_11.max_booking_value, 0) AS DOUBLE) AS instant_booking_fraction_of_max_value + subq_10.metric_time__day + , CAST(subq_10.average_booking_value AS DOUBLE) / CAST(NULLIF(subq_10.max_booking_value, 0) AS DOUBLE) AS instant_booking_fraction_of_max_value FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_10.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_9.metric_time__day) AS metric_time__day , MAX(subq_5.average_booking_value) AS average_booking_value - , MAX(subq_10.max_booking_value) AS max_booking_value + , MAX(subq_9.max_booking_value) AS max_booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -343,119 +343,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_9.metric_time__day - , subq_9.max_booking_value + subq_8.metric_time__day + , subq_8.max_booking_value FROM ( -- Aggregate Measures SELECT - subq_8.metric_time__day - , MAX(subq_8.max_booking_value) AS max_booking_value + subq_7.metric_time__day + , MAX(subq_7.max_booking_value) AS max_booking_value FROM ( -- Pass Only Elements: ['max_booking_value', 'metric_time__day'] SELECT - subq_7.metric_time__day - , subq_7.max_booking_value + subq_6.metric_time__day + , subq_6.max_booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -548,15 +548,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.metric_time__day - ) subq_9 - ) subq_10 + subq_7.metric_time__day + ) subq_8 + ) subq_9 ON - subq_5.metric_time__day = subq_10.metric_time__day + subq_5.metric_time__day = subq_9.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_10.metric_time__day) -) subq_11 + COALESCE(subq_5.metric_time__day, subq_9.metric_time__day) +) subq_10 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0_optimized.sql index 3d37d0c84d..fd3a27b8f4 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_different_filters_on_same_measure_source_categorical_dimension__plan0_optimized.sql @@ -30,9 +30,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_17.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_17.average_booking_value) AS average_booking_value - , MAX(subq_21.max_booking_value) AS max_booking_value + COALESCE(subq_16.metric_time__day, subq_20.metric_time__day) AS metric_time__day + , MAX(subq_16.average_booking_value) AS average_booking_value + , MAX(subq_20.max_booking_value) AS max_booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'metric_time__day'] @@ -46,13 +46,14 @@ FROM ( SELECT metric_time__day , booking__is_instant + , max_booking_value , average_booking_value FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_12 WHERE booking__is_instant GROUP BY metric_time__day - ) subq_17 + ) subq_16 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['max_booking_value', 'metric_time__day'] @@ -64,9 +65,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 + ) subq_20 ON - subq_17.metric_time__day = subq_21.metric_time__day + subq_16.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_17.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_16.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0.sql index f78b7f13e1..abb1abcb3d 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0.sql @@ -8,16 +8,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_32.metric_time__day - , subq_32.listing__country_latest + subq_30.metric_time__day + , subq_30.listing__country_latest , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_13.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_13.listing__country_latest, subq_31.listing__country_latest) AS listing__country_latest + COALESCE(subq_13.metric_time__day, subq_29.metric_time__day) AS metric_time__day + , COALESCE(subq_13.listing__country_latest, subq_29.listing__country_latest) AS listing__country_latest , COALESCE(MAX(subq_13.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , COALESCE(MAX(subq_31.bookings_2_weeks_ago), 0) AS bookings_2_weeks_ago + , COALESCE(MAX(subq_29.bookings_2_weeks_ago), 0) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -634,34 +634,34 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_30.metric_time__day - , subq_30.listing__country_latest - , COALESCE(subq_30.bookings, 0) AS bookings_2_weeks_ago + subq_28.metric_time__day + , subq_28.listing__country_latest + , COALESCE(subq_28.bookings, 0) AS bookings_2_weeks_ago FROM ( -- Join to Time Spine Dataset SELECT - subq_29.metric_time__day AS metric_time__day - , subq_26.listing__country_latest AS listing__country_latest - , subq_26.bookings AS bookings + subq_27.metric_time__day AS metric_time__day + , subq_24.listing__country_latest AS listing__country_latest + , subq_24.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_28.metric_time__day + subq_26.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_27.ds__day AS metric_time__day - , subq_27.ds__week - , subq_27.ds__month - , subq_27.ds__quarter - , subq_27.ds__year - , subq_27.ds__extract_year - , subq_27.ds__extract_quarter - , subq_27.ds__extract_month - , subq_27.ds__extract_day - , subq_27.ds__extract_dow - , subq_27.ds__extract_doy - , subq_27.ds__martian_day + subq_25.ds__day AS metric_time__day + , subq_25.ds__week + , subq_25.ds__month + , subq_25.ds__quarter + , subq_25.ds__year + , subq_25.ds__extract_year + , subq_25.ds__extract_quarter + , subq_25.ds__extract_month + , subq_25.ds__extract_day + , subq_25.ds__extract_dow + , subq_25.ds__extract_doy + , subq_25.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -678,345 +678,345 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_27 - ) subq_28 - ) subq_29 + ) subq_25 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_25.metric_time__day - , subq_25.listing__country_latest - , SUM(subq_25.bookings) AS bookings + subq_23.metric_time__day + , subq_23.listing__country_latest + , SUM(subq_23.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] SELECT - subq_24.metric_time__day - , subq_24.listing__country_latest - , subq_24.bookings + subq_22.metric_time__day + , subq_22.listing__country_latest + , subq_22.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_23.ds__day - , subq_23.ds__week - , subq_23.ds__month - , subq_23.ds__quarter - , subq_23.ds__year - , subq_23.ds__extract_year - , subq_23.ds__extract_quarter - , subq_23.ds__extract_month - , subq_23.ds__extract_day - , subq_23.ds__extract_dow - , subq_23.ds__extract_doy - , subq_23.ds_partitioned__day - , subq_23.ds_partitioned__week - , subq_23.ds_partitioned__month - , subq_23.ds_partitioned__quarter - , subq_23.ds_partitioned__year - , subq_23.ds_partitioned__extract_year - , subq_23.ds_partitioned__extract_quarter - , subq_23.ds_partitioned__extract_month - , subq_23.ds_partitioned__extract_day - , subq_23.ds_partitioned__extract_dow - , subq_23.ds_partitioned__extract_doy - , subq_23.paid_at__day - , subq_23.paid_at__week - , subq_23.paid_at__month - , subq_23.paid_at__quarter - , subq_23.paid_at__year - , subq_23.paid_at__extract_year - , subq_23.paid_at__extract_quarter - , subq_23.paid_at__extract_month - , subq_23.paid_at__extract_day - , subq_23.paid_at__extract_dow - , subq_23.paid_at__extract_doy - , subq_23.booking__ds__day - , subq_23.booking__ds__week - , subq_23.booking__ds__month - , subq_23.booking__ds__quarter - , subq_23.booking__ds__year - , subq_23.booking__ds__extract_year - , subq_23.booking__ds__extract_quarter - , subq_23.booking__ds__extract_month - , subq_23.booking__ds__extract_day - , subq_23.booking__ds__extract_dow - , subq_23.booking__ds__extract_doy - , subq_23.booking__ds_partitioned__day - , subq_23.booking__ds_partitioned__week - , subq_23.booking__ds_partitioned__month - , subq_23.booking__ds_partitioned__quarter - , subq_23.booking__ds_partitioned__year - , subq_23.booking__ds_partitioned__extract_year - , subq_23.booking__ds_partitioned__extract_quarter - , subq_23.booking__ds_partitioned__extract_month - , subq_23.booking__ds_partitioned__extract_day - , subq_23.booking__ds_partitioned__extract_dow - , subq_23.booking__ds_partitioned__extract_doy - , subq_23.booking__paid_at__day - , subq_23.booking__paid_at__week - , subq_23.booking__paid_at__month - , subq_23.booking__paid_at__quarter - , subq_23.booking__paid_at__year - , subq_23.booking__paid_at__extract_year - , subq_23.booking__paid_at__extract_quarter - , subq_23.booking__paid_at__extract_month - , subq_23.booking__paid_at__extract_day - , subq_23.booking__paid_at__extract_dow - , subq_23.booking__paid_at__extract_doy - , subq_23.metric_time__week - , subq_23.metric_time__month - , subq_23.metric_time__quarter - , subq_23.metric_time__year - , subq_23.metric_time__extract_year - , subq_23.metric_time__extract_quarter - , subq_23.metric_time__extract_month - , subq_23.metric_time__extract_day - , subq_23.metric_time__extract_dow - , subq_23.metric_time__extract_doy - , subq_23.metric_time__day - , subq_23.listing - , subq_23.guest - , subq_23.host - , subq_23.booking__listing - , subq_23.booking__guest - , subq_23.booking__host - , subq_23.is_instant - , subq_23.booking__is_instant - , subq_23.listing__country_latest - , subq_23.bookings - , subq_23.instant_bookings - , subq_23.booking_value - , subq_23.max_booking_value - , subq_23.min_booking_value - , subq_23.bookers - , subq_23.average_booking_value - , subq_23.referred_bookings - , subq_23.median_booking_value - , subq_23.booking_value_p99 - , subq_23.discrete_booking_value_p99 - , subq_23.approximate_continuous_booking_value_p99 - , subq_23.approximate_discrete_booking_value_p99 + subq_21.ds__day + , subq_21.ds__week + , subq_21.ds__month + , subq_21.ds__quarter + , subq_21.ds__year + , subq_21.ds__extract_year + , subq_21.ds__extract_quarter + , subq_21.ds__extract_month + , subq_21.ds__extract_day + , subq_21.ds__extract_dow + , subq_21.ds__extract_doy + , subq_21.ds_partitioned__day + , subq_21.ds_partitioned__week + , subq_21.ds_partitioned__month + , subq_21.ds_partitioned__quarter + , subq_21.ds_partitioned__year + , subq_21.ds_partitioned__extract_year + , subq_21.ds_partitioned__extract_quarter + , subq_21.ds_partitioned__extract_month + , subq_21.ds_partitioned__extract_day + , subq_21.ds_partitioned__extract_dow + , subq_21.ds_partitioned__extract_doy + , subq_21.paid_at__day + , subq_21.paid_at__week + , subq_21.paid_at__month + , subq_21.paid_at__quarter + , subq_21.paid_at__year + , subq_21.paid_at__extract_year + , subq_21.paid_at__extract_quarter + , subq_21.paid_at__extract_month + , subq_21.paid_at__extract_day + , subq_21.paid_at__extract_dow + , subq_21.paid_at__extract_doy + , subq_21.booking__ds__day + , subq_21.booking__ds__week + , subq_21.booking__ds__month + , subq_21.booking__ds__quarter + , subq_21.booking__ds__year + , subq_21.booking__ds__extract_year + , subq_21.booking__ds__extract_quarter + , subq_21.booking__ds__extract_month + , subq_21.booking__ds__extract_day + , subq_21.booking__ds__extract_dow + , subq_21.booking__ds__extract_doy + , subq_21.booking__ds_partitioned__day + , subq_21.booking__ds_partitioned__week + , subq_21.booking__ds_partitioned__month + , subq_21.booking__ds_partitioned__quarter + , subq_21.booking__ds_partitioned__year + , subq_21.booking__ds_partitioned__extract_year + , subq_21.booking__ds_partitioned__extract_quarter + , subq_21.booking__ds_partitioned__extract_month + , subq_21.booking__ds_partitioned__extract_day + , subq_21.booking__ds_partitioned__extract_dow + , subq_21.booking__ds_partitioned__extract_doy + , subq_21.booking__paid_at__day + , subq_21.booking__paid_at__week + , subq_21.booking__paid_at__month + , subq_21.booking__paid_at__quarter + , subq_21.booking__paid_at__year + , subq_21.booking__paid_at__extract_year + , subq_21.booking__paid_at__extract_quarter + , subq_21.booking__paid_at__extract_month + , subq_21.booking__paid_at__extract_day + , subq_21.booking__paid_at__extract_dow + , subq_21.booking__paid_at__extract_doy + , subq_21.metric_time__week + , subq_21.metric_time__month + , subq_21.metric_time__quarter + , subq_21.metric_time__year + , subq_21.metric_time__extract_year + , subq_21.metric_time__extract_quarter + , subq_21.metric_time__extract_month + , subq_21.metric_time__extract_day + , subq_21.metric_time__extract_dow + , subq_21.metric_time__extract_doy + , subq_21.metric_time__day + , subq_21.listing + , subq_21.guest + , subq_21.host + , subq_21.booking__listing + , subq_21.booking__guest + , subq_21.booking__host + , subq_21.is_instant + , subq_21.booking__is_instant + , subq_21.listing__country_latest + , subq_21.bookings + , subq_21.instant_bookings + , subq_21.booking_value + , subq_21.max_booking_value + , subq_21.min_booking_value + , subq_21.bookers + , subq_21.average_booking_value + , subq_21.referred_bookings + , subq_21.median_booking_value + , subq_21.booking_value_p99 + , subq_21.discrete_booking_value_p99 + , subq_21.approximate_continuous_booking_value_p99 + , subq_21.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_22.country_latest AS listing__country_latest - , subq_19.ds__day AS ds__day - , subq_19.ds__week AS ds__week - , subq_19.ds__month AS ds__month - , subq_19.ds__quarter AS ds__quarter - , subq_19.ds__year AS ds__year - , subq_19.ds__extract_year AS ds__extract_year - , subq_19.ds__extract_quarter AS ds__extract_quarter - , subq_19.ds__extract_month AS ds__extract_month - , subq_19.ds__extract_day AS ds__extract_day - , subq_19.ds__extract_dow AS ds__extract_dow - , subq_19.ds__extract_doy AS ds__extract_doy - , subq_19.ds_partitioned__day AS ds_partitioned__day - , subq_19.ds_partitioned__week AS ds_partitioned__week - , subq_19.ds_partitioned__month AS ds_partitioned__month - , subq_19.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_19.ds_partitioned__year AS ds_partitioned__year - , subq_19.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_19.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_19.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_19.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_19.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_19.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_19.paid_at__day AS paid_at__day - , subq_19.paid_at__week AS paid_at__week - , subq_19.paid_at__month AS paid_at__month - , subq_19.paid_at__quarter AS paid_at__quarter - , subq_19.paid_at__year AS paid_at__year - , subq_19.paid_at__extract_year AS paid_at__extract_year - , subq_19.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_19.paid_at__extract_month AS paid_at__extract_month - , subq_19.paid_at__extract_day AS paid_at__extract_day - , subq_19.paid_at__extract_dow AS paid_at__extract_dow - , subq_19.paid_at__extract_doy AS paid_at__extract_doy - , subq_19.booking__ds__day AS booking__ds__day - , subq_19.booking__ds__week AS booking__ds__week - , subq_19.booking__ds__month AS booking__ds__month - , subq_19.booking__ds__quarter AS booking__ds__quarter - , subq_19.booking__ds__year AS booking__ds__year - , subq_19.booking__ds__extract_year AS booking__ds__extract_year - , subq_19.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_19.booking__ds__extract_month AS booking__ds__extract_month - , subq_19.booking__ds__extract_day AS booking__ds__extract_day - , subq_19.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_19.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_19.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_19.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_19.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_19.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_19.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_19.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_19.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_19.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_19.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_19.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_19.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_19.booking__paid_at__day AS booking__paid_at__day - , subq_19.booking__paid_at__week AS booking__paid_at__week - , subq_19.booking__paid_at__month AS booking__paid_at__month - , subq_19.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_19.booking__paid_at__year AS booking__paid_at__year - , subq_19.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_19.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_19.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_19.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_19.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_19.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_19.metric_time__week AS metric_time__week - , subq_19.metric_time__month AS metric_time__month - , subq_19.metric_time__quarter AS metric_time__quarter - , subq_19.metric_time__year AS metric_time__year - , subq_19.metric_time__extract_year AS metric_time__extract_year - , subq_19.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_19.metric_time__extract_month AS metric_time__extract_month - , subq_19.metric_time__extract_day AS metric_time__extract_day - , subq_19.metric_time__extract_dow AS metric_time__extract_dow - , subq_19.metric_time__extract_doy AS metric_time__extract_doy - , subq_19.metric_time__day AS metric_time__day - , subq_19.listing AS listing - , subq_19.guest AS guest - , subq_19.host AS host - , subq_19.booking__listing AS booking__listing - , subq_19.booking__guest AS booking__guest - , subq_19.booking__host AS booking__host - , subq_19.is_instant AS is_instant - , subq_19.booking__is_instant AS booking__is_instant - , subq_19.bookings AS bookings - , subq_19.instant_bookings AS instant_bookings - , subq_19.booking_value AS booking_value - , subq_19.max_booking_value AS max_booking_value - , subq_19.min_booking_value AS min_booking_value - , subq_19.bookers AS bookers - , subq_19.average_booking_value AS average_booking_value - , subq_19.referred_bookings AS referred_bookings - , subq_19.median_booking_value AS median_booking_value - , subq_19.booking_value_p99 AS booking_value_p99 - , subq_19.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_19.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_19.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.country_latest AS listing__country_latest + , subq_18.ds__day AS ds__day + , subq_18.ds__week AS ds__week + , subq_18.ds__month AS ds__month + , subq_18.ds__quarter AS ds__quarter + , subq_18.ds__year AS ds__year + , subq_18.ds__extract_year AS ds__extract_year + , subq_18.ds__extract_quarter AS ds__extract_quarter + , subq_18.ds__extract_month AS ds__extract_month + , subq_18.ds__extract_day AS ds__extract_day + , subq_18.ds__extract_dow AS ds__extract_dow + , subq_18.ds__extract_doy AS ds__extract_doy + , subq_18.ds_partitioned__day AS ds_partitioned__day + , subq_18.ds_partitioned__week AS ds_partitioned__week + , subq_18.ds_partitioned__month AS ds_partitioned__month + , subq_18.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_18.ds_partitioned__year AS ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_18.paid_at__day AS paid_at__day + , subq_18.paid_at__week AS paid_at__week + , subq_18.paid_at__month AS paid_at__month + , subq_18.paid_at__quarter AS paid_at__quarter + , subq_18.paid_at__year AS paid_at__year + , subq_18.paid_at__extract_year AS paid_at__extract_year + , subq_18.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_18.paid_at__extract_month AS paid_at__extract_month + , subq_18.paid_at__extract_day AS paid_at__extract_day + , subq_18.paid_at__extract_dow AS paid_at__extract_dow + , subq_18.paid_at__extract_doy AS paid_at__extract_doy + , subq_18.booking__ds__day AS booking__ds__day + , subq_18.booking__ds__week AS booking__ds__week + , subq_18.booking__ds__month AS booking__ds__month + , subq_18.booking__ds__quarter AS booking__ds__quarter + , subq_18.booking__ds__year AS booking__ds__year + , subq_18.booking__ds__extract_year AS booking__ds__extract_year + , subq_18.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_18.booking__ds__extract_month AS booking__ds__extract_month + , subq_18.booking__ds__extract_day AS booking__ds__extract_day + , subq_18.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_18.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day AS booking__paid_at__day + , subq_18.booking__paid_at__week AS booking__paid_at__week + , subq_18.booking__paid_at__month AS booking__paid_at__month + , subq_18.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_18.booking__paid_at__year AS booking__paid_at__year + , subq_18.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_18.metric_time__week AS metric_time__week + , subq_18.metric_time__month AS metric_time__month + , subq_18.metric_time__quarter AS metric_time__quarter + , subq_18.metric_time__year AS metric_time__year + , subq_18.metric_time__extract_year AS metric_time__extract_year + , subq_18.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_18.metric_time__extract_month AS metric_time__extract_month + , subq_18.metric_time__extract_day AS metric_time__extract_day + , subq_18.metric_time__extract_dow AS metric_time__extract_dow + , subq_18.metric_time__extract_doy AS metric_time__extract_doy + , subq_18.metric_time__day AS metric_time__day + , subq_18.listing AS listing + , subq_18.guest AS guest + , subq_18.host AS host + , subq_18.booking__listing AS booking__listing + , subq_18.booking__guest AS booking__guest + , subq_18.booking__host AS booking__host + , subq_18.is_instant AS is_instant + , subq_18.booking__is_instant AS booking__is_instant + , subq_18.bookings AS bookings + , subq_18.instant_bookings AS instant_bookings + , subq_18.booking_value AS booking_value + , subq_18.max_booking_value AS max_booking_value + , subq_18.min_booking_value AS min_booking_value + , subq_18.bookers AS bookers + , subq_18.average_booking_value AS average_booking_value + , subq_18.referred_bookings AS referred_bookings + , subq_18.median_booking_value AS median_booking_value + , subq_18.booking_value_p99 AS booking_value_p99 + , subq_18.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_18.metric_time__day AS metric_time__day - , subq_15.ds__day AS ds__day - , subq_15.ds__week AS ds__week - , subq_15.ds__month AS ds__month - , subq_15.ds__quarter AS ds__quarter - , subq_15.ds__year AS ds__year - , subq_15.ds__extract_year AS ds__extract_year - , subq_15.ds__extract_quarter AS ds__extract_quarter - , subq_15.ds__extract_month AS ds__extract_month - , subq_15.ds__extract_day AS ds__extract_day - , subq_15.ds__extract_dow AS ds__extract_dow - , subq_15.ds__extract_doy AS ds__extract_doy - , subq_15.ds_partitioned__day AS ds_partitioned__day - , subq_15.ds_partitioned__week AS ds_partitioned__week - , subq_15.ds_partitioned__month AS ds_partitioned__month - , subq_15.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_15.ds_partitioned__year AS ds_partitioned__year - , subq_15.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_15.paid_at__day AS paid_at__day - , subq_15.paid_at__week AS paid_at__week - , subq_15.paid_at__month AS paid_at__month - , subq_15.paid_at__quarter AS paid_at__quarter - , subq_15.paid_at__year AS paid_at__year - , subq_15.paid_at__extract_year AS paid_at__extract_year - , subq_15.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_15.paid_at__extract_month AS paid_at__extract_month - , subq_15.paid_at__extract_day AS paid_at__extract_day - , subq_15.paid_at__extract_dow AS paid_at__extract_dow - , subq_15.paid_at__extract_doy AS paid_at__extract_doy - , subq_15.booking__ds__day AS booking__ds__day - , subq_15.booking__ds__week AS booking__ds__week - , subq_15.booking__ds__month AS booking__ds__month - , subq_15.booking__ds__quarter AS booking__ds__quarter - , subq_15.booking__ds__year AS booking__ds__year - , subq_15.booking__ds__extract_year AS booking__ds__extract_year - , subq_15.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_15.booking__ds__extract_month AS booking__ds__extract_month - , subq_15.booking__ds__extract_day AS booking__ds__extract_day - , subq_15.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_15.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day AS booking__paid_at__day - , subq_15.booking__paid_at__week AS booking__paid_at__week - , subq_15.booking__paid_at__month AS booking__paid_at__month - , subq_15.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_15.booking__paid_at__year AS booking__paid_at__year - , subq_15.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_15.metric_time__week AS metric_time__week - , subq_15.metric_time__month AS metric_time__month - , subq_15.metric_time__quarter AS metric_time__quarter - , subq_15.metric_time__year AS metric_time__year - , subq_15.metric_time__extract_year AS metric_time__extract_year - , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_15.metric_time__extract_month AS metric_time__extract_month - , subq_15.metric_time__extract_day AS metric_time__extract_day - , subq_15.metric_time__extract_dow AS metric_time__extract_dow - , subq_15.metric_time__extract_doy AS metric_time__extract_doy - , subq_15.listing AS listing - , subq_15.guest AS guest - , subq_15.host AS host - , subq_15.booking__listing AS booking__listing - , subq_15.booking__guest AS booking__guest - , subq_15.booking__host AS booking__host - , subq_15.is_instant AS is_instant - , subq_15.booking__is_instant AS booking__is_instant - , subq_15.bookings AS bookings - , subq_15.instant_bookings AS instant_bookings - , subq_15.booking_value AS booking_value - , subq_15.max_booking_value AS max_booking_value - , subq_15.min_booking_value AS min_booking_value - , subq_15.bookers AS bookers - , subq_15.average_booking_value AS average_booking_value - , subq_15.referred_bookings AS referred_bookings - , subq_15.median_booking_value AS median_booking_value - , subq_15.booking_value_p99 AS booking_value_p99 - , subq_15.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_17.metric_time__day AS metric_time__day + , subq_14.ds__day AS ds__day + , subq_14.ds__week AS ds__week + , subq_14.ds__month AS ds__month + , subq_14.ds__quarter AS ds__quarter + , subq_14.ds__year AS ds__year + , subq_14.ds__extract_year AS ds__extract_year + , subq_14.ds__extract_quarter AS ds__extract_quarter + , subq_14.ds__extract_month AS ds__extract_month + , subq_14.ds__extract_day AS ds__extract_day + , subq_14.ds__extract_dow AS ds__extract_dow + , subq_14.ds__extract_doy AS ds__extract_doy + , subq_14.ds_partitioned__day AS ds_partitioned__day + , subq_14.ds_partitioned__week AS ds_partitioned__week + , subq_14.ds_partitioned__month AS ds_partitioned__month + , subq_14.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_14.ds_partitioned__year AS ds_partitioned__year + , subq_14.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_14.paid_at__day AS paid_at__day + , subq_14.paid_at__week AS paid_at__week + , subq_14.paid_at__month AS paid_at__month + , subq_14.paid_at__quarter AS paid_at__quarter + , subq_14.paid_at__year AS paid_at__year + , subq_14.paid_at__extract_year AS paid_at__extract_year + , subq_14.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_14.paid_at__extract_month AS paid_at__extract_month + , subq_14.paid_at__extract_day AS paid_at__extract_day + , subq_14.paid_at__extract_dow AS paid_at__extract_dow + , subq_14.paid_at__extract_doy AS paid_at__extract_doy + , subq_14.booking__ds__day AS booking__ds__day + , subq_14.booking__ds__week AS booking__ds__week + , subq_14.booking__ds__month AS booking__ds__month + , subq_14.booking__ds__quarter AS booking__ds__quarter + , subq_14.booking__ds__year AS booking__ds__year + , subq_14.booking__ds__extract_year AS booking__ds__extract_year + , subq_14.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_14.booking__ds__extract_month AS booking__ds__extract_month + , subq_14.booking__ds__extract_day AS booking__ds__extract_day + , subq_14.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_14.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_14.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_14.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_14.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_14.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_14.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_14.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_14.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_14.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_14.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_14.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_14.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_14.booking__paid_at__day AS booking__paid_at__day + , subq_14.booking__paid_at__week AS booking__paid_at__week + , subq_14.booking__paid_at__month AS booking__paid_at__month + , subq_14.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_14.booking__paid_at__year AS booking__paid_at__year + , subq_14.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_14.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_14.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_14.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_14.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_14.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_14.metric_time__week AS metric_time__week + , subq_14.metric_time__month AS metric_time__month + , subq_14.metric_time__quarter AS metric_time__quarter + , subq_14.metric_time__year AS metric_time__year + , subq_14.metric_time__extract_year AS metric_time__extract_year + , subq_14.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_14.metric_time__extract_month AS metric_time__extract_month + , subq_14.metric_time__extract_day AS metric_time__extract_day + , subq_14.metric_time__extract_dow AS metric_time__extract_dow + , subq_14.metric_time__extract_doy AS metric_time__extract_doy + , subq_14.listing AS listing + , subq_14.guest AS guest + , subq_14.host AS host + , subq_14.booking__listing AS booking__listing + , subq_14.booking__guest AS booking__guest + , subq_14.booking__host AS booking__host + , subq_14.is_instant AS is_instant + , subq_14.booking__is_instant AS booking__is_instant + , subq_14.bookings AS bookings + , subq_14.instant_bookings AS instant_bookings + , subq_14.booking_value AS booking_value + , subq_14.max_booking_value AS max_booking_value + , subq_14.min_booking_value AS min_booking_value + , subq_14.bookers AS bookers + , subq_14.average_booking_value AS average_booking_value + , subq_14.referred_bookings AS referred_bookings + , subq_14.median_booking_value AS median_booking_value + , subq_14.booking_value_p99 AS booking_value_p99 + , subq_14.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_14.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_14.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_17.metric_time__day + subq_16.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_16.ds__day AS metric_time__day - , subq_16.ds__week - , subq_16.ds__month - , subq_16.ds__quarter - , subq_16.ds__year - , subq_16.ds__extract_year - , subq_16.ds__extract_quarter - , subq_16.ds__extract_month - , subq_16.ds__extract_day - , subq_16.ds__extract_dow - , subq_16.ds__extract_doy - , subq_16.ds__martian_day + subq_15.ds__day AS metric_time__day + , subq_15.ds__week + , subq_15.ds__month + , subq_15.ds__quarter + , subq_15.ds__year + , subq_15.ds__extract_year + , subq_15.ds__extract_quarter + , subq_15.ds__extract_month + , subq_15.ds__extract_day + , subq_15.ds__extract_dow + , subq_15.ds__extract_doy + , subq_15.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -1033,110 +1033,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_16 - ) subq_17 - ) subq_18 + ) subq_15 + ) subq_16 + ) subq_17 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_14.ds__day - , subq_14.ds__week - , subq_14.ds__month - , subq_14.ds__quarter - , subq_14.ds__year - , subq_14.ds__extract_year - , subq_14.ds__extract_quarter - , subq_14.ds__extract_month - , subq_14.ds__extract_day - , subq_14.ds__extract_dow - , subq_14.ds__extract_doy - , subq_14.ds_partitioned__day - , subq_14.ds_partitioned__week - , subq_14.ds_partitioned__month - , subq_14.ds_partitioned__quarter - , subq_14.ds_partitioned__year - , subq_14.ds_partitioned__extract_year - , subq_14.ds_partitioned__extract_quarter - , subq_14.ds_partitioned__extract_month - , subq_14.ds_partitioned__extract_day - , subq_14.ds_partitioned__extract_dow - , subq_14.ds_partitioned__extract_doy - , subq_14.paid_at__day - , subq_14.paid_at__week - , subq_14.paid_at__month - , subq_14.paid_at__quarter - , subq_14.paid_at__year - , subq_14.paid_at__extract_year - , subq_14.paid_at__extract_quarter - , subq_14.paid_at__extract_month - , subq_14.paid_at__extract_day - , subq_14.paid_at__extract_dow - , subq_14.paid_at__extract_doy - , subq_14.booking__ds__day - , subq_14.booking__ds__week - , subq_14.booking__ds__month - , subq_14.booking__ds__quarter - , subq_14.booking__ds__year - , subq_14.booking__ds__extract_year - , subq_14.booking__ds__extract_quarter - , subq_14.booking__ds__extract_month - , subq_14.booking__ds__extract_day - , subq_14.booking__ds__extract_dow - , subq_14.booking__ds__extract_doy - , subq_14.booking__ds_partitioned__day - , subq_14.booking__ds_partitioned__week - , subq_14.booking__ds_partitioned__month - , subq_14.booking__ds_partitioned__quarter - , subq_14.booking__ds_partitioned__year - , subq_14.booking__ds_partitioned__extract_year - , subq_14.booking__ds_partitioned__extract_quarter - , subq_14.booking__ds_partitioned__extract_month - , subq_14.booking__ds_partitioned__extract_day - , subq_14.booking__ds_partitioned__extract_dow - , subq_14.booking__ds_partitioned__extract_doy - , subq_14.booking__paid_at__day - , subq_14.booking__paid_at__week - , subq_14.booking__paid_at__month - , subq_14.booking__paid_at__quarter - , subq_14.booking__paid_at__year - , subq_14.booking__paid_at__extract_year - , subq_14.booking__paid_at__extract_quarter - , subq_14.booking__paid_at__extract_month - , subq_14.booking__paid_at__extract_day - , subq_14.booking__paid_at__extract_dow - , subq_14.booking__paid_at__extract_doy - , subq_14.ds__day AS metric_time__day - , subq_14.ds__week AS metric_time__week - , subq_14.ds__month AS metric_time__month - , subq_14.ds__quarter AS metric_time__quarter - , subq_14.ds__year AS metric_time__year - , subq_14.ds__extract_year AS metric_time__extract_year - , subq_14.ds__extract_quarter AS metric_time__extract_quarter - , subq_14.ds__extract_month AS metric_time__extract_month - , subq_14.ds__extract_day AS metric_time__extract_day - , subq_14.ds__extract_dow AS metric_time__extract_dow - , subq_14.ds__extract_doy AS metric_time__extract_doy - , subq_14.listing - , subq_14.guest - , subq_14.host - , subq_14.booking__listing - , subq_14.booking__guest - , subq_14.booking__host - , subq_14.is_instant - , subq_14.booking__is_instant - , subq_14.bookings - , subq_14.instant_bookings - , subq_14.booking_value - , subq_14.max_booking_value - , subq_14.min_booking_value - , subq_14.bookers - , subq_14.average_booking_value - , subq_14.referred_bookings - , subq_14.median_booking_value - , subq_14.booking_value_p99 - , subq_14.discrete_booking_value_p99 - , subq_14.approximate_continuous_booking_value_p99 - , subq_14.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1229,86 +1229,86 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 - ) subq_15 + ) subq_0 + ) subq_14 ON - subq_18.metric_time__day - INTERVAL 14 day = subq_15.metric_time__day - ) subq_19 + subq_17.metric_time__day - INTERVAL 14 day = subq_14.metric_time__day + ) subq_18 LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_21.listing - , subq_21.country_latest + subq_19.listing + , subq_19.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.created_at__day - , subq_20.created_at__week - , subq_20.created_at__month - , subq_20.created_at__quarter - , subq_20.created_at__year - , subq_20.created_at__extract_year - , subq_20.created_at__extract_quarter - , subq_20.created_at__extract_month - , subq_20.created_at__extract_day - , subq_20.created_at__extract_dow - , subq_20.created_at__extract_doy - , subq_20.listing__ds__day - , subq_20.listing__ds__week - , subq_20.listing__ds__month - , subq_20.listing__ds__quarter - , subq_20.listing__ds__year - , subq_20.listing__ds__extract_year - , subq_20.listing__ds__extract_quarter - , subq_20.listing__ds__extract_month - , subq_20.listing__ds__extract_day - , subq_20.listing__ds__extract_dow - , subq_20.listing__ds__extract_doy - , subq_20.listing__created_at__day - , subq_20.listing__created_at__week - , subq_20.listing__created_at__month - , subq_20.listing__created_at__quarter - , subq_20.listing__created_at__year - , subq_20.listing__created_at__extract_year - , subq_20.listing__created_at__extract_quarter - , subq_20.listing__created_at__extract_month - , subq_20.listing__created_at__extract_day - , subq_20.listing__created_at__extract_dow - , subq_20.listing__created_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.user - , subq_20.listing__user - , subq_20.country_latest - , subq_20.is_lux_latest - , subq_20.capacity_latest - , subq_20.listing__country_latest - , subq_20.listing__is_lux_latest - , subq_20.listing__capacity_latest - , subq_20.listings - , subq_20.largest_listing - , subq_20.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1369,30 +1369,30 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_20 - ) subq_21 - ) subq_22 + ) subq_2 + ) subq_19 + ) subq_20 ON - subq_19.listing = subq_22.listing - ) subq_23 + subq_18.listing = subq_20.listing + ) subq_21 WHERE booking__is_instant - ) subq_24 - ) subq_25 + ) subq_22 + ) subq_23 GROUP BY - subq_25.metric_time__day - , subq_25.listing__country_latest - ) subq_26 + subq_23.metric_time__day + , subq_23.listing__country_latest + ) subq_24 ON - subq_29.metric_time__day = subq_26.metric_time__day - ) subq_30 - ) subq_31 + subq_27.metric_time__day = subq_24.metric_time__day + ) subq_28 + ) subq_29 ON ( - subq_13.listing__country_latest = subq_31.listing__country_latest + subq_13.listing__country_latest = subq_29.listing__country_latest ) AND ( - subq_13.metric_time__day = subq_31.metric_time__day + subq_13.metric_time__day = subq_29.metric_time__day ) GROUP BY - COALESCE(subq_13.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_13.listing__country_latest, subq_31.listing__country_latest) -) subq_32 + COALESCE(subq_13.metric_time__day, subq_29.metric_time__day) + , COALESCE(subq_13.listing__country_latest, subq_29.listing__country_latest) +) subq_30 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0_optimized.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0_optimized.sql index 4c3453d4bd..f9fd274f8c 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_fill_nulls_time_spine_metric_predicate_pushdown__plan0_optimized.sql @@ -41,10 +41,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_46.metric_time__day, subq_62.metric_time__day) AS metric_time__day - , COALESCE(subq_46.listing__country_latest, subq_62.listing__country_latest) AS listing__country_latest - , COALESCE(MAX(subq_46.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , COALESCE(MAX(subq_62.bookings_2_weeks_ago), 0) AS bookings_2_weeks_ago + COALESCE(subq_44.metric_time__day, subq_60.metric_time__day) AS metric_time__day + , COALESCE(subq_44.listing__country_latest, subq_60.listing__country_latest) AS listing__country_latest + , COALESCE(MAX(subq_44.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , COALESCE(MAX(subq_60.bookings_2_weeks_ago), 0) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -55,8 +55,8 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_41.listing__country_latest AS listing__country_latest - , subq_41.bookings AS bookings + , subq_39.listing__country_latest AS listing__country_latest + , subq_39.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Constrain Output with WHERE @@ -78,16 +78,16 @@ FROM ( sma_28014_cte sma_28014_cte ON sma_28009_cte.listing = sma_28014_cte.listing - ) subq_38 + ) subq_36 WHERE booking__is_instant GROUP BY metric_time__day , listing__country_latest - ) subq_41 + ) subq_39 ON - rss_28018_cte.ds__day = subq_41.metric_time__day - ) subq_45 - ) subq_46 + rss_28018_cte.ds__day = subq_39.metric_time__day + ) subq_43 + ) subq_44 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -98,8 +98,8 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_57.listing__country_latest AS listing__country_latest - , subq_57.bookings AS bookings + , subq_55.listing__country_latest AS listing__country_latest + , subq_55.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Constrain Output with WHERE @@ -113,9 +113,9 @@ FROM ( -- Join Standard Outputs SELECT sma_28014_cte.country_latest AS listing__country_latest - , subq_51.metric_time__day AS metric_time__day - , subq_51.booking__is_instant AS booking__is_instant - , subq_51.bookings AS bookings + , subq_49.metric_time__day AS metric_time__day + , subq_49.booking__is_instant AS booking__is_instant + , subq_49.bookings AS bookings FROM ( -- Join to Time Spine Dataset SELECT @@ -128,28 +128,28 @@ FROM ( sma_28009_cte sma_28009_cte ON rss_28018_cte.ds__day - INTERVAL 14 day = sma_28009_cte.metric_time__day - ) subq_51 + ) subq_49 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_51.listing = sma_28014_cte.listing - ) subq_54 + subq_49.listing = sma_28014_cte.listing + ) subq_52 WHERE booking__is_instant GROUP BY metric_time__day , listing__country_latest - ) subq_57 + ) subq_55 ON - rss_28018_cte.ds__day = subq_57.metric_time__day - ) subq_61 - ) subq_62 + rss_28018_cte.ds__day = subq_55.metric_time__day + ) subq_59 + ) subq_60 ON ( - subq_46.listing__country_latest = subq_62.listing__country_latest + subq_44.listing__country_latest = subq_60.listing__country_latest ) AND ( - subq_46.metric_time__day = subq_62.metric_time__day + subq_44.metric_time__day = subq_60.metric_time__day ) GROUP BY - COALESCE(subq_46.metric_time__day, subq_62.metric_time__day) - , COALESCE(subq_46.listing__country_latest, subq_62.listing__country_latest) -) subq_63 + COALESCE(subq_44.metric_time__day, subq_60.metric_time__day) + , COALESCE(subq_44.listing__country_latest, subq_60.listing__country_latest) +) subq_61 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0.sql index 09e256fe5c..bdfb5c8f39 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0.sql @@ -8,16 +8,16 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_24.metric_time__day - , subq_24.listing__country_latest + subq_22.metric_time__day + , subq_22.listing__country_latest , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_23.metric_time__day) AS metric_time__day - , COALESCE(subq_9.listing__country_latest, subq_23.listing__country_latest) AS listing__country_latest + COALESCE(subq_9.metric_time__day, subq_21.metric_time__day) AS metric_time__day + , COALESCE(subq_9.listing__country_latest, subq_21.listing__country_latest) AS listing__country_latest , MAX(subq_9.bookings) AS bookings - , MAX(subq_23.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_21.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -587,345 +587,345 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , subq_22.listing__country_latest - , subq_22.bookings AS bookings_2_weeks_ago + subq_20.metric_time__day + , subq_20.listing__country_latest + , subq_20.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_21.metric_time__day - , subq_21.listing__country_latest - , SUM(subq_21.bookings) AS bookings + subq_19.metric_time__day + , subq_19.listing__country_latest + , SUM(subq_19.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] SELECT - subq_20.metric_time__day - , subq_20.listing__country_latest - , subq_20.bookings + subq_18.metric_time__day + , subq_18.listing__country_latest + , subq_18.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_19.ds__day - , subq_19.ds__week - , subq_19.ds__month - , subq_19.ds__quarter - , subq_19.ds__year - , subq_19.ds__extract_year - , subq_19.ds__extract_quarter - , subq_19.ds__extract_month - , subq_19.ds__extract_day - , subq_19.ds__extract_dow - , subq_19.ds__extract_doy - , subq_19.ds_partitioned__day - , subq_19.ds_partitioned__week - , subq_19.ds_partitioned__month - , subq_19.ds_partitioned__quarter - , subq_19.ds_partitioned__year - , subq_19.ds_partitioned__extract_year - , subq_19.ds_partitioned__extract_quarter - , subq_19.ds_partitioned__extract_month - , subq_19.ds_partitioned__extract_day - , subq_19.ds_partitioned__extract_dow - , subq_19.ds_partitioned__extract_doy - , subq_19.paid_at__day - , subq_19.paid_at__week - , subq_19.paid_at__month - , subq_19.paid_at__quarter - , subq_19.paid_at__year - , subq_19.paid_at__extract_year - , subq_19.paid_at__extract_quarter - , subq_19.paid_at__extract_month - , subq_19.paid_at__extract_day - , subq_19.paid_at__extract_dow - , subq_19.paid_at__extract_doy - , subq_19.booking__ds__day - , subq_19.booking__ds__week - , subq_19.booking__ds__month - , subq_19.booking__ds__quarter - , subq_19.booking__ds__year - , subq_19.booking__ds__extract_year - , subq_19.booking__ds__extract_quarter - , subq_19.booking__ds__extract_month - , subq_19.booking__ds__extract_day - , subq_19.booking__ds__extract_dow - , subq_19.booking__ds__extract_doy - , subq_19.booking__ds_partitioned__day - , subq_19.booking__ds_partitioned__week - , subq_19.booking__ds_partitioned__month - , subq_19.booking__ds_partitioned__quarter - , subq_19.booking__ds_partitioned__year - , subq_19.booking__ds_partitioned__extract_year - , subq_19.booking__ds_partitioned__extract_quarter - , subq_19.booking__ds_partitioned__extract_month - , subq_19.booking__ds_partitioned__extract_day - , subq_19.booking__ds_partitioned__extract_dow - , subq_19.booking__ds_partitioned__extract_doy - , subq_19.booking__paid_at__day - , subq_19.booking__paid_at__week - , subq_19.booking__paid_at__month - , subq_19.booking__paid_at__quarter - , subq_19.booking__paid_at__year - , subq_19.booking__paid_at__extract_year - , subq_19.booking__paid_at__extract_quarter - , subq_19.booking__paid_at__extract_month - , subq_19.booking__paid_at__extract_day - , subq_19.booking__paid_at__extract_dow - , subq_19.booking__paid_at__extract_doy - , subq_19.metric_time__week - , subq_19.metric_time__month - , subq_19.metric_time__quarter - , subq_19.metric_time__year - , subq_19.metric_time__extract_year - , subq_19.metric_time__extract_quarter - , subq_19.metric_time__extract_month - , subq_19.metric_time__extract_day - , subq_19.metric_time__extract_dow - , subq_19.metric_time__extract_doy - , subq_19.metric_time__day - , subq_19.listing - , subq_19.guest - , subq_19.host - , subq_19.booking__listing - , subq_19.booking__guest - , subq_19.booking__host - , subq_19.is_instant - , subq_19.booking__is_instant - , subq_19.listing__country_latest - , subq_19.bookings - , subq_19.instant_bookings - , subq_19.booking_value - , subq_19.max_booking_value - , subq_19.min_booking_value - , subq_19.bookers - , subq_19.average_booking_value - , subq_19.referred_bookings - , subq_19.median_booking_value - , subq_19.booking_value_p99 - , subq_19.discrete_booking_value_p99 - , subq_19.approximate_continuous_booking_value_p99 - , subq_19.approximate_discrete_booking_value_p99 + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.paid_at__day + , subq_17.paid_at__week + , subq_17.paid_at__month + , subq_17.paid_at__quarter + , subq_17.paid_at__year + , subq_17.paid_at__extract_year + , subq_17.paid_at__extract_quarter + , subq_17.paid_at__extract_month + , subq_17.paid_at__extract_day + , subq_17.paid_at__extract_dow + , subq_17.paid_at__extract_doy + , subq_17.booking__ds__day + , subq_17.booking__ds__week + , subq_17.booking__ds__month + , subq_17.booking__ds__quarter + , subq_17.booking__ds__year + , subq_17.booking__ds__extract_year + , subq_17.booking__ds__extract_quarter + , subq_17.booking__ds__extract_month + , subq_17.booking__ds__extract_day + , subq_17.booking__ds__extract_dow + , subq_17.booking__ds__extract_doy + , subq_17.booking__ds_partitioned__day + , subq_17.booking__ds_partitioned__week + , subq_17.booking__ds_partitioned__month + , subq_17.booking__ds_partitioned__quarter + , subq_17.booking__ds_partitioned__year + , subq_17.booking__ds_partitioned__extract_year + , subq_17.booking__ds_partitioned__extract_quarter + , subq_17.booking__ds_partitioned__extract_month + , subq_17.booking__ds_partitioned__extract_day + , subq_17.booking__ds_partitioned__extract_dow + , subq_17.booking__ds_partitioned__extract_doy + , subq_17.booking__paid_at__day + , subq_17.booking__paid_at__week + , subq_17.booking__paid_at__month + , subq_17.booking__paid_at__quarter + , subq_17.booking__paid_at__year + , subq_17.booking__paid_at__extract_year + , subq_17.booking__paid_at__extract_quarter + , subq_17.booking__paid_at__extract_month + , subq_17.booking__paid_at__extract_day + , subq_17.booking__paid_at__extract_dow + , subq_17.booking__paid_at__extract_doy + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.metric_time__day + , subq_17.listing + , subq_17.guest + , subq_17.host + , subq_17.booking__listing + , subq_17.booking__guest + , subq_17.booking__host + , subq_17.is_instant + , subq_17.booking__is_instant + , subq_17.listing__country_latest + , subq_17.bookings + , subq_17.instant_bookings + , subq_17.booking_value + , subq_17.max_booking_value + , subq_17.min_booking_value + , subq_17.bookers + , subq_17.average_booking_value + , subq_17.referred_bookings + , subq_17.median_booking_value + , subq_17.booking_value_p99 + , subq_17.discrete_booking_value_p99 + , subq_17.approximate_continuous_booking_value_p99 + , subq_17.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_18.country_latest AS listing__country_latest - , subq_15.ds__day AS ds__day - , subq_15.ds__week AS ds__week - , subq_15.ds__month AS ds__month - , subq_15.ds__quarter AS ds__quarter - , subq_15.ds__year AS ds__year - , subq_15.ds__extract_year AS ds__extract_year - , subq_15.ds__extract_quarter AS ds__extract_quarter - , subq_15.ds__extract_month AS ds__extract_month - , subq_15.ds__extract_day AS ds__extract_day - , subq_15.ds__extract_dow AS ds__extract_dow - , subq_15.ds__extract_doy AS ds__extract_doy - , subq_15.ds_partitioned__day AS ds_partitioned__day - , subq_15.ds_partitioned__week AS ds_partitioned__week - , subq_15.ds_partitioned__month AS ds_partitioned__month - , subq_15.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_15.ds_partitioned__year AS ds_partitioned__year - , subq_15.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_15.paid_at__day AS paid_at__day - , subq_15.paid_at__week AS paid_at__week - , subq_15.paid_at__month AS paid_at__month - , subq_15.paid_at__quarter AS paid_at__quarter - , subq_15.paid_at__year AS paid_at__year - , subq_15.paid_at__extract_year AS paid_at__extract_year - , subq_15.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_15.paid_at__extract_month AS paid_at__extract_month - , subq_15.paid_at__extract_day AS paid_at__extract_day - , subq_15.paid_at__extract_dow AS paid_at__extract_dow - , subq_15.paid_at__extract_doy AS paid_at__extract_doy - , subq_15.booking__ds__day AS booking__ds__day - , subq_15.booking__ds__week AS booking__ds__week - , subq_15.booking__ds__month AS booking__ds__month - , subq_15.booking__ds__quarter AS booking__ds__quarter - , subq_15.booking__ds__year AS booking__ds__year - , subq_15.booking__ds__extract_year AS booking__ds__extract_year - , subq_15.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_15.booking__ds__extract_month AS booking__ds__extract_month - , subq_15.booking__ds__extract_day AS booking__ds__extract_day - , subq_15.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_15.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day AS booking__paid_at__day - , subq_15.booking__paid_at__week AS booking__paid_at__week - , subq_15.booking__paid_at__month AS booking__paid_at__month - , subq_15.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_15.booking__paid_at__year AS booking__paid_at__year - , subq_15.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_15.metric_time__week AS metric_time__week - , subq_15.metric_time__month AS metric_time__month - , subq_15.metric_time__quarter AS metric_time__quarter - , subq_15.metric_time__year AS metric_time__year - , subq_15.metric_time__extract_year AS metric_time__extract_year - , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_15.metric_time__extract_month AS metric_time__extract_month - , subq_15.metric_time__extract_day AS metric_time__extract_day - , subq_15.metric_time__extract_dow AS metric_time__extract_dow - , subq_15.metric_time__extract_doy AS metric_time__extract_doy - , subq_15.metric_time__day AS metric_time__day - , subq_15.listing AS listing - , subq_15.guest AS guest - , subq_15.host AS host - , subq_15.booking__listing AS booking__listing - , subq_15.booking__guest AS booking__guest - , subq_15.booking__host AS booking__host - , subq_15.is_instant AS is_instant - , subq_15.booking__is_instant AS booking__is_instant - , subq_15.bookings AS bookings - , subq_15.instant_bookings AS instant_bookings - , subq_15.booking_value AS booking_value - , subq_15.max_booking_value AS max_booking_value - , subq_15.min_booking_value AS min_booking_value - , subq_15.bookers AS bookers - , subq_15.average_booking_value AS average_booking_value - , subq_15.referred_bookings AS referred_bookings - , subq_15.median_booking_value AS median_booking_value - , subq_15.booking_value_p99 AS booking_value_p99 - , subq_15.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_16.country_latest AS listing__country_latest + , subq_14.ds__day AS ds__day + , subq_14.ds__week AS ds__week + , subq_14.ds__month AS ds__month + , subq_14.ds__quarter AS ds__quarter + , subq_14.ds__year AS ds__year + , subq_14.ds__extract_year AS ds__extract_year + , subq_14.ds__extract_quarter AS ds__extract_quarter + , subq_14.ds__extract_month AS ds__extract_month + , subq_14.ds__extract_day AS ds__extract_day + , subq_14.ds__extract_dow AS ds__extract_dow + , subq_14.ds__extract_doy AS ds__extract_doy + , subq_14.ds_partitioned__day AS ds_partitioned__day + , subq_14.ds_partitioned__week AS ds_partitioned__week + , subq_14.ds_partitioned__month AS ds_partitioned__month + , subq_14.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_14.ds_partitioned__year AS ds_partitioned__year + , subq_14.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_14.paid_at__day AS paid_at__day + , subq_14.paid_at__week AS paid_at__week + , subq_14.paid_at__month AS paid_at__month + , subq_14.paid_at__quarter AS paid_at__quarter + , subq_14.paid_at__year AS paid_at__year + , subq_14.paid_at__extract_year AS paid_at__extract_year + , subq_14.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_14.paid_at__extract_month AS paid_at__extract_month + , subq_14.paid_at__extract_day AS paid_at__extract_day + , subq_14.paid_at__extract_dow AS paid_at__extract_dow + , subq_14.paid_at__extract_doy AS paid_at__extract_doy + , subq_14.booking__ds__day AS booking__ds__day + , subq_14.booking__ds__week AS booking__ds__week + , subq_14.booking__ds__month AS booking__ds__month + , subq_14.booking__ds__quarter AS booking__ds__quarter + , subq_14.booking__ds__year AS booking__ds__year + , subq_14.booking__ds__extract_year AS booking__ds__extract_year + , subq_14.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_14.booking__ds__extract_month AS booking__ds__extract_month + , subq_14.booking__ds__extract_day AS booking__ds__extract_day + , subq_14.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_14.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_14.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_14.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_14.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_14.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_14.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_14.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_14.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_14.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_14.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_14.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_14.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_14.booking__paid_at__day AS booking__paid_at__day + , subq_14.booking__paid_at__week AS booking__paid_at__week + , subq_14.booking__paid_at__month AS booking__paid_at__month + , subq_14.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_14.booking__paid_at__year AS booking__paid_at__year + , subq_14.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_14.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_14.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_14.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_14.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_14.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_14.metric_time__week AS metric_time__week + , subq_14.metric_time__month AS metric_time__month + , subq_14.metric_time__quarter AS metric_time__quarter + , subq_14.metric_time__year AS metric_time__year + , subq_14.metric_time__extract_year AS metric_time__extract_year + , subq_14.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_14.metric_time__extract_month AS metric_time__extract_month + , subq_14.metric_time__extract_day AS metric_time__extract_day + , subq_14.metric_time__extract_dow AS metric_time__extract_dow + , subq_14.metric_time__extract_doy AS metric_time__extract_doy + , subq_14.metric_time__day AS metric_time__day + , subq_14.listing AS listing + , subq_14.guest AS guest + , subq_14.host AS host + , subq_14.booking__listing AS booking__listing + , subq_14.booking__guest AS booking__guest + , subq_14.booking__host AS booking__host + , subq_14.is_instant AS is_instant + , subq_14.booking__is_instant AS booking__is_instant + , subq_14.bookings AS bookings + , subq_14.instant_bookings AS instant_bookings + , subq_14.booking_value AS booking_value + , subq_14.max_booking_value AS max_booking_value + , subq_14.min_booking_value AS min_booking_value + , subq_14.bookers AS bookers + , subq_14.average_booking_value AS average_booking_value + , subq_14.referred_bookings AS referred_bookings + , subq_14.median_booking_value AS median_booking_value + , subq_14.booking_value_p99 AS booking_value_p99 + , subq_14.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_14.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_14.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_14.metric_time__day AS metric_time__day - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_13.metric_time__day AS metric_time__day + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_13.metric_time__day + subq_12.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_12.ds__day AS metric_time__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds__martian_day + subq_11.ds__day AS metric_time__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -942,110 +942,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1138,86 +1138,86 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 ON - subq_14.metric_time__day - INTERVAL 14 day = subq_11.metric_time__day - ) subq_15 + subq_13.metric_time__day - INTERVAL 14 day = subq_10.metric_time__day + ) subq_14 LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_17.listing - , subq_17.country_latest + subq_15.listing + , subq_15.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_16.ds__day - , subq_16.ds__week - , subq_16.ds__month - , subq_16.ds__quarter - , subq_16.ds__year - , subq_16.ds__extract_year - , subq_16.ds__extract_quarter - , subq_16.ds__extract_month - , subq_16.ds__extract_day - , subq_16.ds__extract_dow - , subq_16.ds__extract_doy - , subq_16.created_at__day - , subq_16.created_at__week - , subq_16.created_at__month - , subq_16.created_at__quarter - , subq_16.created_at__year - , subq_16.created_at__extract_year - , subq_16.created_at__extract_quarter - , subq_16.created_at__extract_month - , subq_16.created_at__extract_day - , subq_16.created_at__extract_dow - , subq_16.created_at__extract_doy - , subq_16.listing__ds__day - , subq_16.listing__ds__week - , subq_16.listing__ds__month - , subq_16.listing__ds__quarter - , subq_16.listing__ds__year - , subq_16.listing__ds__extract_year - , subq_16.listing__ds__extract_quarter - , subq_16.listing__ds__extract_month - , subq_16.listing__ds__extract_day - , subq_16.listing__ds__extract_dow - , subq_16.listing__ds__extract_doy - , subq_16.listing__created_at__day - , subq_16.listing__created_at__week - , subq_16.listing__created_at__month - , subq_16.listing__created_at__quarter - , subq_16.listing__created_at__year - , subq_16.listing__created_at__extract_year - , subq_16.listing__created_at__extract_quarter - , subq_16.listing__created_at__extract_month - , subq_16.listing__created_at__extract_day - , subq_16.listing__created_at__extract_dow - , subq_16.listing__created_at__extract_doy - , subq_16.ds__day AS metric_time__day - , subq_16.ds__week AS metric_time__week - , subq_16.ds__month AS metric_time__month - , subq_16.ds__quarter AS metric_time__quarter - , subq_16.ds__year AS metric_time__year - , subq_16.ds__extract_year AS metric_time__extract_year - , subq_16.ds__extract_quarter AS metric_time__extract_quarter - , subq_16.ds__extract_month AS metric_time__extract_month - , subq_16.ds__extract_day AS metric_time__extract_day - , subq_16.ds__extract_dow AS metric_time__extract_dow - , subq_16.ds__extract_doy AS metric_time__extract_doy - , subq_16.listing - , subq_16.user - , subq_16.listing__user - , subq_16.country_latest - , subq_16.is_lux_latest - , subq_16.capacity_latest - , subq_16.listing__country_latest - , subq_16.listing__is_lux_latest - , subq_16.listing__capacity_latest - , subq_16.listings - , subq_16.largest_listing - , subq_16.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1278,27 +1278,27 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_16 - ) subq_17 - ) subq_18 + ) subq_2 + ) subq_15 + ) subq_16 ON - subq_15.listing = subq_18.listing - ) subq_19 + subq_14.listing = subq_16.listing + ) subq_17 WHERE booking__is_instant - ) subq_20 - ) subq_21 + ) subq_18 + ) subq_19 GROUP BY - subq_21.metric_time__day - , subq_21.listing__country_latest - ) subq_22 - ) subq_23 + subq_19.metric_time__day + , subq_19.listing__country_latest + ) subq_20 + ) subq_21 ON ( - subq_9.listing__country_latest = subq_23.listing__country_latest + subq_9.listing__country_latest = subq_21.listing__country_latest ) AND ( - subq_9.metric_time__day = subq_23.metric_time__day + subq_9.metric_time__day = subq_21.metric_time__day ) GROUP BY - COALESCE(subq_9.metric_time__day, subq_23.metric_time__day) - , COALESCE(subq_9.listing__country_latest, subq_23.listing__country_latest) -) subq_24 + COALESCE(subq_9.metric_time__day, subq_21.metric_time__day) + , COALESCE(subq_9.listing__country_latest, subq_21.listing__country_latest) +) subq_22 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0_optimized.sql index 8d0b761341..bc57b6fcd2 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_offset_metric_with_query_time_filters__plan0_optimized.sql @@ -34,10 +34,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_34.metric_time__day, subq_46.metric_time__day) AS metric_time__day - , COALESCE(subq_34.listing__country_latest, subq_46.listing__country_latest) AS listing__country_latest - , MAX(subq_34.bookings) AS bookings - , MAX(subq_46.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_32.metric_time__day, subq_44.metric_time__day) AS metric_time__day + , COALESCE(subq_32.listing__country_latest, subq_44.listing__country_latest) AS listing__country_latest + , MAX(subq_32.bookings) AS bookings + , MAX(subq_44.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] @@ -59,12 +59,12 @@ FROM ( sma_28014_cte sma_28014_cte ON sma_28009_cte.listing = sma_28014_cte.listing - ) subq_30 + ) subq_28 WHERE booking__is_instant GROUP BY metric_time__day , listing__country_latest - ) subq_34 + ) subq_32 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] @@ -78,9 +78,9 @@ FROM ( -- Join Standard Outputs SELECT sma_28014_cte.country_latest AS listing__country_latest - , subq_39.metric_time__day AS metric_time__day - , subq_39.booking__is_instant AS booking__is_instant - , subq_39.bookings AS bookings + , subq_37.metric_time__day AS metric_time__day + , subq_37.booking__is_instant AS booking__is_instant + , subq_37.bookings AS bookings FROM ( -- Join to Time Spine Dataset SELECT @@ -93,24 +93,24 @@ FROM ( sma_28009_cte sma_28009_cte ON time_spine_src_28006.ds - INTERVAL 14 day = sma_28009_cte.metric_time__day - ) subq_39 + ) subq_37 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_39.listing = sma_28014_cte.listing - ) subq_42 + subq_37.listing = sma_28014_cte.listing + ) subq_40 WHERE booking__is_instant GROUP BY metric_time__day , listing__country_latest - ) subq_46 + ) subq_44 ON ( - subq_34.listing__country_latest = subq_46.listing__country_latest + subq_32.listing__country_latest = subq_44.listing__country_latest ) AND ( - subq_34.metric_time__day = subq_46.metric_time__day + subq_32.metric_time__day = subq_44.metric_time__day ) GROUP BY - COALESCE(subq_34.metric_time__day, subq_46.metric_time__day) - , COALESCE(subq_34.listing__country_latest, subq_46.listing__country_latest) -) subq_47 + COALESCE(subq_32.metric_time__day, subq_44.metric_time__day) + , COALESCE(subq_32.listing__country_latest, subq_44.listing__country_latest) +) subq_45 diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0.sql index 10b057d2c1..c96892bd99 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0.sql @@ -8,10 +8,10 @@ sql_engine: DuckDB --- -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.listing__capacity_latest, subq_19.listing__capacity_latest, subq_41.listing__capacity_latest) AS listing__capacity_latest + COALESCE(subq_9.listing__capacity_latest, subq_18.listing__capacity_latest, subq_22.listing__capacity_latest) AS listing__capacity_latest , MAX(subq_9.bookings) AS bookings - , MAX(subq_19.views) AS views - , MAX(subq_41.bookings_per_view) AS bookings_per_view + , MAX(subq_18.views) AS views + , MAX(subq_22.bookings_per_view) AS bookings_per_view FROM ( -- Compute Metrics via Expressions SELECT @@ -580,88 +580,88 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.listing__capacity_latest - , subq_18.views + subq_17.listing__capacity_latest + , subq_17.views FROM ( -- Aggregate Measures SELECT - subq_17.listing__capacity_latest - , SUM(subq_17.views) AS views + subq_16.listing__capacity_latest + , SUM(subq_16.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__capacity_latest'] SELECT - subq_16.listing__capacity_latest - , subq_16.views + subq_15.listing__capacity_latest + , subq_15.views FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.view__ds__day - , subq_15.view__ds__week - , subq_15.view__ds__month - , subq_15.view__ds__quarter - , subq_15.view__ds__year - , subq_15.view__ds__extract_year - , subq_15.view__ds__extract_quarter - , subq_15.view__ds__extract_month - , subq_15.view__ds__extract_day - , subq_15.view__ds__extract_dow - , subq_15.view__ds__extract_doy - , subq_15.view__ds_partitioned__day - , subq_15.view__ds_partitioned__week - , subq_15.view__ds_partitioned__month - , subq_15.view__ds_partitioned__quarter - , subq_15.view__ds_partitioned__year - , subq_15.view__ds_partitioned__extract_year - , subq_15.view__ds_partitioned__extract_quarter - , subq_15.view__ds_partitioned__extract_month - , subq_15.view__ds_partitioned__extract_day - , subq_15.view__ds_partitioned__extract_dow - , subq_15.view__ds_partitioned__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.view__listing - , subq_15.view__user - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.views + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.ds_partitioned__day + , subq_14.ds_partitioned__week + , subq_14.ds_partitioned__month + , subq_14.ds_partitioned__quarter + , subq_14.ds_partitioned__year + , subq_14.ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy + , subq_14.view__ds__day + , subq_14.view__ds__week + , subq_14.view__ds__month + , subq_14.view__ds__quarter + , subq_14.view__ds__year + , subq_14.view__ds__extract_year + , subq_14.view__ds__extract_quarter + , subq_14.view__ds__extract_month + , subq_14.view__ds__extract_day + , subq_14.view__ds__extract_dow + , subq_14.view__ds__extract_doy + , subq_14.view__ds_partitioned__day + , subq_14.view__ds_partitioned__week + , subq_14.view__ds_partitioned__month + , subq_14.view__ds_partitioned__quarter + , subq_14.view__ds_partitioned__year + , subq_14.view__ds_partitioned__extract_year + , subq_14.view__ds_partitioned__extract_quarter + , subq_14.view__ds_partitioned__extract_month + , subq_14.view__ds_partitioned__extract_day + , subq_14.view__ds_partitioned__extract_dow + , subq_14.view__ds_partitioned__extract_doy + , subq_14.metric_time__day + , subq_14.metric_time__week + , subq_14.metric_time__month + , subq_14.metric_time__quarter + , subq_14.metric_time__year + , subq_14.metric_time__extract_year + , subq_14.metric_time__extract_quarter + , subq_14.metric_time__extract_month + , subq_14.metric_time__extract_day + , subq_14.metric_time__extract_dow + , subq_14.metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.view__listing + , subq_14.view__user + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.views FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_14.capacity_latest AS listing__capacity_latest + subq_13.is_lux_latest AS listing__is_lux_latest + , subq_13.capacity_latest AS listing__capacity_latest , subq_11.ds__day AS ds__day , subq_11.ds__week AS ds__week , subq_11.ds__month AS ds__month @@ -843,79 +843,79 @@ FULL OUTER JOIN ( LEFT OUTER JOIN ( -- Pass Only Elements: ['capacity_latest', 'is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest - , subq_13.capacity_latest + subq_12.listing + , subq_12.is_lux_latest + , subq_12.capacity_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -976,354 +976,354 @@ FULL OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_12 + ) subq_13 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_11.listing = subq_13.listing + ) subq_14 WHERE (listing__is_lux_latest) AND (metric_time__day >= '2020-01-02') - ) subq_16 - ) subq_17 + ) subq_15 + ) subq_16 GROUP BY - subq_17.listing__capacity_latest - ) subq_18 -) subq_19 + subq_16.listing__capacity_latest + ) subq_17 +) subq_18 ON - subq_9.listing__capacity_latest = subq_19.listing__capacity_latest + subq_9.listing__capacity_latest = subq_18.listing__capacity_latest FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_40.listing__capacity_latest - , CAST(subq_40.bookings AS DOUBLE) / CAST(NULLIF(subq_40.views, 0) AS DOUBLE) AS bookings_per_view + subq_21.listing__capacity_latest + , CAST(subq_21.bookings AS DOUBLE) / CAST(NULLIF(subq_21.views, 0) AS DOUBLE) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_29.listing__capacity_latest, subq_39.listing__capacity_latest) AS listing__capacity_latest - , MAX(subq_29.bookings) AS bookings - , MAX(subq_39.views) AS views + COALESCE(subq_19.listing__capacity_latest, subq_20.listing__capacity_latest) AS listing__capacity_latest + , MAX(subq_19.bookings) AS bookings + , MAX(subq_20.views) AS views FROM ( -- Compute Metrics via Expressions SELECT - subq_28.listing__capacity_latest - , subq_28.bookings + subq_8.listing__capacity_latest + , subq_8.bookings FROM ( -- Aggregate Measures SELECT - subq_27.listing__capacity_latest - , SUM(subq_27.bookings) AS bookings + subq_7.listing__capacity_latest + , SUM(subq_7.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__capacity_latest'] SELECT - subq_26.listing__capacity_latest - , subq_26.bookings + subq_6.listing__capacity_latest + , subq_6.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_25.ds__day - , subq_25.ds__week - , subq_25.ds__month - , subq_25.ds__quarter - , subq_25.ds__year - , subq_25.ds__extract_year - , subq_25.ds__extract_quarter - , subq_25.ds__extract_month - , subq_25.ds__extract_day - , subq_25.ds__extract_dow - , subq_25.ds__extract_doy - , subq_25.ds_partitioned__day - , subq_25.ds_partitioned__week - , subq_25.ds_partitioned__month - , subq_25.ds_partitioned__quarter - , subq_25.ds_partitioned__year - , subq_25.ds_partitioned__extract_year - , subq_25.ds_partitioned__extract_quarter - , subq_25.ds_partitioned__extract_month - , subq_25.ds_partitioned__extract_day - , subq_25.ds_partitioned__extract_dow - , subq_25.ds_partitioned__extract_doy - , subq_25.paid_at__day - , subq_25.paid_at__week - , subq_25.paid_at__month - , subq_25.paid_at__quarter - , subq_25.paid_at__year - , subq_25.paid_at__extract_year - , subq_25.paid_at__extract_quarter - , subq_25.paid_at__extract_month - , subq_25.paid_at__extract_day - , subq_25.paid_at__extract_dow - , subq_25.paid_at__extract_doy - , subq_25.booking__ds__day - , subq_25.booking__ds__week - , subq_25.booking__ds__month - , subq_25.booking__ds__quarter - , subq_25.booking__ds__year - , subq_25.booking__ds__extract_year - , subq_25.booking__ds__extract_quarter - , subq_25.booking__ds__extract_month - , subq_25.booking__ds__extract_day - , subq_25.booking__ds__extract_dow - , subq_25.booking__ds__extract_doy - , subq_25.booking__ds_partitioned__day - , subq_25.booking__ds_partitioned__week - , subq_25.booking__ds_partitioned__month - , subq_25.booking__ds_partitioned__quarter - , subq_25.booking__ds_partitioned__year - , subq_25.booking__ds_partitioned__extract_year - , subq_25.booking__ds_partitioned__extract_quarter - , subq_25.booking__ds_partitioned__extract_month - , subq_25.booking__ds_partitioned__extract_day - , subq_25.booking__ds_partitioned__extract_dow - , subq_25.booking__ds_partitioned__extract_doy - , subq_25.booking__paid_at__day - , subq_25.booking__paid_at__week - , subq_25.booking__paid_at__month - , subq_25.booking__paid_at__quarter - , subq_25.booking__paid_at__year - , subq_25.booking__paid_at__extract_year - , subq_25.booking__paid_at__extract_quarter - , subq_25.booking__paid_at__extract_month - , subq_25.booking__paid_at__extract_day - , subq_25.booking__paid_at__extract_dow - , subq_25.booking__paid_at__extract_doy - , subq_25.metric_time__day - , subq_25.metric_time__week - , subq_25.metric_time__month - , subq_25.metric_time__quarter - , subq_25.metric_time__year - , subq_25.metric_time__extract_year - , subq_25.metric_time__extract_quarter - , subq_25.metric_time__extract_month - , subq_25.metric_time__extract_day - , subq_25.metric_time__extract_dow - , subq_25.metric_time__extract_doy - , subq_25.listing - , subq_25.guest - , subq_25.host - , subq_25.booking__listing - , subq_25.booking__guest - , subq_25.booking__host - , subq_25.is_instant - , subq_25.booking__is_instant - , subq_25.listing__is_lux_latest - , subq_25.listing__capacity_latest - , subq_25.bookings - , subq_25.instant_bookings - , subq_25.booking_value - , subq_25.max_booking_value - , subq_25.min_booking_value - , subq_25.bookers - , subq_25.average_booking_value - , subq_25.referred_bookings - , subq_25.median_booking_value - , subq_25.booking_value_p99 - , subq_25.discrete_booking_value_p99 - , subq_25.approximate_continuous_booking_value_p99 - , subq_25.approximate_discrete_booking_value_p99 + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.paid_at__day + , subq_5.paid_at__week + , subq_5.paid_at__month + , subq_5.paid_at__quarter + , subq_5.paid_at__year + , subq_5.paid_at__extract_year + , subq_5.paid_at__extract_quarter + , subq_5.paid_at__extract_month + , subq_5.paid_at__extract_day + , subq_5.paid_at__extract_dow + , subq_5.paid_at__extract_doy + , subq_5.booking__ds__day + , subq_5.booking__ds__week + , subq_5.booking__ds__month + , subq_5.booking__ds__quarter + , subq_5.booking__ds__year + , subq_5.booking__ds__extract_year + , subq_5.booking__ds__extract_quarter + , subq_5.booking__ds__extract_month + , subq_5.booking__ds__extract_day + , subq_5.booking__ds__extract_dow + , subq_5.booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day + , subq_5.booking__paid_at__week + , subq_5.booking__paid_at__month + , subq_5.booking__paid_at__quarter + , subq_5.booking__paid_at__year + , subq_5.booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.listing + , subq_5.guest + , subq_5.host + , subq_5.booking__listing + , subq_5.booking__guest + , subq_5.booking__host + , subq_5.is_instant + , subq_5.booking__is_instant + , subq_5.listing__is_lux_latest + , subq_5.listing__capacity_latest + , subq_5.bookings + , subq_5.instant_bookings + , subq_5.booking_value + , subq_5.max_booking_value + , subq_5.min_booking_value + , subq_5.bookers + , subq_5.average_booking_value + , subq_5.referred_bookings + , subq_5.median_booking_value + , subq_5.booking_value_p99 + , subq_5.discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_24.is_lux_latest AS listing__is_lux_latest - , subq_24.capacity_latest AS listing__capacity_latest - , subq_21.ds__day AS ds__day - , subq_21.ds__week AS ds__week - , subq_21.ds__month AS ds__month - , subq_21.ds__quarter AS ds__quarter - , subq_21.ds__year AS ds__year - , subq_21.ds__extract_year AS ds__extract_year - , subq_21.ds__extract_quarter AS ds__extract_quarter - , subq_21.ds__extract_month AS ds__extract_month - , subq_21.ds__extract_day AS ds__extract_day - , subq_21.ds__extract_dow AS ds__extract_dow - , subq_21.ds__extract_doy AS ds__extract_doy - , subq_21.ds_partitioned__day AS ds_partitioned__day - , subq_21.ds_partitioned__week AS ds_partitioned__week - , subq_21.ds_partitioned__month AS ds_partitioned__month - , subq_21.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_21.ds_partitioned__year AS ds_partitioned__year - , subq_21.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_21.paid_at__day AS paid_at__day - , subq_21.paid_at__week AS paid_at__week - , subq_21.paid_at__month AS paid_at__month - , subq_21.paid_at__quarter AS paid_at__quarter - , subq_21.paid_at__year AS paid_at__year - , subq_21.paid_at__extract_year AS paid_at__extract_year - , subq_21.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_21.paid_at__extract_month AS paid_at__extract_month - , subq_21.paid_at__extract_day AS paid_at__extract_day - , subq_21.paid_at__extract_dow AS paid_at__extract_dow - , subq_21.paid_at__extract_doy AS paid_at__extract_doy - , subq_21.booking__ds__day AS booking__ds__day - , subq_21.booking__ds__week AS booking__ds__week - , subq_21.booking__ds__month AS booking__ds__month - , subq_21.booking__ds__quarter AS booking__ds__quarter - , subq_21.booking__ds__year AS booking__ds__year - , subq_21.booking__ds__extract_year AS booking__ds__extract_year - , subq_21.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_21.booking__ds__extract_month AS booking__ds__extract_month - , subq_21.booking__ds__extract_day AS booking__ds__extract_day - , subq_21.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_21.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day AS booking__paid_at__day - , subq_21.booking__paid_at__week AS booking__paid_at__week - , subq_21.booking__paid_at__month AS booking__paid_at__month - , subq_21.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_21.booking__paid_at__year AS booking__paid_at__year - , subq_21.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_21.metric_time__day AS metric_time__day - , subq_21.metric_time__week AS metric_time__week - , subq_21.metric_time__month AS metric_time__month - , subq_21.metric_time__quarter AS metric_time__quarter - , subq_21.metric_time__year AS metric_time__year - , subq_21.metric_time__extract_year AS metric_time__extract_year - , subq_21.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_21.metric_time__extract_month AS metric_time__extract_month - , subq_21.metric_time__extract_day AS metric_time__extract_day - , subq_21.metric_time__extract_dow AS metric_time__extract_dow - , subq_21.metric_time__extract_doy AS metric_time__extract_doy - , subq_21.listing AS listing - , subq_21.guest AS guest - , subq_21.host AS host - , subq_21.booking__listing AS booking__listing - , subq_21.booking__guest AS booking__guest - , subq_21.booking__host AS booking__host - , subq_21.is_instant AS is_instant - , subq_21.booking__is_instant AS booking__is_instant - , subq_21.bookings AS bookings - , subq_21.instant_bookings AS instant_bookings - , subq_21.booking_value AS booking_value - , subq_21.max_booking_value AS max_booking_value - , subq_21.min_booking_value AS min_booking_value - , subq_21.bookers AS bookers - , subq_21.average_booking_value AS average_booking_value - , subq_21.referred_bookings AS referred_bookings - , subq_21.median_booking_value AS median_booking_value - , subq_21.booking_value_p99 AS booking_value_p99 - , subq_21.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_4.is_lux_latest AS listing__is_lux_latest + , subq_4.capacity_latest AS listing__capacity_latest + , subq_1.ds__day AS ds__day + , subq_1.ds__week AS ds__week + , subq_1.ds__month AS ds__month + , subq_1.ds__quarter AS ds__quarter + , subq_1.ds__year AS ds__year + , subq_1.ds__extract_year AS ds__extract_year + , subq_1.ds__extract_quarter AS ds__extract_quarter + , subq_1.ds__extract_month AS ds__extract_month + , subq_1.ds__extract_day AS ds__extract_day + , subq_1.ds__extract_dow AS ds__extract_dow + , subq_1.ds__extract_doy AS ds__extract_doy + , subq_1.ds_partitioned__day AS ds_partitioned__day + , subq_1.ds_partitioned__week AS ds_partitioned__week + , subq_1.ds_partitioned__month AS ds_partitioned__month + , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_1.ds_partitioned__year AS ds_partitioned__year + , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_1.paid_at__day AS paid_at__day + , subq_1.paid_at__week AS paid_at__week + , subq_1.paid_at__month AS paid_at__month + , subq_1.paid_at__quarter AS paid_at__quarter + , subq_1.paid_at__year AS paid_at__year + , subq_1.paid_at__extract_year AS paid_at__extract_year + , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_1.paid_at__extract_month AS paid_at__extract_month + , subq_1.paid_at__extract_day AS paid_at__extract_day + , subq_1.paid_at__extract_dow AS paid_at__extract_dow + , subq_1.paid_at__extract_doy AS paid_at__extract_doy + , subq_1.booking__ds__day AS booking__ds__day + , subq_1.booking__ds__week AS booking__ds__week + , subq_1.booking__ds__month AS booking__ds__month + , subq_1.booking__ds__quarter AS booking__ds__quarter + , subq_1.booking__ds__year AS booking__ds__year + , subq_1.booking__ds__extract_year AS booking__ds__extract_year + , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_1.booking__ds__extract_month AS booking__ds__extract_month + , subq_1.booking__ds__extract_day AS booking__ds__extract_day + , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day AS booking__paid_at__day + , subq_1.booking__paid_at__week AS booking__paid_at__week + , subq_1.booking__paid_at__month AS booking__paid_at__month + , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_1.booking__paid_at__year AS booking__paid_at__year + , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_1.metric_time__day AS metric_time__day + , subq_1.metric_time__week AS metric_time__week + , subq_1.metric_time__month AS metric_time__month + , subq_1.metric_time__quarter AS metric_time__quarter + , subq_1.metric_time__year AS metric_time__year + , subq_1.metric_time__extract_year AS metric_time__extract_year + , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_1.metric_time__extract_month AS metric_time__extract_month + , subq_1.metric_time__extract_day AS metric_time__extract_day + , subq_1.metric_time__extract_dow AS metric_time__extract_dow + , subq_1.metric_time__extract_doy AS metric_time__extract_doy + , subq_1.listing AS listing + , subq_1.guest AS guest + , subq_1.host AS host + , subq_1.booking__listing AS booking__listing + , subq_1.booking__guest AS booking__guest + , subq_1.booking__host AS booking__host + , subq_1.is_instant AS is_instant + , subq_1.booking__is_instant AS booking__is_instant + , subq_1.bookings AS bookings + , subq_1.instant_bookings AS instant_bookings + , subq_1.booking_value AS booking_value + , subq_1.max_booking_value AS max_booking_value + , subq_1.min_booking_value AS min_booking_value + , subq_1.bookers AS bookers + , subq_1.average_booking_value AS average_booking_value + , subq_1.referred_bookings AS referred_bookings + , subq_1.median_booking_value AS median_booking_value + , subq_1.booking_value_p99 AS booking_value_p99 + , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1416,84 +1416,84 @@ FULL OUTER JOIN ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_1 LEFT OUTER JOIN ( -- Pass Only Elements: ['capacity_latest', 'is_lux_latest', 'listing'] SELECT - subq_23.listing - , subq_23.is_lux_latest - , subq_23.capacity_latest + subq_3.listing + , subq_3.is_lux_latest + , subq_3.capacity_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_22.ds__day - , subq_22.ds__week - , subq_22.ds__month - , subq_22.ds__quarter - , subq_22.ds__year - , subq_22.ds__extract_year - , subq_22.ds__extract_quarter - , subq_22.ds__extract_month - , subq_22.ds__extract_day - , subq_22.ds__extract_dow - , subq_22.ds__extract_doy - , subq_22.created_at__day - , subq_22.created_at__week - , subq_22.created_at__month - , subq_22.created_at__quarter - , subq_22.created_at__year - , subq_22.created_at__extract_year - , subq_22.created_at__extract_quarter - , subq_22.created_at__extract_month - , subq_22.created_at__extract_day - , subq_22.created_at__extract_dow - , subq_22.created_at__extract_doy - , subq_22.listing__ds__day - , subq_22.listing__ds__week - , subq_22.listing__ds__month - , subq_22.listing__ds__quarter - , subq_22.listing__ds__year - , subq_22.listing__ds__extract_year - , subq_22.listing__ds__extract_quarter - , subq_22.listing__ds__extract_month - , subq_22.listing__ds__extract_day - , subq_22.listing__ds__extract_dow - , subq_22.listing__ds__extract_doy - , subq_22.listing__created_at__day - , subq_22.listing__created_at__week - , subq_22.listing__created_at__month - , subq_22.listing__created_at__quarter - , subq_22.listing__created_at__year - , subq_22.listing__created_at__extract_year - , subq_22.listing__created_at__extract_quarter - , subq_22.listing__created_at__extract_month - , subq_22.listing__created_at__extract_day - , subq_22.listing__created_at__extract_dow - , subq_22.listing__created_at__extract_doy - , subq_22.ds__day AS metric_time__day - , subq_22.ds__week AS metric_time__week - , subq_22.ds__month AS metric_time__month - , subq_22.ds__quarter AS metric_time__quarter - , subq_22.ds__year AS metric_time__year - , subq_22.ds__extract_year AS metric_time__extract_year - , subq_22.ds__extract_quarter AS metric_time__extract_quarter - , subq_22.ds__extract_month AS metric_time__extract_month - , subq_22.ds__extract_day AS metric_time__extract_day - , subq_22.ds__extract_dow AS metric_time__extract_dow - , subq_22.ds__extract_doy AS metric_time__extract_doy - , subq_22.listing - , subq_22.user - , subq_22.listing__user - , subq_22.country_latest - , subq_22.is_lux_latest - , subq_22.capacity_latest - , subq_22.listing__country_latest - , subq_22.listing__is_lux_latest - , subq_22.listing__capacity_latest - , subq_22.listings - , subq_22.largest_listing - , subq_22.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1554,227 +1554,227 @@ FULL OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_22 - ) subq_23 - ) subq_24 + ) subq_2 + ) subq_3 + ) subq_4 ON - subq_21.listing = subq_24.listing - ) subq_25 + subq_1.listing = subq_4.listing + ) subq_5 WHERE (listing__is_lux_latest) AND (metric_time__day >= '2020-01-02') - ) subq_26 - ) subq_27 + ) subq_6 + ) subq_7 GROUP BY - subq_27.listing__capacity_latest - ) subq_28 - ) subq_29 + subq_7.listing__capacity_latest + ) subq_8 + ) subq_19 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_38.listing__capacity_latest - , subq_38.views + subq_17.listing__capacity_latest + , subq_17.views FROM ( -- Aggregate Measures SELECT - subq_37.listing__capacity_latest - , SUM(subq_37.views) AS views + subq_16.listing__capacity_latest + , SUM(subq_16.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__capacity_latest'] SELECT - subq_36.listing__capacity_latest - , subq_36.views + subq_15.listing__capacity_latest + , subq_15.views FROM ( -- Constrain Output with WHERE SELECT - subq_35.ds__day - , subq_35.ds__week - , subq_35.ds__month - , subq_35.ds__quarter - , subq_35.ds__year - , subq_35.ds__extract_year - , subq_35.ds__extract_quarter - , subq_35.ds__extract_month - , subq_35.ds__extract_day - , subq_35.ds__extract_dow - , subq_35.ds__extract_doy - , subq_35.ds_partitioned__day - , subq_35.ds_partitioned__week - , subq_35.ds_partitioned__month - , subq_35.ds_partitioned__quarter - , subq_35.ds_partitioned__year - , subq_35.ds_partitioned__extract_year - , subq_35.ds_partitioned__extract_quarter - , subq_35.ds_partitioned__extract_month - , subq_35.ds_partitioned__extract_day - , subq_35.ds_partitioned__extract_dow - , subq_35.ds_partitioned__extract_doy - , subq_35.view__ds__day - , subq_35.view__ds__week - , subq_35.view__ds__month - , subq_35.view__ds__quarter - , subq_35.view__ds__year - , subq_35.view__ds__extract_year - , subq_35.view__ds__extract_quarter - , subq_35.view__ds__extract_month - , subq_35.view__ds__extract_day - , subq_35.view__ds__extract_dow - , subq_35.view__ds__extract_doy - , subq_35.view__ds_partitioned__day - , subq_35.view__ds_partitioned__week - , subq_35.view__ds_partitioned__month - , subq_35.view__ds_partitioned__quarter - , subq_35.view__ds_partitioned__year - , subq_35.view__ds_partitioned__extract_year - , subq_35.view__ds_partitioned__extract_quarter - , subq_35.view__ds_partitioned__extract_month - , subq_35.view__ds_partitioned__extract_day - , subq_35.view__ds_partitioned__extract_dow - , subq_35.view__ds_partitioned__extract_doy - , subq_35.metric_time__day - , subq_35.metric_time__week - , subq_35.metric_time__month - , subq_35.metric_time__quarter - , subq_35.metric_time__year - , subq_35.metric_time__extract_year - , subq_35.metric_time__extract_quarter - , subq_35.metric_time__extract_month - , subq_35.metric_time__extract_day - , subq_35.metric_time__extract_dow - , subq_35.metric_time__extract_doy - , subq_35.listing - , subq_35.user - , subq_35.view__listing - , subq_35.view__user - , subq_35.listing__is_lux_latest - , subq_35.listing__capacity_latest - , subq_35.views + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.ds_partitioned__day + , subq_14.ds_partitioned__week + , subq_14.ds_partitioned__month + , subq_14.ds_partitioned__quarter + , subq_14.ds_partitioned__year + , subq_14.ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy + , subq_14.view__ds__day + , subq_14.view__ds__week + , subq_14.view__ds__month + , subq_14.view__ds__quarter + , subq_14.view__ds__year + , subq_14.view__ds__extract_year + , subq_14.view__ds__extract_quarter + , subq_14.view__ds__extract_month + , subq_14.view__ds__extract_day + , subq_14.view__ds__extract_dow + , subq_14.view__ds__extract_doy + , subq_14.view__ds_partitioned__day + , subq_14.view__ds_partitioned__week + , subq_14.view__ds_partitioned__month + , subq_14.view__ds_partitioned__quarter + , subq_14.view__ds_partitioned__year + , subq_14.view__ds_partitioned__extract_year + , subq_14.view__ds_partitioned__extract_quarter + , subq_14.view__ds_partitioned__extract_month + , subq_14.view__ds_partitioned__extract_day + , subq_14.view__ds_partitioned__extract_dow + , subq_14.view__ds_partitioned__extract_doy + , subq_14.metric_time__day + , subq_14.metric_time__week + , subq_14.metric_time__month + , subq_14.metric_time__quarter + , subq_14.metric_time__year + , subq_14.metric_time__extract_year + , subq_14.metric_time__extract_quarter + , subq_14.metric_time__extract_month + , subq_14.metric_time__extract_day + , subq_14.metric_time__extract_dow + , subq_14.metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.view__listing + , subq_14.view__user + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.views FROM ( -- Join Standard Outputs SELECT - subq_34.is_lux_latest AS listing__is_lux_latest - , subq_34.capacity_latest AS listing__capacity_latest - , subq_31.ds__day AS ds__day - , subq_31.ds__week AS ds__week - , subq_31.ds__month AS ds__month - , subq_31.ds__quarter AS ds__quarter - , subq_31.ds__year AS ds__year - , subq_31.ds__extract_year AS ds__extract_year - , subq_31.ds__extract_quarter AS ds__extract_quarter - , subq_31.ds__extract_month AS ds__extract_month - , subq_31.ds__extract_day AS ds__extract_day - , subq_31.ds__extract_dow AS ds__extract_dow - , subq_31.ds__extract_doy AS ds__extract_doy - , subq_31.ds_partitioned__day AS ds_partitioned__day - , subq_31.ds_partitioned__week AS ds_partitioned__week - , subq_31.ds_partitioned__month AS ds_partitioned__month - , subq_31.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_31.ds_partitioned__year AS ds_partitioned__year - , subq_31.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_31.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_31.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_31.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_31.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_31.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_31.view__ds__day AS view__ds__day - , subq_31.view__ds__week AS view__ds__week - , subq_31.view__ds__month AS view__ds__month - , subq_31.view__ds__quarter AS view__ds__quarter - , subq_31.view__ds__year AS view__ds__year - , subq_31.view__ds__extract_year AS view__ds__extract_year - , subq_31.view__ds__extract_quarter AS view__ds__extract_quarter - , subq_31.view__ds__extract_month AS view__ds__extract_month - , subq_31.view__ds__extract_day AS view__ds__extract_day - , subq_31.view__ds__extract_dow AS view__ds__extract_dow - , subq_31.view__ds__extract_doy AS view__ds__extract_doy - , subq_31.view__ds_partitioned__day AS view__ds_partitioned__day - , subq_31.view__ds_partitioned__week AS view__ds_partitioned__week - , subq_31.view__ds_partitioned__month AS view__ds_partitioned__month - , subq_31.view__ds_partitioned__quarter AS view__ds_partitioned__quarter - , subq_31.view__ds_partitioned__year AS view__ds_partitioned__year - , subq_31.view__ds_partitioned__extract_year AS view__ds_partitioned__extract_year - , subq_31.view__ds_partitioned__extract_quarter AS view__ds_partitioned__extract_quarter - , subq_31.view__ds_partitioned__extract_month AS view__ds_partitioned__extract_month - , subq_31.view__ds_partitioned__extract_day AS view__ds_partitioned__extract_day - , subq_31.view__ds_partitioned__extract_dow AS view__ds_partitioned__extract_dow - , subq_31.view__ds_partitioned__extract_doy AS view__ds_partitioned__extract_doy - , subq_31.metric_time__day AS metric_time__day - , subq_31.metric_time__week AS metric_time__week - , subq_31.metric_time__month AS metric_time__month - , subq_31.metric_time__quarter AS metric_time__quarter - , subq_31.metric_time__year AS metric_time__year - , subq_31.metric_time__extract_year AS metric_time__extract_year - , subq_31.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_31.metric_time__extract_month AS metric_time__extract_month - , subq_31.metric_time__extract_day AS metric_time__extract_day - , subq_31.metric_time__extract_dow AS metric_time__extract_dow - , subq_31.metric_time__extract_doy AS metric_time__extract_doy - , subq_31.listing AS listing - , subq_31.user AS user - , subq_31.view__listing AS view__listing - , subq_31.view__user AS view__user - , subq_31.views AS views + subq_13.is_lux_latest AS listing__is_lux_latest + , subq_13.capacity_latest AS listing__capacity_latest + , subq_11.ds__day AS ds__day + , subq_11.ds__week AS ds__week + , subq_11.ds__month AS ds__month + , subq_11.ds__quarter AS ds__quarter + , subq_11.ds__year AS ds__year + , subq_11.ds__extract_year AS ds__extract_year + , subq_11.ds__extract_quarter AS ds__extract_quarter + , subq_11.ds__extract_month AS ds__extract_month + , subq_11.ds__extract_day AS ds__extract_day + , subq_11.ds__extract_dow AS ds__extract_dow + , subq_11.ds__extract_doy AS ds__extract_doy + , subq_11.ds_partitioned__day AS ds_partitioned__day + , subq_11.ds_partitioned__week AS ds_partitioned__week + , subq_11.ds_partitioned__month AS ds_partitioned__month + , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_11.ds_partitioned__year AS ds_partitioned__year + , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_11.view__ds__day AS view__ds__day + , subq_11.view__ds__week AS view__ds__week + , subq_11.view__ds__month AS view__ds__month + , subq_11.view__ds__quarter AS view__ds__quarter + , subq_11.view__ds__year AS view__ds__year + , subq_11.view__ds__extract_year AS view__ds__extract_year + , subq_11.view__ds__extract_quarter AS view__ds__extract_quarter + , subq_11.view__ds__extract_month AS view__ds__extract_month + , subq_11.view__ds__extract_day AS view__ds__extract_day + , subq_11.view__ds__extract_dow AS view__ds__extract_dow + , subq_11.view__ds__extract_doy AS view__ds__extract_doy + , subq_11.view__ds_partitioned__day AS view__ds_partitioned__day + , subq_11.view__ds_partitioned__week AS view__ds_partitioned__week + , subq_11.view__ds_partitioned__month AS view__ds_partitioned__month + , subq_11.view__ds_partitioned__quarter AS view__ds_partitioned__quarter + , subq_11.view__ds_partitioned__year AS view__ds_partitioned__year + , subq_11.view__ds_partitioned__extract_year AS view__ds_partitioned__extract_year + , subq_11.view__ds_partitioned__extract_quarter AS view__ds_partitioned__extract_quarter + , subq_11.view__ds_partitioned__extract_month AS view__ds_partitioned__extract_month + , subq_11.view__ds_partitioned__extract_day AS view__ds_partitioned__extract_day + , subq_11.view__ds_partitioned__extract_dow AS view__ds_partitioned__extract_dow + , subq_11.view__ds_partitioned__extract_doy AS view__ds_partitioned__extract_doy + , subq_11.metric_time__day AS metric_time__day + , subq_11.metric_time__week AS metric_time__week + , subq_11.metric_time__month AS metric_time__month + , subq_11.metric_time__quarter AS metric_time__quarter + , subq_11.metric_time__year AS metric_time__year + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_11.metric_time__extract_month AS metric_time__extract_month + , subq_11.metric_time__extract_day AS metric_time__extract_day + , subq_11.metric_time__extract_dow AS metric_time__extract_dow + , subq_11.metric_time__extract_doy AS metric_time__extract_doy + , subq_11.listing AS listing + , subq_11.user AS user + , subq_11.view__listing AS view__listing + , subq_11.view__user AS view__user + , subq_11.views AS views FROM ( -- Metric Time Dimension 'ds' SELECT - subq_30.ds__day - , subq_30.ds__week - , subq_30.ds__month - , subq_30.ds__quarter - , subq_30.ds__year - , subq_30.ds__extract_year - , subq_30.ds__extract_quarter - , subq_30.ds__extract_month - , subq_30.ds__extract_day - , subq_30.ds__extract_dow - , subq_30.ds__extract_doy - , subq_30.ds_partitioned__day - , subq_30.ds_partitioned__week - , subq_30.ds_partitioned__month - , subq_30.ds_partitioned__quarter - , subq_30.ds_partitioned__year - , subq_30.ds_partitioned__extract_year - , subq_30.ds_partitioned__extract_quarter - , subq_30.ds_partitioned__extract_month - , subq_30.ds_partitioned__extract_day - , subq_30.ds_partitioned__extract_dow - , subq_30.ds_partitioned__extract_doy - , subq_30.view__ds__day - , subq_30.view__ds__week - , subq_30.view__ds__month - , subq_30.view__ds__quarter - , subq_30.view__ds__year - , subq_30.view__ds__extract_year - , subq_30.view__ds__extract_quarter - , subq_30.view__ds__extract_month - , subq_30.view__ds__extract_day - , subq_30.view__ds__extract_dow - , subq_30.view__ds__extract_doy - , subq_30.view__ds_partitioned__day - , subq_30.view__ds_partitioned__week - , subq_30.view__ds_partitioned__month - , subq_30.view__ds_partitioned__quarter - , subq_30.view__ds_partitioned__year - , subq_30.view__ds_partitioned__extract_year - , subq_30.view__ds_partitioned__extract_quarter - , subq_30.view__ds_partitioned__extract_month - , subq_30.view__ds_partitioned__extract_day - , subq_30.view__ds_partitioned__extract_dow - , subq_30.view__ds_partitioned__extract_doy - , subq_30.ds__day AS metric_time__day - , subq_30.ds__week AS metric_time__week - , subq_30.ds__month AS metric_time__month - , subq_30.ds__quarter AS metric_time__quarter - , subq_30.ds__year AS metric_time__year - , subq_30.ds__extract_year AS metric_time__extract_year - , subq_30.ds__extract_quarter AS metric_time__extract_quarter - , subq_30.ds__extract_month AS metric_time__extract_month - , subq_30.ds__extract_day AS metric_time__extract_day - , subq_30.ds__extract_dow AS metric_time__extract_dow - , subq_30.ds__extract_doy AS metric_time__extract_doy - , subq_30.listing - , subq_30.user - , subq_30.view__listing - , subq_30.view__user - , subq_30.views + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.view__ds__day + , subq_10.view__ds__week + , subq_10.view__ds__month + , subq_10.view__ds__quarter + , subq_10.view__ds__year + , subq_10.view__ds__extract_year + , subq_10.view__ds__extract_quarter + , subq_10.view__ds__extract_month + , subq_10.view__ds__extract_day + , subq_10.view__ds__extract_dow + , subq_10.view__ds__extract_doy + , subq_10.view__ds_partitioned__day + , subq_10.view__ds_partitioned__week + , subq_10.view__ds_partitioned__month + , subq_10.view__ds_partitioned__quarter + , subq_10.view__ds_partitioned__year + , subq_10.view__ds_partitioned__extract_year + , subq_10.view__ds_partitioned__extract_quarter + , subq_10.view__ds_partitioned__extract_month + , subq_10.view__ds_partitioned__extract_day + , subq_10.view__ds_partitioned__extract_dow + , subq_10.view__ds_partitioned__extract_doy + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.listing + , subq_10.user + , subq_10.view__listing + , subq_10.view__user + , subq_10.views FROM ( -- Read Elements From Semantic Model 'views_source' SELECT @@ -1828,84 +1828,84 @@ FULL OUTER JOIN ( , views_source_src_28000.listing_id AS view__listing , views_source_src_28000.user_id AS view__user FROM ***************************.fct_views views_source_src_28000 - ) subq_30 - ) subq_31 + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Pass Only Elements: ['capacity_latest', 'is_lux_latest', 'listing'] SELECT - subq_33.listing - , subq_33.is_lux_latest - , subq_33.capacity_latest + subq_12.listing + , subq_12.is_lux_latest + , subq_12.capacity_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_32.ds__day - , subq_32.ds__week - , subq_32.ds__month - , subq_32.ds__quarter - , subq_32.ds__year - , subq_32.ds__extract_year - , subq_32.ds__extract_quarter - , subq_32.ds__extract_month - , subq_32.ds__extract_day - , subq_32.ds__extract_dow - , subq_32.ds__extract_doy - , subq_32.created_at__day - , subq_32.created_at__week - , subq_32.created_at__month - , subq_32.created_at__quarter - , subq_32.created_at__year - , subq_32.created_at__extract_year - , subq_32.created_at__extract_quarter - , subq_32.created_at__extract_month - , subq_32.created_at__extract_day - , subq_32.created_at__extract_dow - , subq_32.created_at__extract_doy - , subq_32.listing__ds__day - , subq_32.listing__ds__week - , subq_32.listing__ds__month - , subq_32.listing__ds__quarter - , subq_32.listing__ds__year - , subq_32.listing__ds__extract_year - , subq_32.listing__ds__extract_quarter - , subq_32.listing__ds__extract_month - , subq_32.listing__ds__extract_day - , subq_32.listing__ds__extract_dow - , subq_32.listing__ds__extract_doy - , subq_32.listing__created_at__day - , subq_32.listing__created_at__week - , subq_32.listing__created_at__month - , subq_32.listing__created_at__quarter - , subq_32.listing__created_at__year - , subq_32.listing__created_at__extract_year - , subq_32.listing__created_at__extract_quarter - , subq_32.listing__created_at__extract_month - , subq_32.listing__created_at__extract_day - , subq_32.listing__created_at__extract_dow - , subq_32.listing__created_at__extract_doy - , subq_32.ds__day AS metric_time__day - , subq_32.ds__week AS metric_time__week - , subq_32.ds__month AS metric_time__month - , subq_32.ds__quarter AS metric_time__quarter - , subq_32.ds__year AS metric_time__year - , subq_32.ds__extract_year AS metric_time__extract_year - , subq_32.ds__extract_quarter AS metric_time__extract_quarter - , subq_32.ds__extract_month AS metric_time__extract_month - , subq_32.ds__extract_day AS metric_time__extract_day - , subq_32.ds__extract_dow AS metric_time__extract_dow - , subq_32.ds__extract_doy AS metric_time__extract_doy - , subq_32.listing - , subq_32.user - , subq_32.listing__user - , subq_32.country_latest - , subq_32.is_lux_latest - , subq_32.capacity_latest - , subq_32.listing__country_latest - , subq_32.listing__is_lux_latest - , subq_32.listing__capacity_latest - , subq_32.listings - , subq_32.largest_listing - , subq_32.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1966,26 +1966,26 @@ FULL OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_32 - ) subq_33 - ) subq_34 + ) subq_2 + ) subq_12 + ) subq_13 ON - subq_31.listing = subq_34.listing - ) subq_35 + subq_11.listing = subq_13.listing + ) subq_14 WHERE (listing__is_lux_latest) AND (metric_time__day >= '2020-01-02') - ) subq_36 - ) subq_37 + ) subq_15 + ) subq_16 GROUP BY - subq_37.listing__capacity_latest - ) subq_38 - ) subq_39 + subq_16.listing__capacity_latest + ) subq_17 + ) subq_20 ON - subq_29.listing__capacity_latest = subq_39.listing__capacity_latest + subq_19.listing__capacity_latest = subq_20.listing__capacity_latest GROUP BY - COALESCE(subq_29.listing__capacity_latest, subq_39.listing__capacity_latest) - ) subq_40 -) subq_41 + COALESCE(subq_19.listing__capacity_latest, subq_20.listing__capacity_latest) + ) subq_21 +) subq_22 ON - COALESCE(subq_9.listing__capacity_latest, subq_19.listing__capacity_latest) = subq_41.listing__capacity_latest + COALESCE(subq_9.listing__capacity_latest, subq_18.listing__capacity_latest) = subq_22.listing__capacity_latest GROUP BY - COALESCE(subq_9.listing__capacity_latest, subq_19.listing__capacity_latest, subq_41.listing__capacity_latest) + COALESCE(subq_9.listing__capacity_latest, subq_18.listing__capacity_latest, subq_22.listing__capacity_latest) diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0_optimized.sql index 034a5c4068..894ac9d1a0 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_predicate_pushdown_rendering.py/SqlPlan/DuckDB/test_saved_query_with_metric_joins_and_filter__plan0_optimized.sql @@ -20,8 +20,8 @@ WITH cm_6_cte AS ( SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest , listings_latest_src_28000.capacity AS listing__capacity_latest - , subq_43.metric_time__day AS metric_time__day - , subq_43.bookings AS bookings + , subq_24.metric_time__day AS metric_time__day + , subq_24.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -30,12 +30,12 @@ WITH cm_6_cte AS ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_43 + ) subq_24 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_43.listing = listings_latest_src_28000.listing_id - ) subq_47 + subq_24.listing = listings_latest_src_28000.listing_id + ) subq_28 WHERE (listing__is_lux_latest) AND (metric_time__day >= '2020-01-02') GROUP BY listing__capacity_latest @@ -54,8 +54,8 @@ WITH cm_6_cte AS ( SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest , listings_latest_src_28000.capacity AS listing__capacity_latest - , subq_53.metric_time__day AS metric_time__day - , subq_53.views AS views + , subq_34.metric_time__day AS metric_time__day + , subq_34.views AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -64,22 +64,22 @@ WITH cm_6_cte AS ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_53 + ) subq_34 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_53.listing = listings_latest_src_28000.listing_id - ) subq_57 + subq_34.listing = listings_latest_src_28000.listing_id + ) subq_37 WHERE (listing__is_lux_latest) AND (metric_time__day >= '2020-01-02') GROUP BY listing__capacity_latest ) SELECT - COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest, subq_64.listing__capacity_latest) AS listing__capacity_latest + COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest, subq_44.listing__capacity_latest) AS listing__capacity_latest , MAX(cm_6_cte.bookings) AS bookings , MAX(cm_7_cte.views) AS views - , MAX(CAST(subq_64.bookings AS DOUBLE) / CAST(NULLIF(subq_64.views, 0) AS DOUBLE)) AS bookings_per_view + , MAX(CAST(subq_44.bookings AS DOUBLE) / CAST(NULLIF(subq_44.views, 0) AS DOUBLE)) AS bookings_per_view FROM cm_6_cte cm_6_cte FULL OUTER JOIN cm_7_cte cm_7_cte @@ -98,8 +98,8 @@ FULL OUTER JOIN ( cm_6_cte.listing__capacity_latest = cm_7_cte.listing__capacity_latest GROUP BY COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest) -) subq_64 +) subq_44 ON - COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest) = subq_64.listing__capacity_latest + COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest) = subq_44.listing__capacity_latest GROUP BY - COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest, subq_64.listing__capacity_latest) + COALESCE(cm_6_cte.listing__capacity_latest, cm_7_cte.listing__capacity_latest, subq_44.listing__capacity_latest) diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0.sql index 045ddc00c0..ea15c6e5c7 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0.sql @@ -4,9 +4,9 @@ sql_engine: DuckDB --- -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_9.booking_value) AS booking_value + , MAX(subq_8.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -225,119 +225,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.booking_value + subq_7.metric_time__day + , subq_7.booking_value FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.booking_value) AS booking_value + subq_6.metric_time__day + , SUM(subq_6.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.booking_value + subq_5.metric_time__day + , subq_5.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -430,14 +430,14 @@ FULL OUTER JOIN ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 -) subq_9 + subq_6.metric_time__day + ) subq_7 +) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql index 45b37d911d..0b59dd05e6 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_common_semantic_model__plan0_optimized.sql @@ -17,6 +17,6 @@ FROM ( , 1 AS bookings , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_12 +) subq_11 GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0.sql index 36e6e22ea1..c0f7245b13 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0.sql @@ -6,338 +6,338 @@ sql_engine: DuckDB --- -- Change Column Aliases SELECT - subq_15.metric_time__day - , subq_15.booking_fees AS bookings_alias + subq_18.metric_time__day + , subq_18.booking_fees AS bookings_alias FROM ( -- Order By ['booking_fees'] SELECT - subq_14.metric_time__day - , subq_14.booking_fees + subq_17.metric_time__day + , subq_17.booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day + subq_16.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.booking_value + subq_15.metric_time__day + , subq_15.booking_value FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.booking_value) AS booking_value + subq_14.metric_time__day + , SUM(subq_14.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.booking_value + subq_13.metric_time__day + , subq_13.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.metric_time__day - , subq_9.metric_time__week - , subq_9.metric_time__month - , subq_9.metric_time__quarter - , subq_9.metric_time__year - , subq_9.metric_time__extract_year - , subq_9.metric_time__extract_quarter - , subq_9.metric_time__extract_month - , subq_9.metric_time__extract_day - , subq_9.metric_time__extract_dow - , subq_9.metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.listing__booking_fees - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.metric_time__day + , subq_12.metric_time__week + , subq_12.metric_time__month + , subq_12.metric_time__quarter + , subq_12.metric_time__year + , subq_12.metric_time__extract_year + , subq_12.metric_time__extract_quarter + , subq_12.metric_time__extract_month + , subq_12.metric_time__extract_day + , subq_12.metric_time__extract_dow + , subq_12.metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.listing__booking_fees + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_8.listing__booking_fees AS listing__booking_fees - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.listing__booking_fees AS listing__booking_fees + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -430,134 +430,134 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__booking_fees'] SELECT - subq_7.listing - , subq_7.listing__booking_fees + subq_10.listing + , subq_10.listing__booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_6.listing + subq_9.listing , booking_value * 0.05 AS listing__booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.booking_value + subq_8.listing + , subq_8.booking_value FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.booking_value) AS booking_value + subq_7.listing + , SUM(subq_7.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'listing'] SELECT - subq_3.listing - , subq_3.booking_value + subq_6.listing + , subq_6.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -650,25 +650,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_6 + ) subq_7 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 - ) subq_8 + subq_7.listing + ) subq_8 + ) subq_9 + ) subq_10 + ) subq_11 ON - subq_1.listing = subq_8.listing - ) subq_9 + subq_5.listing = subq_11.listing + ) subq_12 WHERE listing__booking_fees > 2 - ) subq_10 - ) subq_11 + ) subq_13 + ) subq_14 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 - ) subq_14 - ORDER BY subq_14.booking_fees -) subq_15 + subq_14.metric_time__day + ) subq_15 + ) subq_16 + ) subq_17 + ORDER BY subq_17.booking_fees +) subq_18 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0_optimized.sql index 3ea8233245..a69ae07260 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_derived_metric_alias__plan0_optimized.sql @@ -31,7 +31,7 @@ FROM ( FROM ( -- Join Standard Outputs SELECT - subq_23.listing__booking_fees AS listing__booking_fees + subq_26.listing__booking_fees AS listing__booking_fees , sma_28009_cte.metric_time__day AS metric_time__day , sma_28009_cte.booking_value AS booking_value FROM sma_28009_cte sma_28009_cte @@ -52,13 +52,13 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_21 - ) subq_23 + ) subq_24 + ) subq_26 ON - sma_28009_cte.listing = subq_23.listing - ) subq_24 + sma_28009_cte.listing = subq_26.listing + ) subq_27 WHERE listing__booking_fees > 2 GROUP BY metric_time__day -) subq_28 +) subq_31 ORDER BY bookings_alias diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0.sql index 575020cf1a..e90c58c3b0 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0.sql @@ -4,15 +4,15 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_25.metric_time__day + subq_22.metric_time__day , average_booking_value * bookings / NULLIF(booking_value, 0) AS lux_booking_value_rate_expr FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_19.metric_time__day, subq_24.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_17.metric_time__day, subq_21.metric_time__day) AS metric_time__day , MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_24.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_21.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -578,323 +578,323 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_16.metric_time__day + , subq_16.bookings FROM ( -- Aggregate Measures SELECT - subq_17.metric_time__day - , SUM(subq_17.bookings) AS bookings + subq_15.metric_time__day + , SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_16.metric_time__day - , subq_16.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -987,83 +987,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1124,137 +1124,137 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE listing__is_lux_latest - ) subq_16 - ) subq_17 + ) subq_14 + ) subq_15 GROUP BY - subq_17.metric_time__day - ) subq_18 - ) subq_19 + subq_15.metric_time__day + ) subq_16 + ) subq_17 ON - subq_9.metric_time__day = subq_19.metric_time__day + subq_9.metric_time__day = subq_17.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_23.metric_time__day - , subq_23.booking_value + subq_20.metric_time__day + , subq_20.booking_value FROM ( -- Aggregate Measures SELECT - subq_22.metric_time__day - , SUM(subq_22.booking_value) AS booking_value + subq_19.metric_time__day + , SUM(subq_19.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_21.metric_time__day - , subq_21.booking_value + subq_18.metric_time__day + , subq_18.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1347,15 +1347,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 - ) subq_22 + ) subq_0 + ) subq_18 + ) subq_19 GROUP BY - subq_22.metric_time__day - ) subq_23 - ) subq_24 + subq_19.metric_time__day + ) subq_20 + ) subq_21 ON - COALESCE(subq_9.metric_time__day, subq_19.metric_time__day) = subq_24.metric_time__day + COALESCE(subq_9.metric_time__day, subq_17.metric_time__day) = subq_21.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_19.metric_time__day, subq_24.metric_time__day) -) subq_25 + COALESCE(subq_9.metric_time__day, subq_17.metric_time__day, subq_21.metric_time__day) +) subq_22 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0_optimized.sql index f67cf2b467..ff52bacd4f 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_35.metric_time__day, subq_40.metric_time__day) AS metric_time__day - , MAX(subq_35.average_booking_value) AS average_booking_value - , MAX(subq_35.bookings) AS bookings - , MAX(subq_40.booking_value) AS booking_value + COALESCE(subq_32.metric_time__day, subq_37.metric_time__day) AS metric_time__day + , MAX(subq_32.average_booking_value) AS average_booking_value + , MAX(subq_32.bookings) AS bookings + , MAX(subq_37.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings', 'metric_time__day'] @@ -26,9 +26,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_27.metric_time__day AS metric_time__day - , subq_27.bookings AS bookings - , subq_27.average_booking_value AS average_booking_value + , subq_24.metric_time__day AS metric_time__day + , subq_24.bookings AS bookings + , subq_24.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -38,16 +38,16 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_27 + ) subq_24 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_27.listing = listings_latest_src_28000.listing_id - ) subq_31 + subq_24.listing = listings_latest_src_28000.listing_id + ) subq_28 WHERE listing__is_lux_latest GROUP BY metric_time__day - ) subq_35 + ) subq_32 FULL OUTER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -60,9 +60,9 @@ FROM ( FROM ***************************.fct_bookings bookings_source_src_28000 GROUP BY DATE_TRUNC('day', ds) - ) subq_40 + ) subq_37 ON - subq_35.metric_time__day = subq_40.metric_time__day + subq_32.metric_time__day = subq_37.metric_time__day GROUP BY - COALESCE(subq_35.metric_time__day, subq_40.metric_time__day) -) subq_41 + COALESCE(subq_32.metric_time__day, subq_37.metric_time__day) +) subq_38 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql index 17cbd058ef..f44e401c7f 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0.sql @@ -4,14 +4,14 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day - , CAST(subq_11.booking_value_with_is_instant_constraint AS DOUBLE) / CAST(NULLIF(subq_11.booking_value, 0) AS DOUBLE) AS instant_booking_value_ratio + subq_10.metric_time__day + , CAST(subq_10.booking_value_with_is_instant_constraint AS DOUBLE) / CAST(NULLIF(subq_10.booking_value, 0) AS DOUBLE) AS instant_booking_value_ratio FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_10.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_9.metric_time__day) AS metric_time__day , MAX(subq_5.booking_value_with_is_instant_constraint) AS booking_value_with_is_instant_constraint - , MAX(subq_10.booking_value) AS booking_value + , MAX(subq_9.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -333,119 +333,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_9.metric_time__day - , subq_9.booking_value + subq_8.metric_time__day + , subq_8.booking_value FROM ( -- Aggregate Measures SELECT - subq_8.metric_time__day - , SUM(subq_8.booking_value) AS booking_value + subq_7.metric_time__day + , SUM(subq_7.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_7.metric_time__day - , subq_7.booking_value + subq_6.metric_time__day + , subq_6.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -538,15 +538,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.metric_time__day - ) subq_9 - ) subq_10 + subq_7.metric_time__day + ) subq_8 + ) subq_9 ON - subq_5.metric_time__day = subq_10.metric_time__day + subq_5.metric_time__day = subq_9.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_10.metric_time__day) -) subq_11 + COALESCE(subq_5.metric_time__day, subq_9.metric_time__day) +) subq_10 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql index 71deab1b41..b15200198c 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_measure_constraint_with_reused_measure__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_17.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_17.booking_value_with_is_instant_constraint) AS booking_value_with_is_instant_constraint - , MAX(subq_21.booking_value) AS booking_value + COALESCE(subq_16.metric_time__day, subq_20.metric_time__day) AS metric_time__day + , MAX(subq_16.booking_value_with_is_instant_constraint) AS booking_value_with_is_instant_constraint + , MAX(subq_20.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__day'] @@ -37,11 +37,11 @@ FROM ( , booking__is_instant , booking_value FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_12 WHERE booking__is_instant GROUP BY metric_time__day - ) subq_17 + ) subq_16 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['booking_value', 'metric_time__day'] @@ -53,9 +53,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 + ) subq_20 ON - subq_17.metric_time__day = subq_21.metric_time__day + subq_16.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_17.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_16.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0.sql index a7247b8aab..220578f9ed 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0.sql @@ -6,333 +6,333 @@ sql_engine: DuckDB --- -- Change Column Aliases SELECT - subq_13.metric_time__month - , subq_13.bookings AS bookings_alias + subq_15.metric_time__month + , subq_15.bookings AS bookings_alias FROM ( -- Order By ['bookings'] SELECT - subq_12.metric_time__month - , subq_12.bookings + subq_14.metric_time__month + , subq_14.bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__month - , subq_11.bookings + subq_13.metric_time__month + , subq_13.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__month - , SUM(subq_10.bookings) AS bookings + subq_12.metric_time__month + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__month'] SELECT - subq_9.metric_time__month - , subq_9.bookings + subq_11.metric_time__month + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.listing__bookings - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.listing__bookings + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.listing__bookings AS listing__bookings + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -425,129 +425,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_8.listing + , subq_8.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_7.listing + , subq_7.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_6.listing + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_5.listing + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -640,23 +640,23 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_6.listing + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_9.listing + ) subq_10 WHERE listing__bookings > 2 - ) subq_9 - ) subq_10 + ) subq_11 + ) subq_12 GROUP BY - subq_10.metric_time__month - ) subq_11 - ) subq_12 - ORDER BY subq_12.bookings -) subq_13 + subq_12.metric_time__month + ) subq_13 + ) subq_14 + ORDER BY subq_14.bookings +) subq_15 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0_optimized.sql index 6cc6fd3036..8d6b08bf3c 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_metric_alias__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_20.listing__bookings AS listing__bookings - , subq_15.metric_time__month AS metric_time__month - , subq_15.bookings AS bookings + subq_22.listing__bookings AS listing__bookings + , subq_17.metric_time__month AS metric_time__month + , subq_17.bookings AS bookings FROM ( -- Read From CTE For node_id=sma_28009 SELECT @@ -36,7 +36,7 @@ FROM ( , listing , bookings FROM sma_28009_cte sma_28009_cte - ) subq_15 + ) subq_17 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'listing'] @@ -49,10 +49,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_20 + ) subq_22 ON - subq_15.listing = subq_20.listing -) subq_21 + subq_17.listing = subq_22.listing +) subq_23 WHERE listing__bookings > 2 GROUP BY metric_time__month diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql index e3fe923e91..a2cf527245 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0.sql @@ -6,214 +6,214 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_9.metric_time__day - , subq_9.listing__user__home_state_latest - , subq_9.bookings + subq_18.metric_time__day + , subq_18.listing__user__home_state_latest + , subq_18.bookings FROM ( -- Aggregate Measures SELECT - subq_8.metric_time__day - , subq_8.listing__user__home_state_latest - , SUM(subq_8.bookings) AS bookings + subq_17.metric_time__day + , subq_17.listing__user__home_state_latest + , SUM(subq_17.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__home_state_latest', 'metric_time__day'] SELECT - subq_7.metric_time__day - , subq_7.listing__user__home_state_latest - , subq_7.bookings + subq_16.metric_time__day + , subq_16.listing__user__home_state_latest + , subq_16.bookings FROM ( -- Join Standard Outputs SELECT - subq_6.user__home_state_latest AS listing__user__home_state_latest - , subq_6.window_start__day AS listing__window_start__day - , subq_6.window_end__day AS listing__window_end__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.user AS user - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.booking__user AS booking__user - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value + subq_15.user__home_state_latest AS listing__user__home_state_latest + , subq_15.window_start__day AS listing__window_start__day + , subq_15.window_end__day AS listing__window_end__day + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.user AS user + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.booking__user AS booking__user + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.user - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.booking__user - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.bookers - , subq_0.average_booking_value + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_partitioned__day + , subq_9.ds_partitioned__week + , subq_9.ds_partitioned__month + , subq_9.ds_partitioned__quarter + , subq_9.ds_partitioned__year + , subq_9.ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy + , subq_9.paid_at__day + , subq_9.paid_at__week + , subq_9.paid_at__month + , subq_9.paid_at__quarter + , subq_9.paid_at__year + , subq_9.paid_at__extract_year + , subq_9.paid_at__extract_quarter + , subq_9.paid_at__extract_month + , subq_9.paid_at__extract_day + , subq_9.paid_at__extract_dow + , subq_9.paid_at__extract_doy + , subq_9.booking__ds__day + , subq_9.booking__ds__week + , subq_9.booking__ds__month + , subq_9.booking__ds__quarter + , subq_9.booking__ds__year + , subq_9.booking__ds__extract_year + , subq_9.booking__ds__extract_quarter + , subq_9.booking__ds__extract_month + , subq_9.booking__ds__extract_day + , subq_9.booking__ds__extract_dow + , subq_9.booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day + , subq_9.booking__paid_at__week + , subq_9.booking__paid_at__month + , subq_9.booking__paid_at__quarter + , subq_9.booking__paid_at__year + , subq_9.booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.guest + , subq_9.host + , subq_9.user + , subq_9.booking__listing + , subq_9.booking__guest + , subq_9.booking__host + , subq_9.booking__user + , subq_9.is_instant + , subq_9.booking__is_instant + , subq_9.bookings + , subq_9.instant_bookings + , subq_9.booking_value + , subq_9.bookers + , subq_9.average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -300,83 +300,83 @@ FROM ( , bookings_source_src_26000.host_id AS booking__host , bookings_source_src_26000.guest_id AS booking__user FROM ***************************.fct_bookings bookings_source_src_26000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__home_state_latest', 'window_start__day', 'window_end__day', 'listing'] SELECT - subq_5.window_start__day - , subq_5.window_end__day - , subq_5.listing - , subq_5.user__home_state_latest + subq_14.window_start__day + , subq_14.window_end__day + , subq_14.listing + , subq_14.user__home_state_latest FROM ( -- Join Standard Outputs SELECT - subq_4.home_state_latest AS user__home_state_latest - , subq_4.ds__day AS user__ds__day - , subq_4.ds__week AS user__ds__week - , subq_4.ds__month AS user__ds__month - , subq_4.ds__quarter AS user__ds__quarter - , subq_4.ds__year AS user__ds__year - , subq_4.ds__extract_year AS user__ds__extract_year - , subq_4.ds__extract_quarter AS user__ds__extract_quarter - , subq_4.ds__extract_month AS user__ds__extract_month - , subq_4.ds__extract_day AS user__ds__extract_day - , subq_4.ds__extract_dow AS user__ds__extract_dow - , subq_4.ds__extract_doy AS user__ds__extract_doy - , subq_2.window_start__day AS window_start__day - , subq_2.window_start__week AS window_start__week - , subq_2.window_start__month AS window_start__month - , subq_2.window_start__quarter AS window_start__quarter - , subq_2.window_start__year AS window_start__year - , subq_2.window_start__extract_year AS window_start__extract_year - , subq_2.window_start__extract_quarter AS window_start__extract_quarter - , subq_2.window_start__extract_month AS window_start__extract_month - , subq_2.window_start__extract_day AS window_start__extract_day - , subq_2.window_start__extract_dow AS window_start__extract_dow - , subq_2.window_start__extract_doy AS window_start__extract_doy - , subq_2.window_end__day AS window_end__day - , subq_2.window_end__week AS window_end__week - , subq_2.window_end__month AS window_end__month - , subq_2.window_end__quarter AS window_end__quarter - , subq_2.window_end__year AS window_end__year - , subq_2.window_end__extract_year AS window_end__extract_year - , subq_2.window_end__extract_quarter AS window_end__extract_quarter - , subq_2.window_end__extract_month AS window_end__extract_month - , subq_2.window_end__extract_day AS window_end__extract_day - , subq_2.window_end__extract_dow AS window_end__extract_dow - , subq_2.window_end__extract_doy AS window_end__extract_doy - , subq_2.listing__window_start__day AS listing__window_start__day - , subq_2.listing__window_start__week AS listing__window_start__week - , subq_2.listing__window_start__month AS listing__window_start__month - , subq_2.listing__window_start__quarter AS listing__window_start__quarter - , subq_2.listing__window_start__year AS listing__window_start__year - , subq_2.listing__window_start__extract_year AS listing__window_start__extract_year - , subq_2.listing__window_start__extract_quarter AS listing__window_start__extract_quarter - , subq_2.listing__window_start__extract_month AS listing__window_start__extract_month - , subq_2.listing__window_start__extract_day AS listing__window_start__extract_day - , subq_2.listing__window_start__extract_dow AS listing__window_start__extract_dow - , subq_2.listing__window_start__extract_doy AS listing__window_start__extract_doy - , subq_2.listing__window_end__day AS listing__window_end__day - , subq_2.listing__window_end__week AS listing__window_end__week - , subq_2.listing__window_end__month AS listing__window_end__month - , subq_2.listing__window_end__quarter AS listing__window_end__quarter - , subq_2.listing__window_end__year AS listing__window_end__year - , subq_2.listing__window_end__extract_year AS listing__window_end__extract_year - , subq_2.listing__window_end__extract_quarter AS listing__window_end__extract_quarter - , subq_2.listing__window_end__extract_month AS listing__window_end__extract_month - , subq_2.listing__window_end__extract_day AS listing__window_end__extract_day - , subq_2.listing__window_end__extract_dow AS listing__window_end__extract_dow - , subq_2.listing__window_end__extract_doy AS listing__window_end__extract_doy - , subq_2.listing AS listing - , subq_2.user AS user - , subq_2.listing__user AS listing__user - , subq_2.country AS country - , subq_2.is_lux AS is_lux - , subq_2.capacity AS capacity - , subq_2.listing__country AS listing__country - , subq_2.listing__is_lux AS listing__is_lux - , subq_2.listing__capacity AS listing__capacity + subq_13.home_state_latest AS user__home_state_latest + , subq_13.ds__day AS user__ds__day + , subq_13.ds__week AS user__ds__week + , subq_13.ds__month AS user__ds__month + , subq_13.ds__quarter AS user__ds__quarter + , subq_13.ds__year AS user__ds__year + , subq_13.ds__extract_year AS user__ds__extract_year + , subq_13.ds__extract_quarter AS user__ds__extract_quarter + , subq_13.ds__extract_month AS user__ds__extract_month + , subq_13.ds__extract_day AS user__ds__extract_day + , subq_13.ds__extract_dow AS user__ds__extract_dow + , subq_13.ds__extract_doy AS user__ds__extract_doy + , subq_11.window_start__day AS window_start__day + , subq_11.window_start__week AS window_start__week + , subq_11.window_start__month AS window_start__month + , subq_11.window_start__quarter AS window_start__quarter + , subq_11.window_start__year AS window_start__year + , subq_11.window_start__extract_year AS window_start__extract_year + , subq_11.window_start__extract_quarter AS window_start__extract_quarter + , subq_11.window_start__extract_month AS window_start__extract_month + , subq_11.window_start__extract_day AS window_start__extract_day + , subq_11.window_start__extract_dow AS window_start__extract_dow + , subq_11.window_start__extract_doy AS window_start__extract_doy + , subq_11.window_end__day AS window_end__day + , subq_11.window_end__week AS window_end__week + , subq_11.window_end__month AS window_end__month + , subq_11.window_end__quarter AS window_end__quarter + , subq_11.window_end__year AS window_end__year + , subq_11.window_end__extract_year AS window_end__extract_year + , subq_11.window_end__extract_quarter AS window_end__extract_quarter + , subq_11.window_end__extract_month AS window_end__extract_month + , subq_11.window_end__extract_day AS window_end__extract_day + , subq_11.window_end__extract_dow AS window_end__extract_dow + , subq_11.window_end__extract_doy AS window_end__extract_doy + , subq_11.listing__window_start__day AS listing__window_start__day + , subq_11.listing__window_start__week AS listing__window_start__week + , subq_11.listing__window_start__month AS listing__window_start__month + , subq_11.listing__window_start__quarter AS listing__window_start__quarter + , subq_11.listing__window_start__year AS listing__window_start__year + , subq_11.listing__window_start__extract_year AS listing__window_start__extract_year + , subq_11.listing__window_start__extract_quarter AS listing__window_start__extract_quarter + , subq_11.listing__window_start__extract_month AS listing__window_start__extract_month + , subq_11.listing__window_start__extract_day AS listing__window_start__extract_day + , subq_11.listing__window_start__extract_dow AS listing__window_start__extract_dow + , subq_11.listing__window_start__extract_doy AS listing__window_start__extract_doy + , subq_11.listing__window_end__day AS listing__window_end__day + , subq_11.listing__window_end__week AS listing__window_end__week + , subq_11.listing__window_end__month AS listing__window_end__month + , subq_11.listing__window_end__quarter AS listing__window_end__quarter + , subq_11.listing__window_end__year AS listing__window_end__year + , subq_11.listing__window_end__extract_year AS listing__window_end__extract_year + , subq_11.listing__window_end__extract_quarter AS listing__window_end__extract_quarter + , subq_11.listing__window_end__extract_month AS listing__window_end__extract_month + , subq_11.listing__window_end__extract_day AS listing__window_end__extract_day + , subq_11.listing__window_end__extract_dow AS listing__window_end__extract_dow + , subq_11.listing__window_end__extract_doy AS listing__window_end__extract_doy + , subq_11.listing AS listing + , subq_11.user AS user + , subq_11.listing__user AS listing__user + , subq_11.country AS country + , subq_11.is_lux AS is_lux + , subq_11.capacity AS capacity + , subq_11.listing__country AS listing__country + , subq_11.listing__is_lux AS listing__is_lux + , subq_11.listing__capacity AS listing__capacity FROM ( -- Read Elements From Semantic Model 'listings' SELECT @@ -434,7 +434,7 @@ FROM ( , listings_src_26000.user_id AS user , listings_src_26000.user_id AS listing__user FROM ***************************.dim_listings listings_src_26000 - ) subq_2 + ) subq_11 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state_latest', @@ -464,31 +464,31 @@ FROM ( -- 'user', -- ] SELECT - subq_3.ds__day - , subq_3.ds__week - , subq_3.ds__month - , subq_3.ds__quarter - , subq_3.ds__year - , subq_3.ds__extract_year - , subq_3.ds__extract_quarter - , subq_3.ds__extract_month - , subq_3.ds__extract_day - , subq_3.ds__extract_dow - , subq_3.ds__extract_doy - , subq_3.user__ds__day - , subq_3.user__ds__week - , subq_3.user__ds__month - , subq_3.user__ds__quarter - , subq_3.user__ds__year - , subq_3.user__ds__extract_year - , subq_3.user__ds__extract_quarter - , subq_3.user__ds__extract_month - , subq_3.user__ds__extract_day - , subq_3.user__ds__extract_dow - , subq_3.user__ds__extract_doy - , subq_3.user - , subq_3.home_state_latest - , subq_3.user__home_state_latest + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.user__ds__day + , subq_12.user__ds__week + , subq_12.user__ds__month + , subq_12.user__ds__quarter + , subq_12.user__ds__year + , subq_12.user__ds__extract_year + , subq_12.user__ds__extract_quarter + , subq_12.user__ds__extract_month + , subq_12.user__ds__extract_day + , subq_12.user__ds__extract_dow + , subq_12.user__ds__extract_doy + , subq_12.user + , subq_12.home_state_latest + , subq_12.user__home_state_latest FROM ( -- Read Elements From Semantic Model 'users_latest' SELECT @@ -518,29 +518,29 @@ FROM ( , users_latest_src_26000.home_state_latest AS user__home_state_latest , users_latest_src_26000.user_id AS user FROM ***************************.dim_users_latest users_latest_src_26000 - ) subq_3 - ) subq_4 + ) subq_12 + ) subq_13 ON - subq_2.user = subq_4.user - ) subq_5 - ) subq_6 + subq_11.user = subq_13.user + ) subq_14 + ) subq_15 ON ( - subq_1.listing = subq_6.listing + subq_10.listing = subq_15.listing ) AND ( ( - subq_1.metric_time__day >= subq_6.window_start__day + subq_10.metric_time__day >= subq_15.window_start__day ) AND ( ( - subq_1.metric_time__day < subq_6.window_end__day + subq_10.metric_time__day < subq_15.window_end__day ) OR ( - subq_6.window_end__day IS NULL + subq_15.window_end__day IS NULL ) ) ) - ) subq_7 - ) subq_8 + ) subq_16 + ) subq_17 GROUP BY - subq_8.metric_time__day - , subq_8.listing__user__home_state_latest -) subq_9 + subq_17.metric_time__day + , subq_17.listing__user__home_state_latest +) subq_18 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql index 72a13714f4..834eba20d1 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_through_scd_dimension__plan0_optimized.sql @@ -9,9 +9,9 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day AS metric_time__day - , subq_16.user__home_state_latest AS listing__user__home_state_latest - , SUM(subq_11.bookings) AS bookings + subq_20.metric_time__day AS metric_time__day + , subq_25.user__home_state_latest AS listing__user__home_state_latest + , SUM(subq_20.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_26000 -) subq_11 +) subq_20 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'window_start__day', 'window_end__day', 'listing'] @@ -34,21 +34,21 @@ LEFT OUTER JOIN ( ***************************.dim_users_latest users_latest_src_26000 ON listings_src_26000.user_id = users_latest_src_26000.user_id -) subq_16 +) subq_25 ON ( - subq_11.listing = subq_16.listing + subq_20.listing = subq_25.listing ) AND ( ( - subq_11.metric_time__day >= subq_16.window_start__day + subq_20.metric_time__day >= subq_25.window_start__day ) AND ( ( - subq_11.metric_time__day < subq_16.window_end__day + subq_20.metric_time__day < subq_25.window_end__day ) OR ( - subq_16.window_end__day IS NULL + subq_25.window_end__day IS NULL ) ) ) GROUP BY - subq_11.metric_time__day - , subq_16.user__home_state_latest + subq_20.metric_time__day + , subq_25.user__home_state_latest diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql index a1b338c20a..04bc720914 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0.sql @@ -6,214 +6,214 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_9.metric_time__day - , subq_9.listing__lux_listing__is_confirmed_lux - , subq_9.bookings + subq_12.metric_time__day + , subq_12.listing__lux_listing__is_confirmed_lux + , subq_12.bookings FROM ( -- Aggregate Measures SELECT - subq_8.metric_time__day - , subq_8.listing__lux_listing__is_confirmed_lux - , SUM(subq_8.bookings) AS bookings + subq_11.metric_time__day + , subq_11.listing__lux_listing__is_confirmed_lux + , SUM(subq_11.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__lux_listing__is_confirmed_lux', 'metric_time__day'] SELECT - subq_7.metric_time__day - , subq_7.listing__lux_listing__is_confirmed_lux - , subq_7.bookings + subq_10.metric_time__day + , subq_10.listing__lux_listing__is_confirmed_lux + , subq_10.bookings FROM ( -- Join Standard Outputs SELECT - subq_6.lux_listing__is_confirmed_lux AS listing__lux_listing__is_confirmed_lux - , subq_6.lux_listing__window_start__day AS listing__lux_listing__window_start__day - , subq_6.lux_listing__window_end__day AS listing__lux_listing__window_end__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.user AS user - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.booking__user AS booking__user - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value + subq_9.lux_listing__is_confirmed_lux AS listing__lux_listing__is_confirmed_lux + , subq_9.lux_listing__window_start__day AS listing__lux_listing__window_start__day + , subq_9.lux_listing__window_end__day AS listing__lux_listing__window_end__day + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.user AS user + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.booking__user AS booking__user + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.user - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.booking__user - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.bookers - , subq_0.average_booking_value + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.user + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.booking__user + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.bookers + , subq_3.average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -300,44 +300,44 @@ FROM ( , bookings_source_src_26000.host_id AS booking__host , bookings_source_src_26000.guest_id AS booking__user FROM ***************************.fct_bookings bookings_source_src_26000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['lux_listing__is_confirmed_lux', 'lux_listing__window_start__day', 'lux_listing__window_end__day', 'listing'] SELECT - subq_5.lux_listing__window_start__day - , subq_5.lux_listing__window_end__day - , subq_5.listing - , subq_5.lux_listing__is_confirmed_lux + subq_8.lux_listing__window_start__day + , subq_8.lux_listing__window_end__day + , subq_8.listing + , subq_8.lux_listing__is_confirmed_lux FROM ( -- Join Standard Outputs SELECT - subq_4.is_confirmed_lux AS lux_listing__is_confirmed_lux - , subq_4.window_start__day AS lux_listing__window_start__day - , subq_4.window_start__week AS lux_listing__window_start__week - , subq_4.window_start__month AS lux_listing__window_start__month - , subq_4.window_start__quarter AS lux_listing__window_start__quarter - , subq_4.window_start__year AS lux_listing__window_start__year - , subq_4.window_start__extract_year AS lux_listing__window_start__extract_year - , subq_4.window_start__extract_quarter AS lux_listing__window_start__extract_quarter - , subq_4.window_start__extract_month AS lux_listing__window_start__extract_month - , subq_4.window_start__extract_day AS lux_listing__window_start__extract_day - , subq_4.window_start__extract_dow AS lux_listing__window_start__extract_dow - , subq_4.window_start__extract_doy AS lux_listing__window_start__extract_doy - , subq_4.window_end__day AS lux_listing__window_end__day - , subq_4.window_end__week AS lux_listing__window_end__week - , subq_4.window_end__month AS lux_listing__window_end__month - , subq_4.window_end__quarter AS lux_listing__window_end__quarter - , subq_4.window_end__year AS lux_listing__window_end__year - , subq_4.window_end__extract_year AS lux_listing__window_end__extract_year - , subq_4.window_end__extract_quarter AS lux_listing__window_end__extract_quarter - , subq_4.window_end__extract_month AS lux_listing__window_end__extract_month - , subq_4.window_end__extract_day AS lux_listing__window_end__extract_day - , subq_4.window_end__extract_dow AS lux_listing__window_end__extract_dow - , subq_4.window_end__extract_doy AS lux_listing__window_end__extract_doy - , subq_2.listing AS listing - , subq_2.lux_listing AS lux_listing - , subq_2.listing__lux_listing AS listing__lux_listing + subq_7.is_confirmed_lux AS lux_listing__is_confirmed_lux + , subq_7.window_start__day AS lux_listing__window_start__day + , subq_7.window_start__week AS lux_listing__window_start__week + , subq_7.window_start__month AS lux_listing__window_start__month + , subq_7.window_start__quarter AS lux_listing__window_start__quarter + , subq_7.window_start__year AS lux_listing__window_start__year + , subq_7.window_start__extract_year AS lux_listing__window_start__extract_year + , subq_7.window_start__extract_quarter AS lux_listing__window_start__extract_quarter + , subq_7.window_start__extract_month AS lux_listing__window_start__extract_month + , subq_7.window_start__extract_day AS lux_listing__window_start__extract_day + , subq_7.window_start__extract_dow AS lux_listing__window_start__extract_dow + , subq_7.window_start__extract_doy AS lux_listing__window_start__extract_doy + , subq_7.window_end__day AS lux_listing__window_end__day + , subq_7.window_end__week AS lux_listing__window_end__week + , subq_7.window_end__month AS lux_listing__window_end__month + , subq_7.window_end__quarter AS lux_listing__window_end__quarter + , subq_7.window_end__year AS lux_listing__window_end__year + , subq_7.window_end__extract_year AS lux_listing__window_end__extract_year + , subq_7.window_end__extract_quarter AS lux_listing__window_end__extract_quarter + , subq_7.window_end__extract_month AS lux_listing__window_end__extract_month + , subq_7.window_end__extract_day AS lux_listing__window_end__extract_day + , subq_7.window_end__extract_dow AS lux_listing__window_end__extract_dow + , subq_7.window_end__extract_doy AS lux_listing__window_end__extract_doy + , subq_5.listing AS listing + , subq_5.lux_listing AS lux_listing + , subq_5.listing__lux_listing AS listing__lux_listing FROM ( -- Read Elements From Semantic Model 'lux_listing_mapping' SELECT @@ -345,7 +345,7 @@ FROM ( , lux_listing_mapping_src_26000.lux_listing_id AS lux_listing , lux_listing_mapping_src_26000.lux_listing_id AS listing__lux_listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_26000 - ) subq_2 + ) subq_5 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'is_confirmed_lux', @@ -397,53 +397,53 @@ FROM ( -- 'lux_listing', -- ] SELECT - subq_3.window_start__day - , subq_3.window_start__week - , subq_3.window_start__month - , subq_3.window_start__quarter - , subq_3.window_start__year - , subq_3.window_start__extract_year - , subq_3.window_start__extract_quarter - , subq_3.window_start__extract_month - , subq_3.window_start__extract_day - , subq_3.window_start__extract_dow - , subq_3.window_start__extract_doy - , subq_3.window_end__day - , subq_3.window_end__week - , subq_3.window_end__month - , subq_3.window_end__quarter - , subq_3.window_end__year - , subq_3.window_end__extract_year - , subq_3.window_end__extract_quarter - , subq_3.window_end__extract_month - , subq_3.window_end__extract_day - , subq_3.window_end__extract_dow - , subq_3.window_end__extract_doy - , subq_3.lux_listing__window_start__day - , subq_3.lux_listing__window_start__week - , subq_3.lux_listing__window_start__month - , subq_3.lux_listing__window_start__quarter - , subq_3.lux_listing__window_start__year - , subq_3.lux_listing__window_start__extract_year - , subq_3.lux_listing__window_start__extract_quarter - , subq_3.lux_listing__window_start__extract_month - , subq_3.lux_listing__window_start__extract_day - , subq_3.lux_listing__window_start__extract_dow - , subq_3.lux_listing__window_start__extract_doy - , subq_3.lux_listing__window_end__day - , subq_3.lux_listing__window_end__week - , subq_3.lux_listing__window_end__month - , subq_3.lux_listing__window_end__quarter - , subq_3.lux_listing__window_end__year - , subq_3.lux_listing__window_end__extract_year - , subq_3.lux_listing__window_end__extract_quarter - , subq_3.lux_listing__window_end__extract_month - , subq_3.lux_listing__window_end__extract_day - , subq_3.lux_listing__window_end__extract_dow - , subq_3.lux_listing__window_end__extract_doy - , subq_3.lux_listing - , subq_3.is_confirmed_lux - , subq_3.lux_listing__is_confirmed_lux + subq_6.window_start__day + , subq_6.window_start__week + , subq_6.window_start__month + , subq_6.window_start__quarter + , subq_6.window_start__year + , subq_6.window_start__extract_year + , subq_6.window_start__extract_quarter + , subq_6.window_start__extract_month + , subq_6.window_start__extract_day + , subq_6.window_start__extract_dow + , subq_6.window_start__extract_doy + , subq_6.window_end__day + , subq_6.window_end__week + , subq_6.window_end__month + , subq_6.window_end__quarter + , subq_6.window_end__year + , subq_6.window_end__extract_year + , subq_6.window_end__extract_quarter + , subq_6.window_end__extract_month + , subq_6.window_end__extract_day + , subq_6.window_end__extract_dow + , subq_6.window_end__extract_doy + , subq_6.lux_listing__window_start__day + , subq_6.lux_listing__window_start__week + , subq_6.lux_listing__window_start__month + , subq_6.lux_listing__window_start__quarter + , subq_6.lux_listing__window_start__year + , subq_6.lux_listing__window_start__extract_year + , subq_6.lux_listing__window_start__extract_quarter + , subq_6.lux_listing__window_start__extract_month + , subq_6.lux_listing__window_start__extract_day + , subq_6.lux_listing__window_start__extract_dow + , subq_6.lux_listing__window_start__extract_doy + , subq_6.lux_listing__window_end__day + , subq_6.lux_listing__window_end__week + , subq_6.lux_listing__window_end__month + , subq_6.lux_listing__window_end__quarter + , subq_6.lux_listing__window_end__year + , subq_6.lux_listing__window_end__extract_year + , subq_6.lux_listing__window_end__extract_quarter + , subq_6.lux_listing__window_end__extract_month + , subq_6.lux_listing__window_end__extract_day + , subq_6.lux_listing__window_end__extract_dow + , subq_6.lux_listing__window_end__extract_doy + , subq_6.lux_listing + , subq_6.is_confirmed_lux + , subq_6.lux_listing__is_confirmed_lux FROM ( -- Read Elements From Semantic Model 'lux_listings' SELECT @@ -495,29 +495,29 @@ FROM ( , lux_listings_src_26000.is_confirmed_lux AS lux_listing__is_confirmed_lux , lux_listings_src_26000.lux_listing_id AS lux_listing FROM ***************************.dim_lux_listings lux_listings_src_26000 - ) subq_3 - ) subq_4 + ) subq_6 + ) subq_7 ON - subq_2.lux_listing = subq_4.lux_listing - ) subq_5 - ) subq_6 + subq_5.lux_listing = subq_7.lux_listing + ) subq_8 + ) subq_9 ON ( - subq_1.listing = subq_6.listing + subq_4.listing = subq_9.listing ) AND ( ( - subq_1.metric_time__day >= subq_6.lux_listing__window_start__day + subq_4.metric_time__day >= subq_9.lux_listing__window_start__day ) AND ( ( - subq_1.metric_time__day < subq_6.lux_listing__window_end__day + subq_4.metric_time__day < subq_9.lux_listing__window_end__day ) OR ( - subq_6.lux_listing__window_end__day IS NULL + subq_9.lux_listing__window_end__day IS NULL ) ) ) - ) subq_7 - ) subq_8 + ) subq_10 + ) subq_11 GROUP BY - subq_8.metric_time__day - , subq_8.listing__lux_listing__is_confirmed_lux -) subq_9 + subq_11.metric_time__day + , subq_11.listing__lux_listing__is_confirmed_lux +) subq_12 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql index cefee7b8b1..5ea5f63922 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multi_hop_to_scd_dimension__plan0_optimized.sql @@ -9,9 +9,9 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day AS metric_time__day - , subq_16.lux_listing__is_confirmed_lux AS listing__lux_listing__is_confirmed_lux - , SUM(subq_11.bookings) AS bookings + subq_14.metric_time__day AS metric_time__day + , subq_19.lux_listing__is_confirmed_lux AS listing__lux_listing__is_confirmed_lux + , SUM(subq_14.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_26000 -) subq_11 +) subq_14 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['lux_listing__is_confirmed_lux', 'lux_listing__window_start__day', 'lux_listing__window_end__day', 'listing'] @@ -34,21 +34,21 @@ LEFT OUTER JOIN ( ***************************.dim_lux_listings lux_listings_src_26000 ON lux_listing_mapping_src_26000.lux_listing_id = lux_listings_src_26000.lux_listing_id -) subq_16 +) subq_19 ON ( - subq_11.listing = subq_16.listing + subq_14.listing = subq_19.listing ) AND ( ( - subq_11.metric_time__day >= subq_16.lux_listing__window_start__day + subq_14.metric_time__day >= subq_19.lux_listing__window_start__day ) AND ( ( - subq_11.metric_time__day < subq_16.lux_listing__window_end__day + subq_14.metric_time__day < subq_19.lux_listing__window_end__day ) OR ( - subq_16.lux_listing__window_end__day IS NULL + subq_19.lux_listing__window_end__day IS NULL ) ) ) GROUP BY - subq_11.metric_time__day - , subq_16.lux_listing__is_confirmed_lux + subq_14.metric_time__day + , subq_19.lux_listing__is_confirmed_lux diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0.sql index 2f24b4f596..87fd2b7e7f 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0.sql @@ -6,144 +6,144 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_11.account_id__customer_id__customer_name - , subq_11.txn_count + subq_14.account_id__customer_id__customer_name + , subq_14.txn_count FROM ( -- Aggregate Measures SELECT - subq_10.account_id__customer_id__customer_name - , SUM(subq_10.txn_count) AS txn_count + subq_13.account_id__customer_id__customer_name + , SUM(subq_13.txn_count) AS txn_count FROM ( -- Pass Only Elements: ['txn_count', 'account_id__customer_id__customer_name'] SELECT - subq_9.account_id__customer_id__customer_name - , subq_9.txn_count + subq_12.account_id__customer_id__customer_name + , subq_12.txn_count FROM ( -- Join Standard Outputs SELECT - subq_8.customer_id__customer_name AS account_id__customer_id__customer_name - , subq_8.ds_partitioned__day AS account_id__ds_partitioned__day - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_1.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_1.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_1.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_1.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_1.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_1.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_1.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_1.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_1.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_1.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_1.account_id__ds__day AS account_id__ds__day - , subq_1.account_id__ds__week AS account_id__ds__week - , subq_1.account_id__ds__month AS account_id__ds__month - , subq_1.account_id__ds__quarter AS account_id__ds__quarter - , subq_1.account_id__ds__year AS account_id__ds__year - , subq_1.account_id__ds__extract_year AS account_id__ds__extract_year - , subq_1.account_id__ds__extract_quarter AS account_id__ds__extract_quarter - , subq_1.account_id__ds__extract_month AS account_id__ds__extract_month - , subq_1.account_id__ds__extract_day AS account_id__ds__extract_day - , subq_1.account_id__ds__extract_dow AS account_id__ds__extract_dow - , subq_1.account_id__ds__extract_doy AS account_id__ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.account_id AS account_id - , subq_1.account_month AS account_month - , subq_1.account_id__account_month AS account_id__account_month - , subq_1.txn_count AS txn_count + subq_11.customer_id__customer_name AS account_id__customer_id__customer_name + , subq_11.ds_partitioned__day AS account_id__ds_partitioned__day + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_4.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_4.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_4.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_4.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_4.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_4.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_4.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_4.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_4.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_4.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_4.account_id__ds__day AS account_id__ds__day + , subq_4.account_id__ds__week AS account_id__ds__week + , subq_4.account_id__ds__month AS account_id__ds__month + , subq_4.account_id__ds__quarter AS account_id__ds__quarter + , subq_4.account_id__ds__year AS account_id__ds__year + , subq_4.account_id__ds__extract_year AS account_id__ds__extract_year + , subq_4.account_id__ds__extract_quarter AS account_id__ds__extract_quarter + , subq_4.account_id__ds__extract_month AS account_id__ds__extract_month + , subq_4.account_id__ds__extract_day AS account_id__ds__extract_day + , subq_4.account_id__ds__extract_dow AS account_id__ds__extract_dow + , subq_4.account_id__ds__extract_doy AS account_id__ds__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.account_id AS account_id + , subq_4.account_month AS account_month + , subq_4.account_id__account_month AS account_id__account_month + , subq_4.txn_count AS txn_count FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.account_id__ds_partitioned__day - , subq_0.account_id__ds_partitioned__week - , subq_0.account_id__ds_partitioned__month - , subq_0.account_id__ds_partitioned__quarter - , subq_0.account_id__ds_partitioned__year - , subq_0.account_id__ds_partitioned__extract_year - , subq_0.account_id__ds_partitioned__extract_quarter - , subq_0.account_id__ds_partitioned__extract_month - , subq_0.account_id__ds_partitioned__extract_day - , subq_0.account_id__ds_partitioned__extract_dow - , subq_0.account_id__ds_partitioned__extract_doy - , subq_0.account_id__ds__day - , subq_0.account_id__ds__week - , subq_0.account_id__ds__month - , subq_0.account_id__ds__quarter - , subq_0.account_id__ds__year - , subq_0.account_id__ds__extract_year - , subq_0.account_id__ds__extract_quarter - , subq_0.account_id__ds__extract_month - , subq_0.account_id__ds__extract_day - , subq_0.account_id__ds__extract_dow - , subq_0.account_id__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.account_id - , subq_0.account_month - , subq_0.account_id__account_month - , subq_0.txn_count + subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.account_id__ds_partitioned__day + , subq_3.account_id__ds_partitioned__week + , subq_3.account_id__ds_partitioned__month + , subq_3.account_id__ds_partitioned__quarter + , subq_3.account_id__ds_partitioned__year + , subq_3.account_id__ds_partitioned__extract_year + , subq_3.account_id__ds_partitioned__extract_quarter + , subq_3.account_id__ds_partitioned__extract_month + , subq_3.account_id__ds_partitioned__extract_day + , subq_3.account_id__ds_partitioned__extract_dow + , subq_3.account_id__ds_partitioned__extract_doy + , subq_3.account_id__ds__day + , subq_3.account_id__ds__week + , subq_3.account_id__ds__month + , subq_3.account_id__ds__quarter + , subq_3.account_id__ds__year + , subq_3.account_id__ds__extract_year + , subq_3.account_id__ds__extract_quarter + , subq_3.account_id__ds__extract_month + , subq_3.account_id__ds__extract_day + , subq_3.account_id__ds__extract_dow + , subq_3.account_id__ds__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.account_id + , subq_3.account_month + , subq_3.account_id__account_month + , subq_3.txn_count FROM ( -- Read Elements From Semantic Model 'account_month_txns' SELECT @@ -196,150 +196,150 @@ FROM ( , account_month_txns_src_22000.account_month AS account_id__account_month , account_month_txns_src_22000.account_id FROM ***************************.account_month_txns account_month_txns_src_22000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['customer_id__customer_name', 'ds_partitioned__day', 'account_id'] SELECT - subq_7.ds_partitioned__day - , subq_7.account_id - , subq_7.customer_id__customer_name + subq_10.ds_partitioned__day + , subq_10.account_id + , subq_10.customer_id__customer_name FROM ( -- Join Standard Outputs SELECT - subq_6.customer_name AS customer_id__customer_name - , subq_6.customer_atomic_weight AS customer_id__customer_atomic_weight - , subq_6.ds_partitioned__day AS customer_id__ds_partitioned__day - , subq_6.ds_partitioned__week AS customer_id__ds_partitioned__week - , subq_6.ds_partitioned__month AS customer_id__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS customer_id__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS customer_id__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS customer_id__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS customer_id__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS customer_id__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS customer_id__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS customer_id__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS customer_id__ds_partitioned__extract_doy - , subq_6.metric_time__day AS customer_id__metric_time__day - , subq_6.metric_time__week AS customer_id__metric_time__week - , subq_6.metric_time__month AS customer_id__metric_time__month - , subq_6.metric_time__quarter AS customer_id__metric_time__quarter - , subq_6.metric_time__year AS customer_id__metric_time__year - , subq_6.metric_time__extract_year AS customer_id__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS customer_id__metric_time__extract_month - , subq_6.metric_time__extract_day AS customer_id__metric_time__extract_day - , subq_6.metric_time__extract_dow AS customer_id__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS customer_id__metric_time__extract_doy - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_3.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_3.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_3.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_3.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_3.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_3.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_3.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_3.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_3.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_3.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_3.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day - , subq_3.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week - , subq_3.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month - , subq_3.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter - , subq_3.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year - , subq_3.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year - , subq_3.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter - , subq_3.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month - , subq_3.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day - , subq_3.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow - , subq_3.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.account_id AS account_id - , subq_3.customer_id AS customer_id - , subq_3.account_id__customer_id AS account_id__customer_id - , subq_3.bridge_account__account_id AS bridge_account__account_id - , subq_3.bridge_account__customer_id AS bridge_account__customer_id - , subq_3.extra_dim AS extra_dim - , subq_3.account_id__extra_dim AS account_id__extra_dim - , subq_3.bridge_account__extra_dim AS bridge_account__extra_dim - , subq_3.account_customer_combos AS account_customer_combos + subq_9.customer_name AS customer_id__customer_name + , subq_9.customer_atomic_weight AS customer_id__customer_atomic_weight + , subq_9.ds_partitioned__day AS customer_id__ds_partitioned__day + , subq_9.ds_partitioned__week AS customer_id__ds_partitioned__week + , subq_9.ds_partitioned__month AS customer_id__ds_partitioned__month + , subq_9.ds_partitioned__quarter AS customer_id__ds_partitioned__quarter + , subq_9.ds_partitioned__year AS customer_id__ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS customer_id__ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS customer_id__ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS customer_id__ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS customer_id__ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS customer_id__ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS customer_id__ds_partitioned__extract_doy + , subq_9.metric_time__day AS customer_id__metric_time__day + , subq_9.metric_time__week AS customer_id__metric_time__week + , subq_9.metric_time__month AS customer_id__metric_time__month + , subq_9.metric_time__quarter AS customer_id__metric_time__quarter + , subq_9.metric_time__year AS customer_id__metric_time__year + , subq_9.metric_time__extract_year AS customer_id__metric_time__extract_year + , subq_9.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter + , subq_9.metric_time__extract_month AS customer_id__metric_time__extract_month + , subq_9.metric_time__extract_day AS customer_id__metric_time__extract_day + , subq_9.metric_time__extract_dow AS customer_id__metric_time__extract_dow + , subq_9.metric_time__extract_doy AS customer_id__metric_time__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_6.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_6.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_6.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_6.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_6.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_6.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_6.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_6.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_6.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_6.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_6.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day + , subq_6.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week + , subq_6.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month + , subq_6.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter + , subq_6.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year + , subq_6.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year + , subq_6.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter + , subq_6.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month + , subq_6.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day + , subq_6.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow + , subq_6.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy + , subq_6.metric_time__day AS metric_time__day + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.account_id AS account_id + , subq_6.customer_id AS customer_id + , subq_6.account_id__customer_id AS account_id__customer_id + , subq_6.bridge_account__account_id AS bridge_account__account_id + , subq_6.bridge_account__customer_id AS bridge_account__customer_id + , subq_6.extra_dim AS extra_dim + , subq_6.account_id__extra_dim AS account_id__extra_dim + , subq_6.bridge_account__extra_dim AS bridge_account__extra_dim + , subq_6.account_customer_combos AS account_customer_combos FROM ( -- Metric Time Dimension 'ds_partitioned' SELECT - subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.account_id__ds_partitioned__day - , subq_2.account_id__ds_partitioned__week - , subq_2.account_id__ds_partitioned__month - , subq_2.account_id__ds_partitioned__quarter - , subq_2.account_id__ds_partitioned__year - , subq_2.account_id__ds_partitioned__extract_year - , subq_2.account_id__ds_partitioned__extract_quarter - , subq_2.account_id__ds_partitioned__extract_month - , subq_2.account_id__ds_partitioned__extract_day - , subq_2.account_id__ds_partitioned__extract_dow - , subq_2.account_id__ds_partitioned__extract_doy - , subq_2.bridge_account__ds_partitioned__day - , subq_2.bridge_account__ds_partitioned__week - , subq_2.bridge_account__ds_partitioned__month - , subq_2.bridge_account__ds_partitioned__quarter - , subq_2.bridge_account__ds_partitioned__year - , subq_2.bridge_account__ds_partitioned__extract_year - , subq_2.bridge_account__ds_partitioned__extract_quarter - , subq_2.bridge_account__ds_partitioned__extract_month - , subq_2.bridge_account__ds_partitioned__extract_day - , subq_2.bridge_account__ds_partitioned__extract_dow - , subq_2.bridge_account__ds_partitioned__extract_doy - , subq_2.ds_partitioned__day AS metric_time__day - , subq_2.ds_partitioned__week AS metric_time__week - , subq_2.ds_partitioned__month AS metric_time__month - , subq_2.ds_partitioned__quarter AS metric_time__quarter - , subq_2.ds_partitioned__year AS metric_time__year - , subq_2.ds_partitioned__extract_year AS metric_time__extract_year - , subq_2.ds_partitioned__extract_quarter AS metric_time__extract_quarter - , subq_2.ds_partitioned__extract_month AS metric_time__extract_month - , subq_2.ds_partitioned__extract_day AS metric_time__extract_day - , subq_2.ds_partitioned__extract_dow AS metric_time__extract_dow - , subq_2.ds_partitioned__extract_doy AS metric_time__extract_doy - , subq_2.account_id - , subq_2.customer_id - , subq_2.account_id__customer_id - , subq_2.bridge_account__account_id - , subq_2.bridge_account__customer_id - , subq_2.extra_dim - , subq_2.account_id__extra_dim - , subq_2.bridge_account__extra_dim - , subq_2.account_customer_combos + subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.account_id__ds_partitioned__day + , subq_5.account_id__ds_partitioned__week + , subq_5.account_id__ds_partitioned__month + , subq_5.account_id__ds_partitioned__quarter + , subq_5.account_id__ds_partitioned__year + , subq_5.account_id__ds_partitioned__extract_year + , subq_5.account_id__ds_partitioned__extract_quarter + , subq_5.account_id__ds_partitioned__extract_month + , subq_5.account_id__ds_partitioned__extract_day + , subq_5.account_id__ds_partitioned__extract_dow + , subq_5.account_id__ds_partitioned__extract_doy + , subq_5.bridge_account__ds_partitioned__day + , subq_5.bridge_account__ds_partitioned__week + , subq_5.bridge_account__ds_partitioned__month + , subq_5.bridge_account__ds_partitioned__quarter + , subq_5.bridge_account__ds_partitioned__year + , subq_5.bridge_account__ds_partitioned__extract_year + , subq_5.bridge_account__ds_partitioned__extract_quarter + , subq_5.bridge_account__ds_partitioned__extract_month + , subq_5.bridge_account__ds_partitioned__extract_day + , subq_5.bridge_account__ds_partitioned__extract_dow + , subq_5.bridge_account__ds_partitioned__extract_doy + , subq_5.ds_partitioned__day AS metric_time__day + , subq_5.ds_partitioned__week AS metric_time__week + , subq_5.ds_partitioned__month AS metric_time__month + , subq_5.ds_partitioned__quarter AS metric_time__quarter + , subq_5.ds_partitioned__year AS metric_time__year + , subq_5.ds_partitioned__extract_year AS metric_time__extract_year + , subq_5.ds_partitioned__extract_quarter AS metric_time__extract_quarter + , subq_5.ds_partitioned__extract_month AS metric_time__extract_month + , subq_5.ds_partitioned__extract_day AS metric_time__extract_day + , subq_5.ds_partitioned__extract_dow AS metric_time__extract_dow + , subq_5.ds_partitioned__extract_doy AS metric_time__extract_doy + , subq_5.account_id + , subq_5.customer_id + , subq_5.account_id__customer_id + , subq_5.bridge_account__account_id + , subq_5.bridge_account__customer_id + , subq_5.extra_dim + , subq_5.account_id__extra_dim + , subq_5.bridge_account__extra_dim + , subq_5.account_customer_combos FROM ( -- Read Elements From Semantic Model 'bridge_table' SELECT @@ -386,8 +386,8 @@ FROM ( , bridge_table_src_22000.account_id AS bridge_account__account_id , bridge_table_src_22000.customer_id AS bridge_account__customer_id FROM ***************************.bridge_table bridge_table_src_22000 - ) subq_2 - ) subq_3 + ) subq_5 + ) subq_6 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'customer_name', @@ -430,86 +430,86 @@ FROM ( -- 'customer_id', -- ] SELECT - subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.customer_id__ds_partitioned__day - , subq_5.customer_id__ds_partitioned__week - , subq_5.customer_id__ds_partitioned__month - , subq_5.customer_id__ds_partitioned__quarter - , subq_5.customer_id__ds_partitioned__year - , subq_5.customer_id__ds_partitioned__extract_year - , subq_5.customer_id__ds_partitioned__extract_quarter - , subq_5.customer_id__ds_partitioned__extract_month - , subq_5.customer_id__ds_partitioned__extract_day - , subq_5.customer_id__ds_partitioned__extract_dow - , subq_5.customer_id__ds_partitioned__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.customer_id - , subq_5.customer_name - , subq_5.customer_atomic_weight - , subq_5.customer_id__customer_name - , subq_5.customer_id__customer_atomic_weight + subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.customer_id__ds_partitioned__day + , subq_8.customer_id__ds_partitioned__week + , subq_8.customer_id__ds_partitioned__month + , subq_8.customer_id__ds_partitioned__quarter + , subq_8.customer_id__ds_partitioned__year + , subq_8.customer_id__ds_partitioned__extract_year + , subq_8.customer_id__ds_partitioned__extract_quarter + , subq_8.customer_id__ds_partitioned__extract_month + , subq_8.customer_id__ds_partitioned__extract_day + , subq_8.customer_id__ds_partitioned__extract_dow + , subq_8.customer_id__ds_partitioned__extract_doy + , subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.metric_time__month + , subq_8.metric_time__quarter + , subq_8.metric_time__year + , subq_8.metric_time__extract_year + , subq_8.metric_time__extract_quarter + , subq_8.metric_time__extract_month + , subq_8.metric_time__extract_day + , subq_8.metric_time__extract_dow + , subq_8.metric_time__extract_doy + , subq_8.customer_id + , subq_8.customer_name + , subq_8.customer_atomic_weight + , subq_8.customer_id__customer_name + , subq_8.customer_id__customer_atomic_weight FROM ( -- Metric Time Dimension 'ds_partitioned' SELECT - subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.customer_id__ds_partitioned__day - , subq_4.customer_id__ds_partitioned__week - , subq_4.customer_id__ds_partitioned__month - , subq_4.customer_id__ds_partitioned__quarter - , subq_4.customer_id__ds_partitioned__year - , subq_4.customer_id__ds_partitioned__extract_year - , subq_4.customer_id__ds_partitioned__extract_quarter - , subq_4.customer_id__ds_partitioned__extract_month - , subq_4.customer_id__ds_partitioned__extract_day - , subq_4.customer_id__ds_partitioned__extract_dow - , subq_4.customer_id__ds_partitioned__extract_doy - , subq_4.ds_partitioned__day AS metric_time__day - , subq_4.ds_partitioned__week AS metric_time__week - , subq_4.ds_partitioned__month AS metric_time__month - , subq_4.ds_partitioned__quarter AS metric_time__quarter - , subq_4.ds_partitioned__year AS metric_time__year - , subq_4.ds_partitioned__extract_year AS metric_time__extract_year - , subq_4.ds_partitioned__extract_quarter AS metric_time__extract_quarter - , subq_4.ds_partitioned__extract_month AS metric_time__extract_month - , subq_4.ds_partitioned__extract_day AS metric_time__extract_day - , subq_4.ds_partitioned__extract_dow AS metric_time__extract_dow - , subq_4.ds_partitioned__extract_doy AS metric_time__extract_doy - , subq_4.customer_id - , subq_4.customer_name - , subq_4.customer_atomic_weight - , subq_4.customer_id__customer_name - , subq_4.customer_id__customer_atomic_weight - , subq_4.customers + subq_7.ds_partitioned__day + , subq_7.ds_partitioned__week + , subq_7.ds_partitioned__month + , subq_7.ds_partitioned__quarter + , subq_7.ds_partitioned__year + , subq_7.ds_partitioned__extract_year + , subq_7.ds_partitioned__extract_quarter + , subq_7.ds_partitioned__extract_month + , subq_7.ds_partitioned__extract_day + , subq_7.ds_partitioned__extract_dow + , subq_7.ds_partitioned__extract_doy + , subq_7.customer_id__ds_partitioned__day + , subq_7.customer_id__ds_partitioned__week + , subq_7.customer_id__ds_partitioned__month + , subq_7.customer_id__ds_partitioned__quarter + , subq_7.customer_id__ds_partitioned__year + , subq_7.customer_id__ds_partitioned__extract_year + , subq_7.customer_id__ds_partitioned__extract_quarter + , subq_7.customer_id__ds_partitioned__extract_month + , subq_7.customer_id__ds_partitioned__extract_day + , subq_7.customer_id__ds_partitioned__extract_dow + , subq_7.customer_id__ds_partitioned__extract_doy + , subq_7.ds_partitioned__day AS metric_time__day + , subq_7.ds_partitioned__week AS metric_time__week + , subq_7.ds_partitioned__month AS metric_time__month + , subq_7.ds_partitioned__quarter AS metric_time__quarter + , subq_7.ds_partitioned__year AS metric_time__year + , subq_7.ds_partitioned__extract_year AS metric_time__extract_year + , subq_7.ds_partitioned__extract_quarter AS metric_time__extract_quarter + , subq_7.ds_partitioned__extract_month AS metric_time__extract_month + , subq_7.ds_partitioned__extract_day AS metric_time__extract_day + , subq_7.ds_partitioned__extract_dow AS metric_time__extract_dow + , subq_7.ds_partitioned__extract_doy AS metric_time__extract_doy + , subq_7.customer_id + , subq_7.customer_name + , subq_7.customer_atomic_weight + , subq_7.customer_id__customer_name + , subq_7.customer_id__customer_atomic_weight + , subq_7.customers FROM ( -- Read Elements From Semantic Model 'customer_table' SELECT @@ -542,25 +542,25 @@ FROM ( , EXTRACT(doy FROM customer_table_src_22000.ds_partitioned) AS customer_id__ds_partitioned__extract_doy , customer_table_src_22000.customer_id FROM ***************************.customer_table customer_table_src_22000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_7 + ) subq_8 + ) subq_9 ON ( - subq_3.customer_id = subq_6.customer_id + subq_6.customer_id = subq_9.customer_id ) AND ( - subq_3.ds_partitioned__day = subq_6.ds_partitioned__day + subq_6.ds_partitioned__day = subq_9.ds_partitioned__day ) - ) subq_7 - ) subq_8 + ) subq_10 + ) subq_11 ON ( - subq_1.account_id = subq_8.account_id + subq_4.account_id = subq_11.account_id ) AND ( - subq_1.ds_partitioned__day = subq_8.ds_partitioned__day + subq_4.ds_partitioned__day = subq_11.ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_12 + ) subq_13 GROUP BY - subq_10.account_id__customer_id__customer_name -) subq_11 + subq_13.account_id__customer_id__customer_name +) subq_14 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0_optimized.sql index 8e437c20f2..f69cba73cf 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multihop_node__plan0_optimized.sql @@ -9,7 +9,7 @@ sql_engine: DuckDB -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.customer_id__customer_name AS account_id__customer_id__customer_name + subq_23.customer_id__customer_name AS account_id__customer_id__customer_name , SUM(account_month_txns_src_22000.txn_count) AS txn_count FROM ***************************.account_month_txns account_month_txns_src_22000 LEFT OUTER JOIN ( @@ -28,12 +28,12 @@ LEFT OUTER JOIN ( ) AND ( DATE_TRUNC('day', bridge_table_src_22000.ds_partitioned) = DATE_TRUNC('day', customer_table_src_22000.ds_partitioned) ) -) subq_20 +) subq_23 ON ( - account_month_txns_src_22000.account_id = subq_20.account_id + account_month_txns_src_22000.account_id = subq_23.account_id ) AND ( - DATE_TRUNC('day', account_month_txns_src_22000.ds_partitioned) = subq_20.ds_partitioned__day + DATE_TRUNC('day', account_month_txns_src_22000.ds_partitioned) = subq_23.ds_partitioned__day ) GROUP BY - subq_20.customer_id__customer_name + subq_23.customer_id__customer_name diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql index d9f0c05bd6..4c72f4ed50 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0.sql @@ -4,222 +4,222 @@ sql_engine: DuckDB --- -- Combine Aggregated Outputs SELECT - MAX(subq_5.bookings) AS bookings - , MAX(subq_11.listings) AS listings + MAX(subq_7.bookings) AS bookings + , MAX(subq_13.listings) AS listings FROM ( -- Compute Metrics via Expressions SELECT - subq_4.bookings + subq_6.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_3.bookings) AS bookings + SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_2.bookings + subq_4.bookings FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,165 +312,165 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_2 - ) subq_3 - ) subq_4 -) subq_5 + ) subq_2 + ) subq_3 + WHERE subq_3.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 + ) subq_5 + ) subq_6 +) subq_7 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listings + subq_12.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_9.listings) AS listings + SUM(subq_11.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_8.listings + subq_10.listings FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.created_at__day - , subq_7.created_at__week - , subq_7.created_at__month - , subq_7.created_at__quarter - , subq_7.created_at__year - , subq_7.created_at__extract_year - , subq_7.created_at__extract_quarter - , subq_7.created_at__extract_month - , subq_7.created_at__extract_day - , subq_7.created_at__extract_dow - , subq_7.created_at__extract_doy - , subq_7.listing__ds__day - , subq_7.listing__ds__week - , subq_7.listing__ds__month - , subq_7.listing__ds__quarter - , subq_7.listing__ds__year - , subq_7.listing__ds__extract_year - , subq_7.listing__ds__extract_quarter - , subq_7.listing__ds__extract_month - , subq_7.listing__ds__extract_day - , subq_7.listing__ds__extract_dow - , subq_7.listing__ds__extract_doy - , subq_7.listing__created_at__day - , subq_7.listing__created_at__week - , subq_7.listing__created_at__month - , subq_7.listing__created_at__quarter - , subq_7.listing__created_at__year - , subq_7.listing__created_at__extract_year - , subq_7.listing__created_at__extract_quarter - , subq_7.listing__created_at__extract_month - , subq_7.listing__created_at__extract_day - , subq_7.listing__created_at__extract_dow - , subq_7.listing__created_at__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.listing - , subq_7.user - , subq_7.listing__user - , subq_7.country_latest - , subq_7.is_lux_latest - , subq_7.capacity_latest - , subq_7.listing__country_latest - , subq_7.listing__is_lux_latest - , subq_7.listing__capacity_latest - , subq_7.listings - , subq_7.largest_listing - , subq_7.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.created_at__day - , subq_6.created_at__week - , subq_6.created_at__month - , subq_6.created_at__quarter - , subq_6.created_at__year - , subq_6.created_at__extract_year - , subq_6.created_at__extract_quarter - , subq_6.created_at__extract_month - , subq_6.created_at__extract_day - , subq_6.created_at__extract_dow - , subq_6.created_at__extract_doy - , subq_6.listing__ds__day - , subq_6.listing__ds__week - , subq_6.listing__ds__month - , subq_6.listing__ds__quarter - , subq_6.listing__ds__year - , subq_6.listing__ds__extract_year - , subq_6.listing__ds__extract_quarter - , subq_6.listing__ds__extract_month - , subq_6.listing__ds__extract_day - , subq_6.listing__ds__extract_dow - , subq_6.listing__ds__extract_doy - , subq_6.listing__created_at__day - , subq_6.listing__created_at__week - , subq_6.listing__created_at__month - , subq_6.listing__created_at__quarter - , subq_6.listing__created_at__year - , subq_6.listing__created_at__extract_year - , subq_6.listing__created_at__extract_quarter - , subq_6.listing__created_at__extract_month - , subq_6.listing__created_at__extract_day - , subq_6.listing__created_at__extract_dow - , subq_6.listing__created_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.user - , subq_6.listing__user - , subq_6.country_latest - , subq_6.is_lux_latest - , subq_6.capacity_latest - , subq_6.listing__country_latest - , subq_6.listing__is_lux_latest - , subq_6.listing__capacity_latest - , subq_6.listings - , subq_6.largest_listing - , subq_6.smallest_listing + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.created_at__day + , subq_8.created_at__week + , subq_8.created_at__month + , subq_8.created_at__quarter + , subq_8.created_at__year + , subq_8.created_at__extract_year + , subq_8.created_at__extract_quarter + , subq_8.created_at__extract_month + , subq_8.created_at__extract_day + , subq_8.created_at__extract_dow + , subq_8.created_at__extract_doy + , subq_8.listing__ds__day + , subq_8.listing__ds__week + , subq_8.listing__ds__month + , subq_8.listing__ds__quarter + , subq_8.listing__ds__year + , subq_8.listing__ds__extract_year + , subq_8.listing__ds__extract_quarter + , subq_8.listing__ds__extract_month + , subq_8.listing__ds__extract_day + , subq_8.listing__ds__extract_dow + , subq_8.listing__ds__extract_doy + , subq_8.listing__created_at__day + , subq_8.listing__created_at__week + , subq_8.listing__created_at__month + , subq_8.listing__created_at__quarter + , subq_8.listing__created_at__year + , subq_8.listing__created_at__extract_year + , subq_8.listing__created_at__extract_quarter + , subq_8.listing__created_at__extract_month + , subq_8.listing__created_at__extract_day + , subq_8.listing__created_at__extract_dow + , subq_8.listing__created_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.user + , subq_8.listing__user + , subq_8.country_latest + , subq_8.is_lux_latest + , subq_8.capacity_latest + , subq_8.listing__country_latest + , subq_8.listing__is_lux_latest + , subq_8.listing__capacity_latest + , subq_8.listings + , subq_8.largest_listing + , subq_8.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -531,10 +531,10 @@ CROSS JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_8 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_8 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql index 22bd2f889f..03619e2700 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlPlan/DuckDB/test_multiple_metrics_no_dimensions__plan0_optimized.sql @@ -4,8 +4,8 @@ sql_engine: DuckDB --- -- Combine Aggregated Outputs SELECT - MAX(subq_17.bookings) AS bookings - , MAX(subq_23.listings) AS listings + MAX(subq_19.bookings) AS bookings + , MAX(subq_25.listings) AS listings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( SUM(1) AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-01' AND '2020-01-01' -) subq_17 +) subq_19 CROSS JOIN ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -29,4 +29,4 @@ CROSS JOIN ( SUM(1) AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2020-01-01' AND '2020-01-01' -) subq_23 +) subq_25 diff --git a/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0.sql index aafef7d451..ce28eb2ed8 100644 --- a/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0.sql @@ -6,52 +6,52 @@ sql_engine: DuckDB --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , COALESCE(subq_10.bookings, 0) AS bookings_fill_nulls_with_0 + subq_11.metric_time__day + , COALESCE(subq_11.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_9.metric_time__day - , subq_9.bookings + subq_10.metric_time__day + , subq_10.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__day AS metric_time__day - , subq_4.bookings AS bookings + subq_9.metric_time__day AS metric_time__day + , subq_5.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_7.metric_time__day + subq_8.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_6.metric_time__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_5.ds__day AS metric_time__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -68,223 +68,223 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__day - , SUM(subq_3.bookings) AS bookings + subq_4.metric_time__day + , SUM(subq_4.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_2.metric_time__day - , subq_2.bookings + subq_3.metric_time__day + , subq_3.bookings FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -377,16 +377,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__day - ) subq_4 + subq_4.metric_time__day + ) subq_5 ON - subq_8.metric_time__day = subq_4.metric_time__day - ) subq_9 - WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_10 + subq_9.metric_time__day = subq_5.metric_time__day + ) subq_10 + WHERE subq_10.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_11 diff --git a/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0_optimized.sql index b77e3140dd..42d3eaa887 100644 --- a/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_time_spine_join_rendering.py/SqlPlan/DuckDB/test_join_to_time_spine_with_queried_time_constraint__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_19.metric_time__day AS metric_time__day - , subq_15.bookings AS bookings + subq_20.metric_time__day AS metric_time__day + , subq_16.bookings AS bookings FROM ( -- Read From Time Spine 'mf_time_spine' -- Change Column Aliases @@ -23,7 +23,7 @@ FROM ( ds AS metric_time__day FROM ***************************.mf_time_spine time_spine_src_28006 WHERE ds BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_19 + ) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -39,11 +39,11 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_14 + ) subq_15 GROUP BY metric_time__day - ) subq_15 + ) subq_16 ON - subq_19.metric_time__day = subq_15.metric_time__day - WHERE subq_19.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_21 + subq_20.metric_time__day = subq_16.metric_time__day + WHERE subq_20.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_22