diff --git a/metricflow-semantics/metricflow_semantics/specs/metric_spec.py b/metricflow-semantics/metricflow_semantics/specs/metric_spec.py
index 3e0d21a35..d35851493 100644
--- a/metricflow-semantics/metricflow_semantics/specs/metric_spec.py
+++ b/metricflow-semantics/metricflow_semantics/specs/metric_spec.py
@@ -49,3 +49,13 @@ def has_time_offset(self) -> bool: # noqa: D102
def without_offset(self) -> MetricSpec:
"""Represents the metric spec with any time offsets removed."""
return MetricSpec(element_name=self.element_name, filter_spec_set=self.filter_spec_set, alias=self.alias)
+
+ def with_new_filter_spec_set(self, new_filter_spec_set: WhereFilterSpecSet) -> MetricSpec:
+ """Represents the metric spec with a new filter spec set."""
+ return MetricSpec(
+ element_name=self.element_name,
+ filter_spec_set=new_filter_spec_set,
+ alias=self.alias,
+ offset_window=self.offset_window,
+ offset_to_grain=self.offset_to_grain,
+ )
diff --git a/metricflow-semantics/metricflow_semantics/specs/where_filter/where_filter_spec_set.py b/metricflow-semantics/metricflow_semantics/specs/where_filter/where_filter_spec_set.py
index 8e039c534..3318e14b7 100644
--- a/metricflow-semantics/metricflow_semantics/specs/where_filter/where_filter_spec_set.py
+++ b/metricflow-semantics/metricflow_semantics/specs/where_filter/where_filter_spec_set.py
@@ -44,3 +44,13 @@ def merge(self, other: WhereFilterSpecSet) -> WhereFilterSpecSet:
metric_level_filter_specs=self.metric_level_filter_specs + other.metric_level_filter_specs,
query_level_filter_specs=self.query_level_filter_specs + other.query_level_filter_specs,
)
+
+ def replace_query_level_filter_specs(
+ self, new_query_level_filter_specs: Tuple[WhereFilterSpec, ...]
+ ) -> WhereFilterSpecSet:
+ """Return the same set but with the query level filter specs replaced."""
+ return WhereFilterSpecSet(
+ measure_level_filter_specs=self.measure_level_filter_specs,
+ metric_level_filter_specs=self.metric_level_filter_specs,
+ query_level_filter_specs=new_query_level_filter_specs,
+ )
diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/metrics.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/metrics.yaml
index 39300f648..4913cb679 100644
--- a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/metrics.yaml
+++ b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/metrics.yaml
@@ -724,7 +724,7 @@ metric:
description: bookings metric offset twice with tiered filters
type: derived
type_params:
- expr: bookings
+ expr: bookings_offset_once
metrics:
- name: bookings_offset_once
offset_window: 1 month
diff --git a/metricflow/dataflow/builder/builder_cache.py b/metricflow/dataflow/builder/builder_cache.py
index 79444561a..403e0fe34 100644
--- a/metricflow/dataflow/builder/builder_cache.py
+++ b/metricflow/dataflow/builder/builder_cache.py
@@ -1,11 +1,12 @@
from __future__ import annotations
from dataclasses import dataclass
-from typing import Optional
+from typing import Optional, Sequence
from metricflow_semantics.collection_helpers.lru_cache import LruCache
from metricflow_semantics.specs.linkable_spec_set import LinkableSpecSet
from metricflow_semantics.specs.metric_spec import MetricSpec
+from metricflow_semantics.specs.where_filter.where_filter_spec import WhereFilterSpec
from metricflow_semantics.specs.where_filter.where_filter_transform import WhereSpecFactory
from metricflow.dataflow.builder.measure_spec_properties import MeasureSpecProperties
@@ -39,6 +40,7 @@ class BuildAnyMetricOutputNodeParameterSet:
filter_spec_factory: WhereSpecFactory
predicate_pushdown_state: PredicatePushdownState
for_group_by_source_node: bool
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = ()
class DataflowPlanBuilderCache:
diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py
index c7cdc5ebb..a501f7175 100644
--- a/metricflow/dataflow/builder/dataflow_plan_builder.py
+++ b/metricflow/dataflow/builder/dataflow_plan_builder.py
@@ -245,6 +245,7 @@ def _build_aggregated_conversion_node(
window: Optional[MetricTimeWindow],
queried_linkable_specs: LinkableSpecSet,
predicate_pushdown_state: PredicatePushdownState,
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = (),
constant_properties: Optional[Sequence[ConstantPropertyInput]] = None,
) -> DataflowPlanNode:
"""Builds a node that contains aggregated values of conversions and opportunities."""
@@ -296,6 +297,7 @@ def _build_aggregated_conversion_node(
metric_input_measure_spec=base_measure_spec,
queried_linkable_specs=queried_linkable_specs,
predicate_pushdown_state=time_range_only_pushdown_state,
+ time_spine_filter_specs=time_spine_filter_specs,
)
# Build unaggregated conversions source node
@@ -371,6 +373,7 @@ def _build_aggregated_conversion_node(
queried_linkable_specs=queried_linkable_specs,
predicate_pushdown_state=disabled_pushdown_state,
measure_recipe=recipe_with_join_conversion_source_node,
+ time_spine_filter_specs=time_spine_filter_specs,
)
# Combine the aggregated opportunities and conversion data sets
@@ -384,6 +387,7 @@ def _build_conversion_metric_output_node(
queried_linkable_specs: LinkableSpecSet,
filter_spec_factory: WhereSpecFactory,
predicate_pushdown_state: PredicatePushdownState,
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = (),
for_group_by_source_node: bool = False,
) -> ComputeMetricsNode:
"""Builds a compute metric node for a conversion metric."""
@@ -427,6 +431,7 @@ def _build_conversion_metric_output_node(
entity_spec=entity_spec,
window=conversion_type_params.window,
constant_properties=conversion_type_params.constant_properties,
+ time_spine_filter_specs=time_spine_filter_specs,
)
return self.build_computed_metrics_node(
@@ -442,6 +447,7 @@ def _build_cumulative_metric_output_node(
queried_linkable_specs: LinkableSpecSet,
filter_spec_factory: WhereSpecFactory,
predicate_pushdown_state: PredicatePushdownState,
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = (),
for_group_by_source_node: bool = False,
) -> DataflowPlanNode:
# TODO: [custom granularity] Figure out how to support custom granularities as defaults
@@ -465,6 +471,7 @@ def _build_cumulative_metric_output_node(
filter_spec_factory=filter_spec_factory,
predicate_pushdown_state=predicate_pushdown_state,
for_group_by_source_node=for_group_by_source_node,
+ time_spine_filter_specs=time_spine_filter_specs,
)
# If a cumulative metric is queried without default granularity, it will need to be aggregated twice -
@@ -495,6 +502,7 @@ def _build_base_metric_output_node(
queried_linkable_specs: LinkableSpecSet,
filter_spec_factory: WhereSpecFactory,
predicate_pushdown_state: PredicatePushdownState,
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = (),
for_group_by_source_node: bool = False,
) -> ComputeMetricsNode:
"""Builds a node to compute a metric that is not defined from other metrics."""
@@ -549,6 +557,7 @@ def _build_base_metric_output_node(
metric_input_measure_spec=metric_input_measure_spec,
queried_linkable_specs=queried_linkable_specs,
predicate_pushdown_state=predicate_pushdown_state,
+ time_spine_filter_specs=time_spine_filter_specs,
)
return self.build_computed_metrics_node(
metric_spec=metric_spec,
@@ -563,73 +572,64 @@ def _build_derived_metric_output_node(
queried_linkable_specs: LinkableSpecSet,
filter_spec_factory: WhereSpecFactory,
predicate_pushdown_state: PredicatePushdownState,
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = (),
for_group_by_source_node: bool = False,
) -> DataflowPlanNode:
"""Builds a node to compute a metric defined from other metrics."""
- metric = self._metric_lookup.get_metric(metric_spec.reference)
- metric_input_specs = self._build_input_metric_specs_for_derived_metric(
- metric_reference=metric_spec.reference,
- filter_spec_factory=filter_spec_factory,
+ input_metric_specs = self._build_input_metric_specs(
+ metric_spec=metric_spec, filter_spec_factory=filter_spec_factory
)
logger.debug(
LazyFormat(
- lambda: f"For {metric.type} metric: {metric_spec}, needed metrics are:\n"
- f"{mf_pformat(metric_input_specs)}"
+ lambda: f"For derived metric {metric_spec}, needed metrics are:\n" f"{mf_pformat(input_metric_specs)}"
)
)
+ # Bugs:
+ # -- redundant specs at different levels (e.g., is_instant)
+ # -- time constraints not applied?
+ # -- metric input filters are applied 2x?
- required_linkable_specs = self.__get_required_linkable_specs(
- queried_linkable_specs=queried_linkable_specs, filter_specs=metric_spec.filter_spec_set.all_filter_specs
+ # Pushdown is disabled for offset metrics; we can't apply metric_time filters to the source node due to potential changes from the offset.
+ # TODO: update this conditional to only apply if there are metric_time filters?
+ metric_pushdown_state = (
+ PredicatePushdownState.with_pushdown_disabled() if metric_spec.has_time_offset else predicate_pushdown_state
)
parent_nodes: List[DataflowPlanNode] = []
+ for input_metric_spec in input_metric_specs:
+ # If metric is offset, we'll apply metric_time constraints after the offset because metric_time values may will have
+ # changed. This is only relevant for nested offset metrics? (TODO: Explain this better)
+ # TODO: does the above hold true for offset_to_grain? Or just offset_window?
+ # Time constraints will be applied by INNER JOINing to time spine.
+ input_metric_filter_set = input_metric_spec.filter_spec_set
+ query_level_metric_time_filter_specs: Tuple[WhereFilterSpec, ...] = ()
+ if input_metric_spec.has_time_offset:
+ # TODO: make this agg_time instead of metric_time
+ query_level_non_metric_time_filter_specs: Tuple[WhereFilterSpec, ...] = ()
+ for filter_spec in input_metric_filter_set.query_level_filter_specs:
+ # TODO: should be contains ONLY metric time; add a helper for that
+ if filter_spec.linkable_spec_set.contains_metric_time:
+ query_level_metric_time_filter_specs += (filter_spec,)
+ else:
+ query_level_non_metric_time_filter_specs += (filter_spec,)
+ input_metric_filter_set = input_metric_filter_set.replace_query_level_filter_specs(
+ query_level_non_metric_time_filter_specs
+ )
- # This is the filter that's defined for the metric in the configs.
- metric_definition_filter_specs = filter_spec_factory.create_from_where_filter_intersection(
- filter_location=WhereFilterLocation.for_metric(metric_spec.reference),
- filter_intersection=metric.filter,
- )
-
- for metric_input_spec in metric_input_specs:
- where_filter_spec_set = WhereFilterSpecSet(
- metric_level_filter_specs=tuple(metric_definition_filter_specs),
- )
-
- # These are the filters that's defined as part of the input metric.
- where_filter_spec_set = where_filter_spec_set.merge(metric_input_spec.filter_spec_set)
-
- # If metric is offset, we'll apply where constraint after offset to avoid removing values
- # unexpectedly. Time constraint will be applied by INNER JOINing to time spine.
- # We may consider encapsulating this in pushdown state later, but as of this moment pushdown
- # is about post-join to pre-join for dimension access, and relies on the builder to collect
- # predicates from query and metric specs and make them available at measure level.
- if not metric_spec.has_time_offset:
- where_filter_spec_set = where_filter_spec_set.merge(metric_spec.filter_spec_set)
- metric_pushdown_state = (
- predicate_pushdown_state
- if not metric_spec.has_time_offset
- else PredicatePushdownState.with_pushdown_disabled()
- )
-
- parent_nodes.append(
- self._build_any_metric_output_node(
- BuildAnyMetricOutputNodeParameterSet(
- metric_spec=MetricSpec(
- element_name=metric_input_spec.element_name,
- filter_spec_set=where_filter_spec_set,
- alias=metric_input_spec.alias,
- offset_window=metric_input_spec.offset_window,
- offset_to_grain=metric_input_spec.offset_to_grain,
- ),
- queried_linkable_specs=(
- queried_linkable_specs if not metric_spec.has_time_offset else required_linkable_specs
- ),
- filter_spec_factory=filter_spec_factory,
- predicate_pushdown_state=metric_pushdown_state,
- for_group_by_source_node=False,
- )
+ # Rewrite input metric spec with non-metric time filters
+ input_metric_spec = input_metric_spec.with_new_filter_spec_set(input_metric_filter_set)
+
+ input_metric_parent_node = self._build_any_metric_output_node(
+ BuildAnyMetricOutputNodeParameterSet(
+ metric_spec=input_metric_spec,
+ queried_linkable_specs=queried_linkable_specs,
+ filter_spec_factory=filter_spec_factory,
+ predicate_pushdown_state=metric_pushdown_state,
+ time_spine_filter_specs=query_level_metric_time_filter_specs,
+ for_group_by_source_node=False,
)
)
+ parent_nodes.append(input_metric_parent_node)
parent_node = (
parent_nodes[0]
@@ -648,35 +648,17 @@ def _build_derived_metric_output_node(
queried_agg_time_dimension_specs = queried_linkable_specs.included_agg_time_dimension_specs_for_metric(
metric_reference=metric_spec.reference, metric_lookup=self._metric_lookup
)
- assert (
- queried_agg_time_dimension_specs
- ), "Joining to time spine requires querying with metric_time or the appropriate agg_time_dimension."
output_node = JoinToTimeSpineNode.create(
parent_node=output_node,
requested_agg_time_dimension_specs=queried_agg_time_dimension_specs,
use_custom_agg_time_dimension=not queried_linkable_specs.contains_metric_time,
time_range_constraint=predicate_pushdown_state.time_range_constraint,
+ time_spine_filters=time_spine_filter_specs,
offset_window=metric_spec.offset_window,
offset_to_grain=metric_spec.offset_to_grain,
join_type=SqlJoinType.INNER,
)
- if len(metric_spec.filter_spec_set.all_filter_specs) > 0:
- output_node = WhereConstraintNode.create(
- parent_node=output_node, where_specs=metric_spec.filter_spec_set.all_filter_specs
- )
- specs_in_filters = set(
- linkable_spec
- for filter_spec in metric_spec.filter_spec_set.all_filter_specs
- for linkable_spec in filter_spec.linkable_specs
- )
- if not specs_in_filters.issubset(queried_linkable_specs.as_tuple):
- output_node = FilterElementsNode.create(
- parent_node=output_node,
- include_specs=InstanceSpecSet(metric_specs=(metric_spec,)).merge(
- InstanceSpecSet.create_from_specs(queried_linkable_specs.as_tuple)
- ),
- )
return output_node
def _build_any_metric_output_node(self, parameter_set: BuildAnyMetricOutputNodeParameterSet) -> DataflowPlanNode:
@@ -698,6 +680,7 @@ def _build_any_metric_output_node_non_cached(
filter_spec_factory = parameter_set.filter_spec_factory
predicate_pushdown_state = parameter_set.predicate_pushdown_state
for_group_by_source_node = parameter_set.for_group_by_source_node
+ time_spine_filter_specs = parameter_set.time_spine_filter_specs
metric = self._metric_lookup.get_metric(metric_spec.reference)
@@ -708,6 +691,7 @@ def _build_any_metric_output_node_non_cached(
filter_spec_factory=filter_spec_factory,
predicate_pushdown_state=predicate_pushdown_state,
for_group_by_source_node=for_group_by_source_node,
+ time_spine_filter_specs=time_spine_filter_specs,
)
elif metric.type is MetricType.CUMULATIVE:
@@ -717,6 +701,7 @@ def _build_any_metric_output_node_non_cached(
filter_spec_factory=filter_spec_factory,
predicate_pushdown_state=predicate_pushdown_state,
for_group_by_source_node=for_group_by_source_node,
+ time_spine_filter_specs=time_spine_filter_specs,
)
elif metric.type is MetricType.RATIO or metric.type is MetricType.DERIVED:
@@ -726,6 +711,7 @@ def _build_any_metric_output_node_non_cached(
filter_spec_factory=filter_spec_factory,
predicate_pushdown_state=predicate_pushdown_state,
for_group_by_source_node=for_group_by_source_node,
+ time_spine_filter_specs=time_spine_filter_specs,
)
elif metric.type is MetricType.CONVERSION:
return self._build_conversion_metric_output_node(
@@ -734,6 +720,7 @@ def _build_any_metric_output_node_non_cached(
filter_spec_factory=filter_spec_factory,
predicate_pushdown_state=predicate_pushdown_state,
for_group_by_source_node=for_group_by_source_node,
+ time_spine_filter_specs=time_spine_filter_specs,
)
assert_values_exhausted(metric.type)
@@ -1383,42 +1370,54 @@ def _build_filter_specs_for_input_measure(
)
return filter_spec_set.merge(descendent_filter_spec_set)
- def _build_input_metric_specs_for_derived_metric(
+ def _build_input_metric_specs(
self,
- metric_reference: MetricReference,
+ metric_spec: MetricSpec,
filter_spec_factory: WhereSpecFactory,
) -> Sequence[MetricSpec]:
"""Return the metric specs referenced by the metric. Current use case is for derived metrics."""
- metric = self._metric_lookup.get_metric(metric_reference)
+ metric = self._metric_lookup.get_metric(metric_spec.reference)
input_metric_specs: List[MetricSpec] = []
+ # The metric spec already has the query-level filter specs. If the outer metric was also an input metric on another
+ # derived metric (in the case of a nested derived metric) any metric_level_filter_specs here were inherited from that
+ # input metric and should be treated as query-level filters here.
+ query_level_filter_specs = (
+ metric_spec.filter_spec_set.query_level_filter_specs + metric_spec.filter_spec_set.metric_level_filter_specs
+ )
+
+ # For the purpose of input metrics, outer metric filters should be treated as query-level filters.
+ outer_metric_filter_specs = filter_spec_factory.create_from_where_filter_intersection(
+ filter_location=WhereFilterLocation.for_metric(metric_reference=metric_spec.reference),
+ filter_intersection=metric.filter,
+ )
+ query_level_filter_specs += tuple(outer_metric_filter_specs)
+
for input_metric in metric.input_metrics:
+ input_metric_filter_specs = filter_spec_factory.create_from_where_filter_intersection(
+ filter_location=WhereFilterLocation.for_input_metric(input_metric_reference=input_metric.as_reference),
+ filter_intersection=input_metric.filter,
+ )
filter_spec_set = WhereFilterSpecSet(
- metric_level_filter_specs=tuple(
- filter_spec_factory.create_from_where_filter_intersection(
- filter_location=WhereFilterLocation.for_input_metric(
- input_metric_reference=input_metric.as_reference
- ),
- filter_intersection=input_metric.filter,
- )
- ),
+ metric_level_filter_specs=tuple(input_metric_filter_specs),
+ query_level_filter_specs=tuple(query_level_filter_specs),
)
- spec = MetricSpec(
+ offset_window = (
+ PydanticMetricTimeWindow(
+ count=input_metric.offset_window.count, granularity=input_metric.offset_window.granularity
+ )
+ if input_metric.offset_window
+ else None
+ )
+ input_metric_spec = MetricSpec(
element_name=input_metric.name,
filter_spec_set=filter_spec_set,
alias=input_metric.alias,
- offset_window=(
- PydanticMetricTimeWindow(
- count=input_metric.offset_window.count,
- granularity=input_metric.offset_window.granularity,
- )
- if input_metric.offset_window
- else None
- ),
+ offset_window=offset_window,
offset_to_grain=input_metric.offset_to_grain,
)
- input_metric_specs.append(spec)
+ input_metric_specs.append(input_metric_spec)
return tuple(input_metric_specs)
def build_aggregated_measure(
@@ -1426,6 +1425,7 @@ def build_aggregated_measure(
metric_input_measure_spec: MetricInputMeasureSpec,
queried_linkable_specs: LinkableSpecSet,
predicate_pushdown_state: PredicatePushdownState,
+ time_spine_filter_specs: Sequence[WhereFilterSpec],
measure_recipe: Optional[SourceNodeRecipe] = None,
) -> DataflowPlanNode:
"""Returns a node where the measures are aggregated by the linkable specs and constrained appropriately.
@@ -1449,6 +1449,7 @@ def build_aggregated_measure(
queried_linkable_specs=queried_linkable_specs,
predicate_pushdown_state=predicate_pushdown_state,
measure_recipe=measure_recipe,
+ time_spine_filter_specs=time_spine_filter_specs,
)
def __get_required_linkable_specs(
@@ -1497,6 +1498,7 @@ def _build_aggregated_measure_from_measure_source_node(
queried_linkable_specs: LinkableSpecSet,
predicate_pushdown_state: PredicatePushdownState,
measure_recipe: Optional[SourceNodeRecipe] = None,
+ time_spine_filter_specs: Sequence[WhereFilterSpec] = (),
) -> DataflowPlanNode:
measure_spec = metric_input_measure_spec.measure_spec
cumulative = metric_input_measure_spec.cumulative_description is not None
@@ -1631,6 +1633,7 @@ def _build_aggregated_measure_from_measure_source_node(
offset_window=before_aggregation_time_spine_join_description.offset_window,
offset_to_grain=before_aggregation_time_spine_join_description.offset_to_grain,
join_type=before_aggregation_time_spine_join_description.join_type,
+ time_spine_filters=time_spine_filter_specs,
)
custom_granularity_specs_to_join = [
diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql
index 4c9d86d58..c3b8f48ae 100644
--- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql
+++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql
@@ -4,440 +4,337 @@ sql_engine: DuckDB
---
-- Compute Metrics via Expressions
SELECT
- subq_9.metric_time__day
+ subq_8.metric_time__day
, bookings_5_days_ago AS bookings_5_day_lag
FROM (
-- Compute Metrics via Expressions
SELECT
- subq_8.metric_time__day
- , subq_8.bookings AS bookings_5_days_ago
+ subq_7.metric_time__day
+ , subq_7.bookings AS bookings_5_days_ago
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 (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
SELECT
- subq_5.metric_time__martian_day
- , 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.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.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_2.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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 (
- -- Join to Time Spine Dataset
- -- Join to Custom Granularity Dataset
+ -- Filter Time Spine
SELECT
- subq_2.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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_4.martian_day AS metric_time__martian_day
+ subq_4.metric_time__day
FROM (
-- Time Spine
SELECT
subq_3.ds AS metric_time__day
+ , subq_3.martian_day AS metric_time__martian_day
FROM ***************************.mf_time_spine subq_3
- ) subq_2
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ ) subq_4
+ WHERE metric_time__martian_day = '2020-01-01'
+ ) subq_2
+ 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
+ FROM (
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
- LEFT OUTER JOIN
- ***************************.mf_time_spine subq_4
- ON
- subq_2.metric_time__day = subq_4.ds
- ) subq_5
- WHERE metric_time__martian_day = '2020-01-01'
- ) subq_6
- ) subq_7
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
+ ) subq_5
+ ) subq_6
GROUP BY
- subq_7.metric_time__day
- ) subq_8
-) subq_9
+ subq_6.metric_time__day
+ ) subq_7
+) subq_8
diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql
index a74e4042e..9ca5937df 100644
--- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlQueryPlan/DuckDB/test_offset_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql
@@ -7,37 +7,36 @@ SELECT
metric_time__day
, bookings_5_days_ago AS bookings_5_day_lag
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
-- Pass Only Elements: ['bookings', 'metric_time__day']
-- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
- metric_time__day
- , SUM(bookings) AS bookings_5_days_ago
+ subq_11.metric_time__day AS metric_time__day
+ , SUM(subq_10.bookings) AS bookings_5_days_ago
FROM (
- -- Join to Time Spine Dataset
- -- Join to Custom Granularity Dataset
+ -- Filter Time Spine
SELECT
- subq_13.ds AS metric_time__day
- , subq_11.bookings AS bookings
- , subq_14.martian_day AS metric_time__martian_day
- FROM ***************************.mf_time_spine subq_13
- INNER JOIN (
- -- Read Elements From Semantic Model 'bookings_source'
- -- Metric Time Dimension 'ds'
+ metric_time__day
+ FROM (
+ -- Time Spine
SELECT
- DATE_TRUNC('day', ds) AS metric_time__day
- , 1 AS bookings
- FROM ***************************.fct_bookings bookings_source_src_28000
- ) subq_11
- ON
- subq_13.ds - INTERVAL 5 day = subq_11.metric_time__day
- LEFT OUTER JOIN
- ***************************.mf_time_spine subq_14
- ON
- subq_13.ds = subq_14.ds
- ) subq_15
- WHERE metric_time__martian_day = '2020-01-01'
+ ds AS metric_time__day
+ , martian_day AS metric_time__martian_day
+ FROM ***************************.mf_time_spine subq_12
+ ) subq_13
+ WHERE metric_time__martian_day = '2020-01-01'
+ ) subq_11
+ INNER JOIN (
+ -- Read Elements From Semantic Model 'bookings_source'
+ -- Metric Time Dimension 'ds'
+ SELECT
+ DATE_TRUNC('day', ds) AS metric_time__day
+ , 1 AS bookings
+ FROM ***************************.fct_bookings bookings_source_src_28000
+ ) subq_10
+ ON
+ subq_11.metric_time__day - INTERVAL 5 day = subq_10.metric_time__day
GROUP BY
- metric_time__day
-) subq_19
+ subq_11.metric_time__day
+) subq_17
diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml
index 69377fe72..75b5fa110 100644
--- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml
+++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_to_grain_metric_filter_and_query_have_different_granularities__dfp_0.xml
@@ -59,54 +59,13 @@ docstring:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -120,71 +79,31 @@ docstring:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml
index 37a544add..fa0296218 100644
--- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml
+++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_offset_window_metric_filter_and_query_have_different_granularities__dfp_0.xml
@@ -62,53 +62,12 @@ docstring:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -122,74 +81,31 @@ docstring:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -257,7 +173,7 @@ docstring:
-
+
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql
index e18ced63c..4b1e04d4b 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0.sql
@@ -346,412 +346,315 @@ FROM (
subq_11.metric_time__day
, subq_11.bookings
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
SELECT
- 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.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.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_8.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_8.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_8.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_8.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_8.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_8.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_8.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_8.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_8.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_8.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_8.metric_time__day) AS metric_time__extract_doy
+ , 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.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
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_8.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_8.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_8.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_8.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_8.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_8.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_8.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_8.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_8.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_8.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_8.metric_time__day) AS metric_time__extract_doy
- , 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.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_10.metric_time__day
FROM (
-- Time Spine
SELECT
subq_9.ds AS metric_time__day
FROM ***************************.mf_time_spine subq_9
- ) subq_8
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ ) subq_10
+ WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14'
+ ) subq_8
+ 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
+ FROM (
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- subq_8.metric_time__day - INTERVAL 14 day = subq_7.metric_time__day
- ) subq_10
- WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14'
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ subq_8.metric_time__day - INTERVAL 14 day = subq_7.metric_time__day
) subq_11
) subq_12
GROUP BY
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql
index 66f5fe7c5..8fa4255ce 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql
@@ -33,33 +33,37 @@ FROM (
metric_time__day
) subq_21
FULL OUTER JOIN (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
-- Pass Only Elements: ['bookings', 'metric_time__day']
-- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
- metric_time__day
- , SUM(bookings) AS bookings_2_weeks_ago
+ subq_24.metric_time__day AS metric_time__day
+ , SUM(subq_23.bookings) AS bookings_2_weeks_ago
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_25.ds AS metric_time__day
- , subq_23.bookings AS bookings
- FROM ***************************.mf_time_spine subq_25
- INNER JOIN (
- -- Read Elements From Semantic Model 'bookings_source'
- -- Metric Time Dimension 'ds'
+ metric_time__day
+ FROM (
+ -- Time Spine
SELECT
- DATE_TRUNC('day', ds) AS metric_time__day
- , 1 AS bookings
- FROM ***************************.fct_bookings bookings_source_src_28000
- ) subq_23
- ON
- subq_25.ds - INTERVAL 14 day = subq_23.metric_time__day
- ) subq_26
- WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14'
+ ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_25
+ ) subq_26
+ WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14'
+ ) subq_24
+ INNER JOIN (
+ -- Read Elements From Semantic Model 'bookings_source'
+ -- Metric Time Dimension 'ds'
+ SELECT
+ DATE_TRUNC('day', ds) AS metric_time__day
+ , 1 AS bookings
+ FROM ***************************.fct_bookings bookings_source_src_28000
+ ) subq_23
+ ON
+ subq_24.metric_time__day - INTERVAL 14 day = subq_23.metric_time__day
GROUP BY
- metric_time__day
+ subq_24.metric_time__day
) subq_30
ON
subq_21.metric_time__day = subq_30.metric_time__day
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql
index a2c06603c..b31833037 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0.sql
@@ -4,370 +4,453 @@ sql_engine: DuckDB
---
-- Compute Metrics via Expressions
SELECT
- subq_13.metric_time__day
+ subq_12.metric_time__day
, 2 * bookings_offset_once AS bookings_offset_twice
FROM (
- -- Pass Only Elements: ['metric_time__day', 'bookings_offset_once']
+ -- Join to Time Spine Dataset
SELECT
- subq_12.metric_time__day
- , subq_12.bookings_offset_once
+ subq_10.metric_time__day AS metric_time__day
+ , subq_9.bookings_offset_once AS bookings_offset_once
FROM (
- -- Constrain Output with WHERE
+ -- Time Spine
SELECT
- subq_11.metric_time__day
- , subq_11.booking__is_instant
- , subq_11.bookings_offset_once
+ subq_11.ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_11
+ ) subq_10
+ INNER JOIN (
+ -- Compute Metrics via Expressions
+ SELECT
+ subq_8.metric_time__day
+ , 2 * bookings AS bookings_offset_once
FROM (
- -- Join to Time Spine Dataset
+ -- Compute Metrics via Expressions
SELECT
- subq_9.metric_time__day AS metric_time__day
- , subq_8.booking__is_instant AS booking__is_instant
- , subq_8.bookings_offset_once AS bookings_offset_once
+ subq_7.metric_time__day
+ , subq_7.bookings
FROM (
- -- Time Spine
- SELECT
- subq_10.ds AS metric_time__day
- FROM ***************************.mf_time_spine subq_10
- ) subq_9
- INNER JOIN (
- -- Compute Metrics via Expressions
+ -- Aggregate Measures
SELECT
- subq_7.metric_time__day
- , subq_7.booking__is_instant
- , 2 * bookings AS bookings_offset_once
+ subq_6.metric_time__day
+ , SUM(subq_6.bookings) AS bookings
FROM (
- -- Compute Metrics via Expressions
+ -- Pass Only Elements: ['bookings', 'metric_time__day']
SELECT
- subq_6.metric_time__day
- , subq_6.booking__is_instant
- , subq_6.bookings
+ subq_5.metric_time__day
+ , subq_5.bookings
FROM (
- -- Aggregate Measures
+ -- Constrain Output with WHERE
SELECT
- subq_5.metric_time__day
- , subq_5.booking__is_instant
- , SUM(subq_5.bookings) AS bookings
+ subq_4.metric_time__day
+ , subq_4.metric_time__week
+ , subq_4.metric_time__month
+ , subq_4.metric_time__quarter
+ , subq_4.metric_time__year
+ , subq_4.metric_time__extract_year
+ , subq_4.metric_time__extract_quarter
+ , subq_4.metric_time__extract_month
+ , subq_4.metric_time__extract_day
+ , subq_4.metric_time__extract_dow
+ , subq_4.metric_time__extract_doy
+ , 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.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 (
- -- Pass Only Elements: ['bookings', 'booking__is_instant', 'metric_time__day']
+ -- Join to Time Spine Dataset
SELECT
- subq_4.metric_time__day
- , subq_4.booking__is_instant
- , subq_4.bookings
+ subq_2.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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 (
- -- Join to Time Spine Dataset
+ -- Time Spine
SELECT
- subq_2.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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_3.ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_3
+ ) subq_2
+ 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
FROM (
- -- Time Spine
- SELECT
- subq_3.ds AS metric_time__day
- FROM ***************************.mf_time_spine subq_3
- ) subq_2
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
- ) subq_4
- ) subq_5
- GROUP BY
- subq_5.metric_time__day
- , subq_5.booking__is_instant
- ) subq_6
- ) subq_7
- ) subq_8
- ON
- subq_9.metric_time__day - INTERVAL 2 day = subq_8.metric_time__day
- ) subq_11
- WHERE booking__is_instant
- ) subq_12
-) subq_13
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
+ ) subq_4
+ WHERE booking__is_instant
+ ) subq_5
+ ) subq_6
+ GROUP BY
+ subq_6.metric_time__day
+ ) subq_7
+ ) subq_8
+ ) subq_9
+ ON
+ subq_10.metric_time__day - INTERVAL 2 day = subq_9.metric_time__day
+) subq_12
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql
index d62752cb4..d3844ccde 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_derived_metric_offset_with_joined_where_constraint_not_selected__plan0_optimized.sql
@@ -7,34 +7,31 @@ SELECT
metric_time__day
, 2 * bookings_offset_once AS bookings_offset_twice
FROM (
- -- Constrain Output with WHERE
- -- Pass Only Elements: ['metric_time__day', 'bookings_offset_once']
+ -- Join to Time Spine Dataset
SELECT
- metric_time__day
- , bookings_offset_once
- FROM (
- -- Join to Time Spine Dataset
+ subq_24.ds AS metric_time__day
+ , subq_22.bookings_offset_once AS bookings_offset_once
+ FROM ***************************.mf_time_spine subq_24
+ INNER JOIN (
+ -- Compute Metrics via Expressions
SELECT
- subq_24.ds AS metric_time__day
- , subq_22.booking__is_instant AS booking__is_instant
- , subq_22.bookings_offset_once AS bookings_offset_once
- FROM ***************************.mf_time_spine subq_24
- INNER JOIN (
+ metric_time__day
+ , 2 * bookings AS bookings_offset_once
+ FROM (
+ -- Constrain Output with WHERE
+ -- Pass Only Elements: ['bookings', 'metric_time__day']
+ -- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
metric_time__day
- , booking__is_instant
- , 2 * bookings AS bookings_offset_once
+ , SUM(bookings) AS bookings
FROM (
-- Join to Time Spine Dataset
- -- Pass Only Elements: ['bookings', 'booking__is_instant', 'metric_time__day']
- -- Aggregate Measures
- -- Compute Metrics via Expressions
SELECT
- subq_17.ds AS metric_time__day
- , subq_15.booking__is_instant AS booking__is_instant
- , SUM(subq_15.bookings) AS bookings
- FROM ***************************.mf_time_spine subq_17
+ subq_16.ds AS metric_time__day
+ , subq_14.booking__is_instant AS booking__is_instant
+ , subq_14.bookings AS bookings
+ FROM ***************************.mf_time_spine subq_16
INNER JOIN (
-- Read Elements From Semantic Model 'bookings_source'
-- Metric Time Dimension 'ds'
@@ -43,16 +40,15 @@ FROM (
, is_instant AS booking__is_instant
, 1 AS bookings
FROM ***************************.fct_bookings bookings_source_src_28000
- ) subq_15
+ ) subq_14
ON
- subq_17.ds - INTERVAL 5 day = subq_15.metric_time__day
- GROUP BY
- subq_17.ds
- , subq_15.booking__is_instant
- ) subq_21
- ) subq_22
- ON
- subq_24.ds - INTERVAL 2 day = subq_22.metric_time__day
- ) subq_25
- WHERE booking__is_instant
-) subq_27
+ subq_16.ds - INTERVAL 5 day = subq_14.metric_time__day
+ ) subq_17
+ WHERE booking__is_instant
+ GROUP BY
+ metric_time__day
+ ) subq_21
+ ) subq_22
+ ON
+ subq_24.ds - INTERVAL 2 day = subq_22.metric_time__day
+) subq_25
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0.sql
index a4efcd763..95ef47c10 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0.sql
@@ -9,657 +9,711 @@ sql_engine: DuckDB
---
-- Compute Metrics via Expressions
SELECT
- subq_17.metric_time__day
- , bookings AS bookings_offset_twice_with_tiered_filters
+ subq_18.metric_time__day
+ , bookings_offset_once AS bookings_offset_twice_with_tiered_filters
FROM (
- -- Pass Only Elements: ['metric_time__day', 'bookings_offset_once']
+ -- Join to Time Spine Dataset
SELECT
- subq_16.metric_time__day
- , subq_16.bookings_offset_once
+ subq_15.metric_time__day AS metric_time__day
+ , subq_14.bookings_offset_once AS bookings_offset_once
FROM (
- -- Constrain Output with WHERE
+ -- Filter Time Spine
SELECT
- subq_15.metric_time__day
- , subq_15.metric_time__month
- , subq_15.metric_time__year
- , subq_15.booking__ds__quarter
- , subq_15.listing__created_at__day
- , subq_15.listing
- , subq_15.booking__is_instant
- , subq_15.bookings_offset_once
+ subq_17.metric_time__day
FROM (
- -- Join to Time Spine Dataset
+ -- Time Spine
SELECT
- subq_13.metric_time__day AS metric_time__day
- , DATE_TRUNC('month', subq_13.metric_time__day) AS metric_time__month
- , DATE_TRUNC('year', subq_13.metric_time__day) AS metric_time__year
- , subq_12.booking__ds__quarter AS booking__ds__quarter
- , subq_12.listing__created_at__day AS listing__created_at__day
- , subq_12.listing AS listing
- , subq_12.booking__is_instant AS booking__is_instant
- , subq_12.bookings_offset_once AS bookings_offset_once
+ subq_16.ds AS metric_time__day
+ , DATE_TRUNC('year', subq_16.ds) AS metric_time__year
+ FROM ***************************.mf_time_spine subq_16
+ ) subq_17
+ WHERE metric_time__year >= '2020-01-01'
+ ) subq_15
+ INNER JOIN (
+ -- Compute Metrics via Expressions
+ SELECT
+ subq_13.metric_time__day
+ , 2 * bookings AS bookings_offset_once
+ FROM (
+ -- Compute Metrics via Expressions
+ SELECT
+ subq_12.metric_time__day
+ , subq_12.bookings
FROM (
- -- Time Spine
- SELECT
- subq_14.ds AS metric_time__day
- FROM ***************************.mf_time_spine subq_14
- ) subq_13
- INNER JOIN (
- -- Compute Metrics via Expressions
+ -- Aggregate Measures
SELECT
subq_11.metric_time__day
- , subq_11.metric_time__month
- , subq_11.metric_time__year
- , subq_11.booking__ds__quarter
- , subq_11.listing__created_at__day
- , subq_11.listing
- , subq_11.booking__is_instant
- , 2 * bookings AS bookings_offset_once
+ , SUM(subq_11.bookings) AS bookings
FROM (
- -- Compute Metrics via Expressions
+ -- Pass Only Elements: ['bookings', 'metric_time__day']
SELECT
subq_10.metric_time__day
- , subq_10.metric_time__month
- , subq_10.metric_time__year
- , subq_10.booking__ds__quarter
- , subq_10.listing__created_at__day
- , subq_10.listing
- , subq_10.booking__is_instant
, subq_10.bookings
FROM (
- -- Aggregate Measures
+ -- Constrain Output with WHERE
SELECT
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.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.listing__created_at__day
, 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
- , SUM(subq_9.bookings) AS bookings
+ , 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
FROM (
- -- Pass Only Elements: [
- -- 'bookings',
- -- 'booking__is_instant',
- -- 'metric_time__day',
- -- 'metric_time__year',
- -- 'metric_time__month',
- -- 'booking__ds__quarter',
- -- 'listing__created_at__day',
- -- 'listing',
- -- ]
+ -- Join Standard Outputs
SELECT
- subq_8.metric_time__day
- , subq_8.metric_time__month
- , subq_8.metric_time__year
- , subq_8.booking__ds__quarter
- , subq_8.listing__created_at__day
- , subq_8.listing
- , subq_8.booking__is_instant
- , subq_8.bookings
+ subq_8.created_at__day AS listing__created_at__day
+ , 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.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.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 (
- -- Join Standard Outputs
+ -- Join to Time Spine Dataset
SELECT
- subq_7.created_at__day AS listing__created_at__day
- , 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.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.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
+ subq_2.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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 (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_2.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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_4.metric_time__day
FROM (
-- Time Spine
SELECT
subq_3.ds AS metric_time__day
+ , DATE_TRUNC('month', subq_3.ds) AS metric_time__month
FROM ***************************.mf_time_spine subq_3
- ) subq_2
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ ) subq_4
+ WHERE metric_time__month >= '2019-01-01'
+ ) subq_2
+ 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
+ FROM (
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
- ) subq_4
- LEFT OUTER JOIN (
- -- Pass Only Elements: ['created_at__day', 'listing']
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
+ ) subq_5
+ LEFT OUTER JOIN (
+ -- Pass Only Elements: ['created_at__day', 'listing']
+ SELECT
+ subq_7.created_at__day
+ , subq_7.listing
+ FROM (
+ -- Metric Time Dimension 'ds'
SELECT
- subq_6.created_at__day
+ 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 (
- -- Metric Time Dimension 'ds'
+ -- Read Elements From Semantic Model 'listings_latest'
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.listing__ds__day
- , subq_5.listing__ds__week
- , subq_5.listing__ds__month
- , subq_5.listing__ds__quarter
- , subq_5.listing__ds__year
- , subq_5.listing__ds__extract_year
- , subq_5.listing__ds__extract_quarter
- , subq_5.listing__ds__extract_month
- , subq_5.listing__ds__extract_day
- , subq_5.listing__ds__extract_dow
- , subq_5.listing__ds__extract_doy
- , subq_5.listing__created_at__day
- , subq_5.listing__created_at__week
- , subq_5.listing__created_at__month
- , subq_5.listing__created_at__quarter
- , subq_5.listing__created_at__year
- , subq_5.listing__created_at__extract_year
- , subq_5.listing__created_at__extract_quarter
- , subq_5.listing__created_at__extract_month
- , subq_5.listing__created_at__extract_day
- , subq_5.listing__created_at__extract_dow
- , subq_5.listing__created_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.user
- , subq_5.listing__user
- , subq_5.country_latest
- , subq_5.is_lux_latest
- , subq_5.capacity_latest
- , subq_5.listing__country_latest
- , subq_5.listing__is_lux_latest
- , subq_5.listing__capacity_latest
- , subq_5.listings
- , subq_5.largest_listing
- , subq_5.smallest_listing
- FROM (
- -- Read Elements From Semantic Model 'listings_latest'
- SELECT
- 1 AS listings
- , listings_latest_src_28000.capacity AS largest_listing
- , listings_latest_src_28000.capacity AS smallest_listing
- , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS ds__day
- , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS ds__week
- , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS ds__month
- , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS ds__quarter
- , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS ds__year
- , EXTRACT(year FROM listings_latest_src_28000.created_at) AS ds__extract_year
- , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS ds__extract_quarter
- , EXTRACT(month FROM listings_latest_src_28000.created_at) AS ds__extract_month
- , EXTRACT(day FROM listings_latest_src_28000.created_at) AS ds__extract_day
- , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS ds__extract_dow
- , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS ds__extract_doy
- , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS created_at__day
- , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS created_at__week
- , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS created_at__month
- , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS created_at__quarter
- , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS created_at__year
- , EXTRACT(year FROM listings_latest_src_28000.created_at) AS created_at__extract_year
- , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS created_at__extract_quarter
- , EXTRACT(month FROM listings_latest_src_28000.created_at) AS created_at__extract_month
- , EXTRACT(day FROM listings_latest_src_28000.created_at) AS created_at__extract_day
- , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS created_at__extract_dow
- , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS created_at__extract_doy
- , listings_latest_src_28000.country AS country_latest
- , listings_latest_src_28000.is_lux AS is_lux_latest
- , listings_latest_src_28000.capacity AS capacity_latest
- , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS listing__ds__day
- , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS listing__ds__week
- , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS listing__ds__month
- , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS listing__ds__quarter
- , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS listing__ds__year
- , EXTRACT(year FROM listings_latest_src_28000.created_at) AS listing__ds__extract_year
- , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS listing__ds__extract_quarter
- , EXTRACT(month FROM listings_latest_src_28000.created_at) AS listing__ds__extract_month
- , EXTRACT(day FROM listings_latest_src_28000.created_at) AS listing__ds__extract_day
- , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS listing__ds__extract_dow
- , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS listing__ds__extract_doy
- , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS listing__created_at__day
- , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS listing__created_at__week
- , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS listing__created_at__month
- , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS listing__created_at__quarter
- , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS listing__created_at__year
- , EXTRACT(year FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_year
- , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_quarter
- , EXTRACT(month FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_month
- , EXTRACT(day FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_day
- , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_dow
- , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_doy
- , listings_latest_src_28000.country AS listing__country_latest
- , listings_latest_src_28000.is_lux AS listing__is_lux_latest
- , listings_latest_src_28000.capacity AS listing__capacity_latest
- , listings_latest_src_28000.listing_id AS listing
- , 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_5
+ 1 AS listings
+ , listings_latest_src_28000.capacity AS largest_listing
+ , listings_latest_src_28000.capacity AS smallest_listing
+ , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS ds__day
+ , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS ds__week
+ , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS ds__month
+ , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS ds__quarter
+ , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS ds__year
+ , EXTRACT(year FROM listings_latest_src_28000.created_at) AS ds__extract_year
+ , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS ds__extract_quarter
+ , EXTRACT(month FROM listings_latest_src_28000.created_at) AS ds__extract_month
+ , EXTRACT(day FROM listings_latest_src_28000.created_at) AS ds__extract_day
+ , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS ds__extract_dow
+ , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS ds__extract_doy
+ , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS created_at__day
+ , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS created_at__week
+ , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS created_at__month
+ , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS created_at__quarter
+ , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS created_at__year
+ , EXTRACT(year FROM listings_latest_src_28000.created_at) AS created_at__extract_year
+ , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS created_at__extract_quarter
+ , EXTRACT(month FROM listings_latest_src_28000.created_at) AS created_at__extract_month
+ , EXTRACT(day FROM listings_latest_src_28000.created_at) AS created_at__extract_day
+ , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS created_at__extract_dow
+ , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS created_at__extract_doy
+ , listings_latest_src_28000.country AS country_latest
+ , listings_latest_src_28000.is_lux AS is_lux_latest
+ , listings_latest_src_28000.capacity AS capacity_latest
+ , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS listing__ds__day
+ , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS listing__ds__week
+ , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS listing__ds__month
+ , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS listing__ds__quarter
+ , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS listing__ds__year
+ , EXTRACT(year FROM listings_latest_src_28000.created_at) AS listing__ds__extract_year
+ , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS listing__ds__extract_quarter
+ , EXTRACT(month FROM listings_latest_src_28000.created_at) AS listing__ds__extract_month
+ , EXTRACT(day FROM listings_latest_src_28000.created_at) AS listing__ds__extract_day
+ , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS listing__ds__extract_dow
+ , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS listing__ds__extract_doy
+ , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS listing__created_at__day
+ , DATE_TRUNC('week', listings_latest_src_28000.created_at) AS listing__created_at__week
+ , DATE_TRUNC('month', listings_latest_src_28000.created_at) AS listing__created_at__month
+ , DATE_TRUNC('quarter', listings_latest_src_28000.created_at) AS listing__created_at__quarter
+ , DATE_TRUNC('year', listings_latest_src_28000.created_at) AS listing__created_at__year
+ , EXTRACT(year FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_year
+ , EXTRACT(quarter FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_quarter
+ , EXTRACT(month FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_month
+ , EXTRACT(day FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_day
+ , EXTRACT(isodow FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_dow
+ , EXTRACT(doy FROM listings_latest_src_28000.created_at) AS listing__created_at__extract_doy
+ , listings_latest_src_28000.country AS listing__country_latest
+ , listings_latest_src_28000.is_lux AS listing__is_lux_latest
+ , listings_latest_src_28000.capacity AS listing__capacity_latest
+ , listings_latest_src_28000.listing_id AS listing
+ , 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
- ON
- subq_4.listing = subq_7.listing
) subq_8
+ ON
+ subq_5.listing = subq_8.listing
) subq_9
- GROUP BY
- subq_9.metric_time__day
- , subq_9.metric_time__month
- , subq_9.metric_time__year
- , subq_9.booking__ds__quarter
- , subq_9.listing__created_at__day
- , subq_9.listing
- , subq_9.booking__is_instant
+ WHERE (((booking__ds__quarter = '2021-01-01') AND (listing__created_at__day = '2021-01-01')) AND (listing IS NOT NULL)) AND (booking__is_instant)
) subq_10
) subq_11
+ GROUP BY
+ subq_11.metric_time__day
) subq_12
- ON
- subq_13.metric_time__day - INTERVAL 1 month = subq_12.metric_time__day
- ) subq_15
- WHERE (((((metric_time__year >= '2020-01-01') AND (listing IS NOT NULL)) AND (metric_time__month >= '2019-01-01')) AND (booking__is_instant)) AND (booking__ds__quarter = '2021-01-01')) AND (listing__created_at__day = '2021-01-01')
- ) subq_16
-) subq_17
+ ) subq_13
+ ) subq_14
+ ON
+ subq_15.metric_time__day - INTERVAL 1 month = subq_14.metric_time__day
+) subq_18
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0_optimized.sql
index 9ed00626c..84963d4ae 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offset_metric_with_tiered_filters__plan0_optimized.sql
@@ -10,68 +10,68 @@ sql_engine: DuckDB
-- Compute Metrics via Expressions
SELECT
metric_time__day
- , bookings AS bookings_offset_twice_with_tiered_filters
+ , bookings_offset_once AS bookings_offset_twice_with_tiered_filters
FROM (
- -- Constrain Output with WHERE
- -- Pass Only Elements: ['metric_time__day', 'bookings_offset_once']
+ -- Join to Time Spine Dataset
SELECT
- metric_time__day
- , bookings_offset_once
+ subq_34.metric_time__day AS metric_time__day
+ , subq_33.bookings_offset_once AS bookings_offset_once
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_32.ds AS metric_time__day
- , DATE_TRUNC('month', subq_32.ds) AS metric_time__month
- , DATE_TRUNC('year', subq_32.ds) AS metric_time__year
- , subq_30.booking__ds__quarter AS booking__ds__quarter
- , subq_30.listing__created_at__day AS listing__created_at__day
- , subq_30.listing AS listing
- , subq_30.booking__is_instant AS booking__is_instant
- , subq_30.bookings_offset_once AS bookings_offset_once
- FROM ***************************.mf_time_spine subq_32
- INNER JOIN (
+ metric_time__day
+ FROM (
+ -- Time Spine
+ SELECT
+ ds AS metric_time__day
+ , DATE_TRUNC('year', ds) AS metric_time__year
+ FROM ***************************.mf_time_spine subq_35
+ ) subq_36
+ WHERE metric_time__year >= '2020-01-01'
+ ) subq_34
+ INNER JOIN (
+ -- Compute Metrics via Expressions
+ SELECT
+ metric_time__day
+ , 2 * bookings AS bookings_offset_once
+ FROM (
+ -- Constrain Output with WHERE
+ -- Pass Only Elements: ['bookings', 'metric_time__day']
+ -- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
metric_time__day
- , booking__ds__quarter
- , listing__created_at__day
- , listing
- , booking__is_instant
- , 2 * bookings AS bookings_offset_once
+ , SUM(bookings) AS bookings
FROM (
-- Join Standard Outputs
- -- Pass Only Elements: [
- -- 'bookings',
- -- 'booking__is_instant',
- -- 'metric_time__day',
- -- 'metric_time__year',
- -- 'metric_time__month',
- -- 'booking__ds__quarter',
- -- 'listing__created_at__day',
- -- 'listing',
- -- ]
- -- Aggregate Measures
- -- Compute Metrics via Expressions
SELECT
- subq_22.metric_time__day AS metric_time__day
- , subq_22.metric_time__month AS metric_time__month
- , subq_22.metric_time__year AS metric_time__year
- , subq_22.booking__ds__quarter AS booking__ds__quarter
- , DATE_TRUNC('day', listings_latest_src_28000.created_at) AS listing__created_at__day
- , subq_22.listing AS listing
- , subq_22.booking__is_instant AS booking__is_instant
- , SUM(subq_22.bookings) AS bookings
+ DATE_TRUNC('day', listings_latest_src_28000.created_at) AS listing__created_at__day
+ , subq_24.metric_time__day AS metric_time__day
+ , subq_24.booking__ds__quarter AS booking__ds__quarter
+ , subq_24.listing AS listing
+ , subq_24.booking__is_instant AS booking__is_instant
+ , subq_24.bookings AS bookings
FROM (
-- Join to Time Spine Dataset
SELECT
- subq_21.ds AS metric_time__day
- , DATE_TRUNC('month', subq_21.ds) AS metric_time__month
- , DATE_TRUNC('year', subq_21.ds) AS metric_time__year
- , subq_19.booking__ds__quarter AS booking__ds__quarter
- , subq_19.listing AS listing
- , subq_19.booking__is_instant AS booking__is_instant
- , subq_19.bookings AS bookings
- FROM ***************************.mf_time_spine subq_21
+ subq_21.metric_time__day AS metric_time__day
+ , subq_20.booking__ds__quarter AS booking__ds__quarter
+ , subq_20.listing AS listing
+ , subq_20.booking__is_instant AS booking__is_instant
+ , subq_20.bookings AS bookings
+ FROM (
+ -- Filter Time Spine
+ SELECT
+ metric_time__day
+ FROM (
+ -- Time Spine
+ SELECT
+ ds AS metric_time__day
+ , DATE_TRUNC('month', ds) AS metric_time__month
+ FROM ***************************.mf_time_spine subq_22
+ ) subq_23
+ WHERE metric_time__month >= '2019-01-01'
+ ) subq_21
INNER JOIN (
-- Read Elements From Semantic Model 'bookings_source'
-- Metric Time Dimension 'ds'
@@ -82,26 +82,20 @@ FROM (
, is_instant AS booking__is_instant
, 1 AS bookings
FROM ***************************.fct_bookings bookings_source_src_28000
- ) subq_19
+ ) subq_20
ON
- subq_21.ds - INTERVAL 5 day = subq_19.metric_time__day
- ) subq_22
+ subq_21.metric_time__day - INTERVAL 5 day = subq_20.metric_time__day
+ ) subq_24
LEFT OUTER JOIN
***************************.dim_listings_latest listings_latest_src_28000
ON
- subq_22.listing = listings_latest_src_28000.listing_id
- GROUP BY
- subq_22.metric_time__day
- , subq_22.metric_time__month
- , subq_22.metric_time__year
- , subq_22.booking__ds__quarter
- , DATE_TRUNC('day', listings_latest_src_28000.created_at)
- , subq_22.listing
- , subq_22.booking__is_instant
- ) subq_29
- ) subq_30
- ON
- subq_32.ds - INTERVAL 1 month = subq_30.metric_time__day
+ subq_24.listing = listings_latest_src_28000.listing_id
+ ) subq_28
+ WHERE (((booking__ds__quarter = '2021-01-01') AND (listing__created_at__day = '2021-01-01')) AND (listing IS NOT NULL)) AND (booking__is_instant)
+ GROUP BY
+ metric_time__day
+ ) subq_32
) subq_33
- WHERE (((((metric_time__year >= '2020-01-01') AND (listing IS NOT NULL)) AND (metric_time__month >= '2019-01-01')) AND (booking__is_instant)) AND (booking__ds__quarter = '2021-01-01')) AND (listing__created_at__day = '2021-01-01')
-) subq_35
+ ON
+ subq_34.metric_time__day - INTERVAL 1 month = subq_33.metric_time__day
+) subq_37
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql
index b104ae2cb..3d0c4561b 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0.sql
@@ -7,354 +7,353 @@ SELECT
subq_12.metric_time__day
, 2 * bookings_offset_once AS bookings_offset_twice
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
SELECT
- subq_11.metric_time__day
- , subq_11.bookings_offset_once
+ subq_9.metric_time__day AS metric_time__day
+ , subq_8.bookings_offset_once AS bookings_offset_once
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_9.metric_time__day AS metric_time__day
- , subq_8.bookings_offset_once AS bookings_offset_once
+ subq_11.metric_time__day
FROM (
-- Time Spine
SELECT
subq_10.ds AS metric_time__day
FROM ***************************.mf_time_spine subq_10
- ) subq_9
- INNER JOIN (
+ ) subq_11
+ WHERE metric_time__day = '2020-01-12' or metric_time__day = '2020-01-13'
+ ) subq_9
+ INNER JOIN (
+ -- Compute Metrics via Expressions
+ SELECT
+ subq_7.metric_time__day
+ , 2 * bookings AS bookings_offset_once
+ FROM (
-- Compute Metrics via Expressions
SELECT
- subq_7.metric_time__day
- , 2 * bookings AS bookings_offset_once
+ subq_6.metric_time__day
+ , subq_6.bookings
FROM (
- -- Compute Metrics via Expressions
+ -- Aggregate Measures
SELECT
- subq_6.metric_time__day
- , subq_6.bookings
+ subq_5.metric_time__day
+ , SUM(subq_5.bookings) AS bookings
FROM (
- -- Aggregate Measures
+ -- Pass Only Elements: ['bookings', 'metric_time__day']
SELECT
- subq_5.metric_time__day
- , SUM(subq_5.bookings) AS bookings
+ subq_4.metric_time__day
+ , subq_4.bookings
FROM (
- -- Pass Only Elements: ['bookings', 'metric_time__day']
+ -- Join to Time Spine Dataset
SELECT
- subq_4.metric_time__day
- , subq_4.bookings
+ subq_2.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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 (
- -- Join to Time Spine Dataset
+ -- Time Spine
SELECT
- subq_2.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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_3.ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_3
+ ) subq_2
+ 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
FROM (
- -- Time Spine
- SELECT
- subq_3.ds AS metric_time__day
- FROM ***************************.mf_time_spine subq_3
- ) subq_2
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
- ) subq_4
- ) subq_5
- GROUP BY
- subq_5.metric_time__day
- ) subq_6
- ) subq_7
- ) subq_8
- ON
- subq_9.metric_time__day - INTERVAL 2 day = subq_8.metric_time__day
- ) subq_11
- WHERE metric_time__day = '2020-01-12' or metric_time__day = '2020-01-13'
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ subq_2.metric_time__day - INTERVAL 5 day = subq_1.metric_time__day
+ ) subq_4
+ ) subq_5
+ GROUP BY
+ subq_5.metric_time__day
+ ) subq_6
+ ) subq_7
+ ) subq_8
+ ON
+ subq_9.metric_time__day - INTERVAL 2 day = subq_8.metric_time__day
) subq_12
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql
index 5d979eb0c..ac9ccbd9b 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_nested_offsets_with_where_constraint__plan0_optimized.sql
@@ -7,46 +7,50 @@ SELECT
metric_time__day
, 2 * bookings_offset_once AS bookings_offset_twice
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
SELECT
- metric_time__day
- , bookings_offset_once
+ subq_22.metric_time__day AS metric_time__day
+ , subq_21.bookings_offset_once AS bookings_offset_once
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_23.ds AS metric_time__day
- , subq_21.bookings_offset_once AS bookings_offset_once
- FROM ***************************.mf_time_spine subq_23
- INNER JOIN (
+ metric_time__day
+ FROM (
+ -- Time Spine
+ SELECT
+ ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_23
+ ) subq_24
+ WHERE metric_time__day = '2020-01-12' or metric_time__day = '2020-01-13'
+ ) subq_22
+ INNER JOIN (
+ -- Compute Metrics via Expressions
+ SELECT
+ metric_time__day
+ , 2 * bookings AS bookings_offset_once
+ FROM (
+ -- Join to Time Spine Dataset
+ -- Pass Only Elements: ['bookings', 'metric_time__day']
+ -- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
- metric_time__day
- , 2 * bookings AS bookings_offset_once
- FROM (
- -- Join to Time Spine Dataset
- -- Pass Only Elements: ['bookings', 'metric_time__day']
- -- Aggregate Measures
- -- Compute Metrics via Expressions
+ subq_16.ds AS metric_time__day
+ , SUM(subq_14.bookings) AS bookings
+ FROM ***************************.mf_time_spine subq_16
+ INNER JOIN (
+ -- Read Elements From Semantic Model 'bookings_source'
+ -- Metric Time Dimension 'ds'
SELECT
- subq_16.ds AS metric_time__day
- , SUM(subq_14.bookings) AS bookings
- FROM ***************************.mf_time_spine subq_16
- INNER JOIN (
- -- Read Elements From Semantic Model 'bookings_source'
- -- Metric Time Dimension 'ds'
- SELECT
- DATE_TRUNC('day', ds) AS metric_time__day
- , 1 AS bookings
- FROM ***************************.fct_bookings bookings_source_src_28000
- ) subq_14
- ON
- subq_16.ds - INTERVAL 5 day = subq_14.metric_time__day
- GROUP BY
- subq_16.ds
- ) subq_20
- ) subq_21
- ON
- subq_23.ds - INTERVAL 2 day = subq_21.metric_time__day
- ) subq_24
- WHERE metric_time__day = '2020-01-12' or metric_time__day = '2020-01-13'
+ DATE_TRUNC('day', ds) AS metric_time__day
+ , 1 AS bookings
+ FROM ***************************.fct_bookings bookings_source_src_28000
+ ) subq_14
+ ON
+ subq_16.ds - INTERVAL 5 day = subq_14.metric_time__day
+ GROUP BY
+ subq_16.ds
+ ) subq_20
+ ) subq_21
+ ON
+ subq_22.metric_time__day - INTERVAL 2 day = subq_21.metric_time__day
) subq_25
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql
index 72b5a8eff..a335876ee 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0.sql
@@ -24,413 +24,316 @@ FROM (
subq_5.metric_time__month
, subq_5.bookings
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
SELECT
- subq_4.metric_time__day
- , subq_4.metric_time__week
- , subq_4.metric_time__month
- , subq_4.metric_time__quarter
- , subq_4.metric_time__year
- , subq_4.metric_time__extract_year
- , subq_4.metric_time__extract_quarter
- , subq_4.metric_time__extract_month
- , subq_4.metric_time__extract_day
- , subq_4.metric_time__extract_dow
- , subq_4.metric_time__extract_doy
- , 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.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
+ subq_2.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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 (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_2.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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_4.metric_time__day
FROM (
-- Time Spine
SELECT
subq_3.ds AS metric_time__day
FROM ***************************.mf_time_spine subq_3
- ) subq_2
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ ) subq_4
+ WHERE metric_time__day = '2020-01-01'
+ ) subq_2
+ 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
+ FROM (
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- DATE_TRUNC('month', subq_2.metric_time__day) = subq_1.metric_time__day
- WHERE DATE_TRUNC('month', subq_2.metric_time__day) = subq_2.metric_time__day
- ) subq_4
- WHERE metric_time__day = '2020-01-01'
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ DATE_TRUNC('month', subq_2.metric_time__day) = subq_1.metric_time__day
+ WHERE DATE_TRUNC('month', subq_2.metric_time__day) = subq_2.metric_time__day
) subq_5
) subq_6
GROUP BY
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql
index 29518080d..20c53e66b 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_to_grain_metric_filter_and_query_have_different_granularities__plan0_optimized.sql
@@ -9,33 +9,36 @@ SELECT
metric_time__month
, bookings_start_of_month AS bookings_at_start_of_month
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
-- Pass Only Elements: ['bookings', 'metric_time__month']
-- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
- metric_time__month
- , SUM(bookings) AS bookings_start_of_month
+ DATE_TRUNC('month', subq_11.metric_time__day) AS metric_time__month
+ , SUM(subq_10.bookings) AS bookings_start_of_month
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_12.ds AS metric_time__day
- , DATE_TRUNC('month', subq_12.ds) AS metric_time__month
- , subq_10.bookings AS bookings
- FROM ***************************.mf_time_spine subq_12
- INNER JOIN (
- -- Read Elements From Semantic Model 'bookings_source'
- -- Metric Time Dimension 'ds'
+ metric_time__day
+ FROM (
+ -- Time Spine
SELECT
- DATE_TRUNC('day', ds) AS metric_time__day
- , 1 AS bookings
- FROM ***************************.fct_bookings bookings_source_src_28000
- ) subq_10
- ON
- DATE_TRUNC('month', subq_12.ds) = subq_10.metric_time__day
- WHERE DATE_TRUNC('month', subq_12.ds) = subq_12.ds
- ) subq_13
- WHERE metric_time__day = '2020-01-01'
+ ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_12
+ ) subq_13
+ WHERE metric_time__day = '2020-01-01'
+ ) subq_11
+ INNER JOIN (
+ -- Read Elements From Semantic Model 'bookings_source'
+ -- Metric Time Dimension 'ds'
+ SELECT
+ DATE_TRUNC('day', ds) AS metric_time__day
+ , 1 AS bookings
+ FROM ***************************.fct_bookings bookings_source_src_28000
+ ) subq_10
+ ON
+ DATE_TRUNC('month', subq_11.metric_time__day) = subq_10.metric_time__day
+ WHERE DATE_TRUNC('month', subq_11.metric_time__day) = subq_11.metric_time__day
GROUP BY
- metric_time__month
+ DATE_TRUNC('month', subq_11.metric_time__day)
) subq_17
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql
index 927127c08..34a7fcdb6 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql
@@ -30,412 +30,315 @@ FROM (
subq_5.metric_time__month
, subq_5.booking_value
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
SELECT
- subq_4.metric_time__day
- , subq_4.metric_time__week
- , subq_4.metric_time__month
- , subq_4.metric_time__quarter
- , subq_4.metric_time__year
- , subq_4.metric_time__extract_year
- , subq_4.metric_time__extract_quarter
- , subq_4.metric_time__extract_month
- , subq_4.metric_time__extract_day
- , subq_4.metric_time__extract_dow
- , subq_4.metric_time__extract_doy
- , 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.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
+ subq_2.metric_time__day AS metric_time__day
+ , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
+ , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
+ , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
+ , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
+ , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
+ , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
+ , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
+ , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
+ , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
+ , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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 (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_2.metric_time__day AS metric_time__day
- , DATE_TRUNC('week', subq_2.metric_time__day) AS metric_time__week
- , DATE_TRUNC('month', subq_2.metric_time__day) AS metric_time__month
- , DATE_TRUNC('quarter', subq_2.metric_time__day) AS metric_time__quarter
- , DATE_TRUNC('year', subq_2.metric_time__day) AS metric_time__year
- , EXTRACT(year FROM subq_2.metric_time__day) AS metric_time__extract_year
- , EXTRACT(quarter FROM subq_2.metric_time__day) AS metric_time__extract_quarter
- , EXTRACT(month FROM subq_2.metric_time__day) AS metric_time__extract_month
- , EXTRACT(day FROM subq_2.metric_time__day) AS metric_time__extract_day
- , EXTRACT(isodow FROM subq_2.metric_time__day) AS metric_time__extract_dow
- , EXTRACT(doy FROM subq_2.metric_time__day) AS metric_time__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.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.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_4.metric_time__day
FROM (
-- Time Spine
SELECT
subq_3.ds AS metric_time__day
FROM ***************************.mf_time_spine subq_3
- ) subq_2
- INNER JOIN (
- -- Metric Time Dimension 'ds'
+ ) subq_4
+ WHERE metric_time__day = '2020-01-01'
+ ) subq_2
+ 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
+ FROM (
+ -- Read Elements From Semantic Model 'bookings_source'
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
- FROM (
- -- Read Elements From Semantic Model 'bookings_source'
- SELECT
- 1 AS bookings
- , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
- , bookings_source_src_28000.booking_value
- , bookings_source_src_28000.booking_value AS max_booking_value
- , bookings_source_src_28000.booking_value AS min_booking_value
- , bookings_source_src_28000.guest_id AS bookers
- , bookings_source_src_28000.booking_value AS average_booking_value
- , bookings_source_src_28000.booking_value AS booking_payments
- , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
- , bookings_source_src_28000.booking_value AS median_booking_value
- , bookings_source_src_28000.booking_value AS booking_value_p99
- , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
- , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
- , bookings_source_src_28000.is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
- , bookings_source_src_28000.is_instant AS booking__is_instant
- , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
- , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
- , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
- , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
- , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
- , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
- , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
- , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
- , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
- , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
- , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
- , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
- , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
- , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
- , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
- , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
- , bookings_source_src_28000.listing_id AS listing
- , bookings_source_src_28000.guest_id AS guest
- , bookings_source_src_28000.host_id AS host
- , bookings_source_src_28000.listing_id AS booking__listing
- , 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
- ON
- subq_2.metric_time__day - INTERVAL 1 week = subq_1.metric_time__day
- ) subq_4
- WHERE metric_time__day = '2020-01-01'
+ 1 AS bookings
+ , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings
+ , bookings_source_src_28000.booking_value
+ , bookings_source_src_28000.booking_value AS max_booking_value
+ , bookings_source_src_28000.booking_value AS min_booking_value
+ , bookings_source_src_28000.guest_id AS bookers
+ , bookings_source_src_28000.booking_value AS average_booking_value
+ , bookings_source_src_28000.booking_value AS booking_payments
+ , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings
+ , bookings_source_src_28000.booking_value AS median_booking_value
+ , bookings_source_src_28000.booking_value AS booking_value_p99
+ , bookings_source_src_28000.booking_value AS discrete_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99
+ , bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99
+ , bookings_source_src_28000.is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy
+ , bookings_source_src_28000.is_instant AS booking__is_instant
+ , DATE_TRUNC('day', bookings_source_src_28000.ds) AS booking__ds__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds) AS booking__ds__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds) AS booking__ds__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds) AS booking__ds__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds) AS booking__ds__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds) AS booking__ds__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__day
+ , DATE_TRUNC('week', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__week
+ , DATE_TRUNC('month', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__year
+ , EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy
+ , DATE_TRUNC('day', bookings_source_src_28000.paid_at) AS booking__paid_at__day
+ , DATE_TRUNC('week', bookings_source_src_28000.paid_at) AS booking__paid_at__week
+ , DATE_TRUNC('month', bookings_source_src_28000.paid_at) AS booking__paid_at__month
+ , DATE_TRUNC('quarter', bookings_source_src_28000.paid_at) AS booking__paid_at__quarter
+ , DATE_TRUNC('year', bookings_source_src_28000.paid_at) AS booking__paid_at__year
+ , EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year
+ , EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter
+ , EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month
+ , EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day
+ , EXTRACT(isodow FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_dow
+ , EXTRACT(doy FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy
+ , bookings_source_src_28000.listing_id AS listing
+ , bookings_source_src_28000.guest_id AS guest
+ , bookings_source_src_28000.host_id AS host
+ , bookings_source_src_28000.listing_id AS booking__listing
+ , 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
+ ON
+ subq_2.metric_time__day - INTERVAL 1 week = subq_1.metric_time__day
) subq_5
) subq_6
GROUP BY
diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql
index 63f543a97..637ee293c 100644
--- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql
+++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlQueryPlan/DuckDB/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql
@@ -15,28 +15,31 @@ FROM (
, MAX(subq_24.booking_value) AS booking_value
, MAX(subq_30.bookers) AS bookers
FROM (
- -- Constrain Output with WHERE
+ -- Join to Time Spine Dataset
-- Pass Only Elements: ['booking_value', 'metric_time__month']
-- Aggregate Measures
-- Compute Metrics via Expressions
SELECT
- metric_time__month
- , SUM(booking_value) AS booking_value
+ DATE_TRUNC('month', subq_18.metric_time__day) AS metric_time__month
+ , SUM(bookings_source_src_28000.booking_value) AS booking_value
FROM (
- -- Join to Time Spine Dataset
+ -- Filter Time Spine
SELECT
- subq_19.ds AS metric_time__day
- , DATE_TRUNC('month', subq_19.ds) AS metric_time__month
- , bookings_source_src_28000.booking_value AS booking_value
- FROM ***************************.mf_time_spine subq_19
- INNER JOIN
- ***************************.fct_bookings bookings_source_src_28000
- ON
- subq_19.ds - INTERVAL 1 week = DATE_TRUNC('day', bookings_source_src_28000.ds)
- ) subq_20
- WHERE metric_time__day = '2020-01-01'
+ metric_time__day
+ FROM (
+ -- Time Spine
+ SELECT
+ ds AS metric_time__day
+ FROM ***************************.mf_time_spine subq_19
+ ) subq_20
+ WHERE metric_time__day = '2020-01-01'
+ ) subq_18
+ INNER JOIN
+ ***************************.fct_bookings bookings_source_src_28000
+ ON
+ subq_18.metric_time__day - INTERVAL 1 week = DATE_TRUNC('day', bookings_source_src_28000.ds)
GROUP BY
- metric_time__month
+ DATE_TRUNC('month', subq_18.metric_time__day)
) subq_24
FULL OUTER JOIN (
-- Constrain Output with WHERE