diff --git a/.changes/unreleased/Features-20240727-081106.yaml b/.changes/unreleased/Features-20240727-081106.yaml new file mode 100644 index 0000000000..d83fed7648 --- /dev/null +++ b/.changes/unreleased/Features-20240727-081106.yaml @@ -0,0 +1,6 @@ +kind: Features +body: Enable sub-daily queries without metrics. +time: 2024-07-27T08:11:06.357653-07:00 +custom: + Author: courtneyholcomb + Issue: "1359" diff --git a/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py index 7da7d635a5..3afb0ea84a 100644 --- a/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py @@ -40,6 +40,7 @@ from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet from metricflow_semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow_semantics.specs.time_dimension_spec import DEFAULT_TIME_GRANULARITY +from metricflow_semantics.time.time_spine_source import TimeSpineSource if TYPE_CHECKING: from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup @@ -124,6 +125,7 @@ def __init__( # Sort semantic models by name for consistency in building derived objects. self._semantic_models = sorted(self._semantic_manifest.semantic_models, key=lambda x: x.name) self._join_evaluator = SemanticModelJoinEvaluator(semantic_model_lookup) + self._time_spine_sources = TimeSpineSource.create_from_manifest(self._semantic_manifest) assert max_entity_links >= 0 self._max_entity_links = max_entity_links @@ -454,6 +456,7 @@ def _get_metric_time_elements(self, measure_reference: Optional[MeasureReference on what aggregation time dimension was used to define the measure. """ measure_semantic_model: Optional[SemanticModel] = None + defined_granularity: Optional[TimeGranularity] = None if measure_reference: measure_semantic_model = self._get_semantic_model_for_measure(measure_reference) measure_agg_time_dimension_reference = measure_semantic_model.checked_agg_time_dimension_for_measure( @@ -463,15 +466,20 @@ def _get_metric_time_elements(self, measure_reference: Optional[MeasureReference semantic_model=measure_semantic_model, time_dimension_reference=measure_agg_time_dimension_reference, ) + possible_metric_time_granularities = tuple( + time_granularity + for time_granularity in TimeGranularity + if defined_granularity.is_smaller_than_or_equal(time_granularity) + ) else: - defined_granularity = DEFAULT_TIME_GRANULARITY - - # It's possible to aggregate measures to coarser time granularities (except with cumulative metrics). - possible_metric_time_granularities = tuple( - time_granularity - for time_granularity in TimeGranularity - if defined_granularity.is_smaller_than_or_equal(time_granularity) - ) + # If querying metric_time without metrics, will query from time spines. + # Defaults to DAY granularity if available in time spines, else smallest available granularity. + min_time_spine_granularity = min(self._time_spine_sources.keys()) + possible_metric_time_granularities = tuple( + time_granularity + for time_granularity in TimeGranularity + if min_time_spine_granularity.is_smaller_than_or_equal(time_granularity) + ) # For each of the possible time granularities, create a LinkableDimension. path_key_to_linkable_dimensions: Dict[ElementPathKey, List[LinkableDimension]] = defaultdict(list) diff --git a/metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_default_granularity.py b/metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_default_granularity.py index eeae9299fc..8c3a2499f1 100644 --- a/metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_default_granularity.py +++ b/metricflow-semantics/metricflow_semantics/specs/patterns/metric_time_default_granularity.py @@ -10,6 +10,7 @@ from metricflow_semantics.specs.patterns.spec_pattern import SpecPattern from metricflow_semantics.specs.spec_set import group_specs_by_type from metricflow_semantics.specs.time_dimension_spec import ( + DEFAULT_TIME_GRANULARITY, TimeDimensionSpec, TimeDimensionSpecComparisonKey, TimeDimensionSpecField, @@ -47,10 +48,13 @@ def __init__(self, max_metric_default_time_granularity: Optional[TimeGranularity def match(self, candidate_specs: Sequence[InstanceSpec]) -> Sequence[InstanceSpec]: spec_set = group_specs_by_type(candidate_specs) - # If there are no metrics or metric_time specs in the query, skip this filter. - if not (self._max_metric_default_time_granularity and spec_set.metric_time_specs): + # If there are no metric_time specs in the query, skip this filter. + if not spec_set.metric_time_specs: return candidate_specs + # If there are metrics in the query, use max metric default. For no-metric queries, use standard default. + default_granularity = self._max_metric_default_time_granularity or DEFAULT_TIME_GRANULARITY + spec_key_to_grains: Dict[TimeDimensionSpecComparisonKey, Set[TimeGranularity]] = defaultdict(set) spec_key_to_specs: Dict[TimeDimensionSpecComparisonKey, Tuple[TimeDimensionSpec, ...]] = defaultdict(tuple) for metric_time_spec in spec_set.metric_time_specs: @@ -60,10 +64,8 @@ def match(self, candidate_specs: Sequence[InstanceSpec]) -> Sequence[InstanceSpe matched_metric_time_specs: Tuple[TimeDimensionSpec, ...] = () for spec_key, time_grains in spec_key_to_grains.items(): - if self._max_metric_default_time_granularity in time_grains: - matched_metric_time_specs += ( - spec_key_to_specs[spec_key][0].with_grain(self._max_metric_default_time_granularity), - ) + if default_granularity in time_grains: + matched_metric_time_specs += (spec_key_to_specs[spec_key][0].with_grain(default_granularity),) else: # If default_granularity is not in the available options, then time granularity was specified in the request # and a default is not needed here. Pass all options through for this spec key. diff --git a/metricflow-semantics/metricflow_semantics/specs/time_dimension_spec.py b/metricflow-semantics/metricflow_semantics/specs/time_dimension_spec.py index 6f47e161c1..5f23c0e20f 100644 --- a/metricflow-semantics/metricflow_semantics/specs/time_dimension_spec.py +++ b/metricflow-semantics/metricflow_semantics/specs/time_dimension_spec.py @@ -101,7 +101,12 @@ def without_first_entity_link(self) -> TimeDimensionSpec: # noqa: D102 @property def without_entity_links(self) -> TimeDimensionSpec: # noqa: D102 - return TimeDimensionSpec.from_name(self.element_name) + return TimeDimensionSpec( + element_name=self.element_name, + time_granularity=self.time_granularity, + date_part=self.date_part, + entity_links=(), + ) @staticmethod def from_name(name: str) -> TimeDimensionSpec: # noqa: D102 diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/shared/project_configuration.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/shared/project_configuration.yaml index 7ca0c2ae9f..56156ce0f0 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/shared/project_configuration.yaml +++ b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/shared/project_configuration.yaml @@ -5,3 +5,40 @@ project_configuration: - location: $source_schema.mf_time_spine column_name: ds grain: day + time_spines: + - node_relation: + alias: mf_time_spine_nanosecond + schema_name: $source_schema + primary_column: + name: ts + time_granularity: nanosecond + - node_relation: + alias: mf_time_spine_microsecond + schema_name: $source_schema + primary_column: + name: ts + time_granularity: microsecond + - node_relation: + alias: mf_time_spine_millisecond + schema_name: $source_schema + primary_column: + name: ts + time_granularity: millisecond + - node_relation: + alias: mf_time_spine_second + schema_name: $source_schema + primary_column: + name: ts + time_granularity: second + - node_relation: + alias: mf_time_spine_minute + schema_name: $source_schema + primary_column: + name: ts + time_granularity: minute + - node_relation: + alias: mf_time_spine_hour + schema_name: $source_schema + primary_column: + name: ts + time_granularity: hour 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 aa3545865d..6d9116f015 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 @@ -783,22 +783,3 @@ metric: name: listings filter: "{{ Metric('views', ['listing']) }} > 10" time_granularity: week ---- -metric: - name: bookings_before_dec_20_2019 - description: Bookings up to the end of 2022 - type: simple - type_params: - measure: bookings - filter: "{{ TimeDimension('metric_time') }} < '2012-12-20'" ---- -metric: - name: bookings_between_dec_18_2019_and_dec_20_2019 - description: Bookings starting in 2020. Used to test a metric with different types of ambiguous filters in on its input metric. - type: derived - type_params: - expr: bookings_before_dec_20_2019 - metrics: - - name: bookings_before_dec_20_2019 - filter: "{{ TimeDimension('metric_time') }} > '2019-12-18'" - time_granularity: week diff --git a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml index 56336491ff..b0db8c59f1 100644 --- a/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml +++ b/metricflow-semantics/metricflow_semantics/test_helpers/semantic_manifest_yamls/simple_manifest/semantic_models/user_sm_source.yaml @@ -23,6 +23,23 @@ semantic_model: time_granularity: day - name: home_state type: categorical + - name: last_profile_edit_ts + type: time + type_params: + time_granularity: millisecond + - name: bio_added_ts + type: time + type_params: + time_granularity: second + - name: last_login_ts + type: time + type_params: + time_granularity: minute + - name: archived_at + type: time + type_params: + time_granularity: hour + entities: - name: user diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt index 3f3066a685..81ebfcea27 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_available_group_by_items.py/LinkableSpecSet/test_available_group_by_items__no_metrics__set0.txt @@ -6,13 +6,55 @@ "TimeDimension('metric_time', 'day', date_part_name='month')", "TimeDimension('metric_time', 'day', date_part_name='quarter')", "TimeDimension('metric_time', 'day', date_part_name='year')", + "TimeDimension('metric_time', 'hour')", + "TimeDimension('metric_time', 'hour', date_part_name='day')", + "TimeDimension('metric_time', 'hour', date_part_name='dow')", + "TimeDimension('metric_time', 'hour', date_part_name='doy')", + "TimeDimension('metric_time', 'hour', date_part_name='month')", + "TimeDimension('metric_time', 'hour', date_part_name='quarter')", + "TimeDimension('metric_time', 'hour', date_part_name='year')", + "TimeDimension('metric_time', 'microsecond')", + "TimeDimension('metric_time', 'microsecond', date_part_name='day')", + "TimeDimension('metric_time', 'microsecond', date_part_name='dow')", + "TimeDimension('metric_time', 'microsecond', date_part_name='doy')", + "TimeDimension('metric_time', 'microsecond', date_part_name='month')", + "TimeDimension('metric_time', 'microsecond', date_part_name='quarter')", + "TimeDimension('metric_time', 'microsecond', date_part_name='year')", + "TimeDimension('metric_time', 'millisecond')", + "TimeDimension('metric_time', 'millisecond', date_part_name='day')", + "TimeDimension('metric_time', 'millisecond', date_part_name='dow')", + "TimeDimension('metric_time', 'millisecond', date_part_name='doy')", + "TimeDimension('metric_time', 'millisecond', date_part_name='month')", + "TimeDimension('metric_time', 'millisecond', date_part_name='quarter')", + "TimeDimension('metric_time', 'millisecond', date_part_name='year')", + "TimeDimension('metric_time', 'minute')", + "TimeDimension('metric_time', 'minute', date_part_name='day')", + "TimeDimension('metric_time', 'minute', date_part_name='dow')", + "TimeDimension('metric_time', 'minute', date_part_name='doy')", + "TimeDimension('metric_time', 'minute', date_part_name='month')", + "TimeDimension('metric_time', 'minute', date_part_name='quarter')", + "TimeDimension('metric_time', 'minute', date_part_name='year')", "TimeDimension('metric_time', 'month')", "TimeDimension('metric_time', 'month', date_part_name='month')", "TimeDimension('metric_time', 'month', date_part_name='quarter')", "TimeDimension('metric_time', 'month', date_part_name='year')", + "TimeDimension('metric_time', 'nanosecond')", + "TimeDimension('metric_time', 'nanosecond', date_part_name='day')", + "TimeDimension('metric_time', 'nanosecond', date_part_name='dow')", + "TimeDimension('metric_time', 'nanosecond', date_part_name='doy')", + "TimeDimension('metric_time', 'nanosecond', date_part_name='month')", + "TimeDimension('metric_time', 'nanosecond', date_part_name='quarter')", + "TimeDimension('metric_time', 'nanosecond', date_part_name='year')", "TimeDimension('metric_time', 'quarter')", "TimeDimension('metric_time', 'quarter', date_part_name='quarter')", "TimeDimension('metric_time', 'quarter', date_part_name='year')", + "TimeDimension('metric_time', 'second')", + "TimeDimension('metric_time', 'second', date_part_name='day')", + "TimeDimension('metric_time', 'second', date_part_name='dow')", + "TimeDimension('metric_time', 'second', date_part_name='doy')", + "TimeDimension('metric_time', 'second', date_part_name='month')", + "TimeDimension('metric_time', 'second', date_part_name='quarter')", + "TimeDimension('metric_time', 'second', date_part_name='year')", "TimeDimension('metric_time', 'week')", "TimeDimension('metric_time', 'week', date_part_name='month')", "TimeDimension('metric_time', 'week', date_part_name='quarter')", diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt index 2f48fe86a4..321d452252 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/list/test_linkable_element_set_as_spec_set__set0.txt @@ -20,8 +20,6 @@ 'listing__booking__listing__booking_value_sub_instant', 'listing__booking__listing__booking_value_sub_instant_add_10', 'listing__booking__listing__bookings', - 'listing__booking__listing__bookings_before_dec_20_2019', - 'listing__booking__listing__bookings_between_dec_18_2019_and_dec_20_2019', 'listing__booking__listing__bookings_fill_nulls_with_0', 'listing__booking__listing__bookings_fill_nulls_with_0_without_time_spine', 'listing__booking__listing__bookings_join_to_time_spine', @@ -56,8 +54,6 @@ 'listing__booking_value_sub_instant', 'listing__booking_value_sub_instant_add_10', 'listing__bookings', - 'listing__bookings_before_dec_20_2019', - 'listing__bookings_between_dec_18_2019_and_dec_20_2019', 'listing__bookings_fill_nulls_with_0', 'listing__bookings_fill_nulls_with_0_without_time_spine', 'listing__bookings_join_to_time_spine', @@ -163,6 +159,74 @@ 'user__account__user__regional_starting_balance_ratios', 'user__account__user__total_account_balance_first_day', 'user__active_listings', + 'user__archived_at__day', + 'user__archived_at__extract_day', + 'user__archived_at__extract_day', + 'user__archived_at__extract_dow', + 'user__archived_at__extract_dow', + 'user__archived_at__extract_doy', + 'user__archived_at__extract_doy', + 'user__archived_at__extract_month', + 'user__archived_at__extract_month', + 'user__archived_at__extract_month', + 'user__archived_at__extract_month', + 'user__archived_at__extract_quarter', + 'user__archived_at__extract_quarter', + 'user__archived_at__extract_quarter', + 'user__archived_at__extract_quarter', + 'user__archived_at__extract_quarter', + 'user__archived_at__extract_year', + 'user__archived_at__extract_year', + 'user__archived_at__extract_year', + 'user__archived_at__extract_year', + 'user__archived_at__extract_year', + 'user__archived_at__extract_year', + 'user__archived_at__hour', + 'user__archived_at__month', + 'user__archived_at__quarter', + 'user__archived_at__week', + 'user__archived_at__year', + 'user__bio_added_ts__day', + 'user__bio_added_ts__extract_day', + 'user__bio_added_ts__extract_day', + 'user__bio_added_ts__extract_day', + 'user__bio_added_ts__extract_day', + 'user__bio_added_ts__extract_dow', + 'user__bio_added_ts__extract_dow', + 'user__bio_added_ts__extract_dow', + 'user__bio_added_ts__extract_dow', + 'user__bio_added_ts__extract_doy', + 'user__bio_added_ts__extract_doy', + 'user__bio_added_ts__extract_doy', + 'user__bio_added_ts__extract_doy', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__hour', + 'user__bio_added_ts__minute', + 'user__bio_added_ts__month', + 'user__bio_added_ts__quarter', + 'user__bio_added_ts__second', + 'user__bio_added_ts__week', + 'user__bio_added_ts__year', 'user__company', 'user__company_name', 'user__created_at__day', @@ -250,6 +314,88 @@ 'user__home_state_latest', 'user__identity_verifications', 'user__largest_listing', + 'user__last_login_ts__day', + 'user__last_login_ts__extract_day', + 'user__last_login_ts__extract_day', + 'user__last_login_ts__extract_day', + 'user__last_login_ts__extract_dow', + 'user__last_login_ts__extract_dow', + 'user__last_login_ts__extract_dow', + 'user__last_login_ts__extract_doy', + 'user__last_login_ts__extract_doy', + 'user__last_login_ts__extract_doy', + 'user__last_login_ts__extract_month', + 'user__last_login_ts__extract_month', + 'user__last_login_ts__extract_month', + 'user__last_login_ts__extract_month', + 'user__last_login_ts__extract_month', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__hour', + 'user__last_login_ts__minute', + 'user__last_login_ts__month', + 'user__last_login_ts__quarter', + 'user__last_login_ts__week', + 'user__last_login_ts__year', + 'user__last_profile_edit_ts__day', + 'user__last_profile_edit_ts__extract_day', + 'user__last_profile_edit_ts__extract_day', + 'user__last_profile_edit_ts__extract_day', + 'user__last_profile_edit_ts__extract_day', + 'user__last_profile_edit_ts__extract_day', + 'user__last_profile_edit_ts__extract_dow', + 'user__last_profile_edit_ts__extract_dow', + 'user__last_profile_edit_ts__extract_dow', + 'user__last_profile_edit_ts__extract_dow', + 'user__last_profile_edit_ts__extract_dow', + 'user__last_profile_edit_ts__extract_doy', + 'user__last_profile_edit_ts__extract_doy', + 'user__last_profile_edit_ts__extract_doy', + 'user__last_profile_edit_ts__extract_doy', + 'user__last_profile_edit_ts__extract_doy', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__hour', + 'user__last_profile_edit_ts__millisecond', + 'user__last_profile_edit_ts__minute', + 'user__last_profile_edit_ts__month', + 'user__last_profile_edit_ts__quarter', + 'user__last_profile_edit_ts__second', + 'user__last_profile_edit_ts__week', + 'user__last_profile_edit_ts__year', 'user__listing__user__active_listings', 'user__listing__user__approximate_continuous_booking_value_p99', 'user__listing__user__approximate_discrete_booking_value_p99', @@ -266,8 +412,6 @@ 'user__listing__user__booking_value_sub_instant', 'user__listing__user__booking_value_sub_instant_add_10', 'user__listing__user__bookings', - 'user__listing__user__bookings_before_dec_20_2019', - 'user__listing__user__bookings_between_dec_18_2019_and_dec_20_2019', 'user__listing__user__bookings_fill_nulls_with_0', 'user__listing__user__bookings_fill_nulls_with_0_without_time_spine', 'user__listing__user__bookings_join_to_time_spine', diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt index 5ade8cd35d..cba715b557 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_all_properties__result0.txt @@ -1,302 +1,602 @@ -Model Join-Path Entity Links Name Time Granularity Date Part Properties ---------------------------------------------------------- ------------------- ----------------- ------------------ ----------- --------------------------------------------------- -('bookings_source',) () listing ['ENTITY', 'LOCAL'] -('bookings_source',) () metric_time DAY ['METRIC_TIME'] -('bookings_source',) () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source',) () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('bookings_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) country_latest ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('bookings_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] -('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] -('bookings_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] -('views_source',) () listing ['ENTITY', 'LOCAL'] -('views_source',) () metric_time DAY ['METRIC_TIME'] -('views_source',) () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source',) () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -('views_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) country_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -('views_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] -('views_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] -('views_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] +Model Join-Path Entity Links Name Time Granularity Date Part Properties +--------------------------------------------------------- ------------------- -------------------- ------------------ ----------- --------------------------------------------------- +('bookings_source',) () listing ['ENTITY', 'LOCAL'] +('bookings_source',) () metric_time DAY ['METRIC_TIME'] +('bookings_source',) () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source',) () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('bookings_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) country_latest ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('bookings_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] +('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] +('bookings_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] +('views_source',) () listing ['ENTITY', 'LOCAL'] +('views_source',) () metric_time DAY ['METRIC_TIME'] +('views_source',) () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source',) () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +('views_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) country_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('views_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] +('views_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MINUTE YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MINUTE YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND DAY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND DOW ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND DOY ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts SECOND YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] +('views_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt index ac202ecaf3..98dd8771e6 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_matching_item_for_filters.py/GroupByItemResolution/test_ambiguous_metric_time_in_query_filter__no_metrics__result.txt @@ -8,7 +8,7 @@ GroupByItemResolution( time_granularity=DAY, ): ( LinkableDimension( - properties=(METRIC_TIME,), + properties=(DERIVED_TIME_GRANULARITY, METRIC_TIME), element_name='metric_time', dimension_type=TIME, join_path=SemanticModelJoinPath( diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt index 2d1f6dcfa7..b7da0d4916 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/dict/test_get_names__result0.txt @@ -1,6 +1,8 @@ { 'dimension_references': [ 'account_type', + 'archived_at', + 'bio_added_ts', 'capacity_latest', 'company_name', 'country_latest', @@ -12,6 +14,8 @@ 'home_state_latest', 'is_instant', 'is_lux_latest', + 'last_login_ts', + 'last_profile_edit_ts', 'paid_at', 'referrer_id', 'verification_type', diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt index bda0664dfa..a9b388b32b 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure__result0.txt @@ -36,8 +36,6 @@ Model Join-Path Entity Links ('listings_latest',) ("('listing',)", "('booking', 'listing')") booking_value_sub_instant ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('booking', 'listing')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('booking', 'listing')") bookings ['JOINED', 'METRIC'] -('listings_latest',) ("('listing',)", "('booking', 'listing')") bookings_before_dec_20_2019 ['JOINED', 'METRIC'] -('listings_latest',) ("('listing',)", "('booking', 'listing')") bookings_between_dec_18_2019_and_dec_20_2019 ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('booking', 'listing')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('booking', 'listing')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('booking', 'listing')") bookings_join_to_time_spine ['JOINED', 'METRIC'] @@ -79,8 +77,6 @@ Model Join-Path Entity Links ('listings_latest',) ("('listing',)", "('listing',)") booking_value_sub_instant ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('listing',)") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('listing',)") bookings ['JOINED', 'METRIC'] -('listings_latest',) ("('listing',)", "('listing',)") bookings_before_dec_20_2019 ['JOINED', 'METRIC'] -('listings_latest',) ("('listing',)", "('listing',)") bookings_between_dec_18_2019_and_dec_20_2019 ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('listing',)") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('listing',)") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] ('listings_latest',) ("('listing',)", "('listing',)") bookings_join_to_time_spine ['JOINED', 'METRIC'] @@ -140,8 +136,6 @@ Model Join-Path Entity Links ('listings_latest',) ("('user',)", "('listing', 'user')") booking_value_sub_instant ['JOINED', 'METRIC'] ('listings_latest',) ("('user',)", "('listing', 'user')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] ('listings_latest',) ("('user',)", "('listing', 'user')") bookings ['JOINED', 'METRIC'] -('listings_latest',) ("('user',)", "('listing', 'user')") bookings_before_dec_20_2019 ['JOINED', 'METRIC'] -('listings_latest',) ("('user',)", "('listing', 'user')") bookings_between_dec_18_2019_and_dec_20_2019 ['JOINED', 'METRIC'] ('listings_latest',) ("('user',)", "('listing', 'user')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] ('listings_latest',) ("('user',)", "('listing', 'user')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] ('listings_latest',) ("('user',)", "('listing', 'user')") bookings_join_to_time_spine ['JOINED', 'METRIC'] @@ -254,6 +248,74 @@ Model Join-Path Entity Links ('listings_latest', 'companies') ('user',) company ['ENTITY', 'JOINED'] ('listings_latest', 'companies') ('user',) company_name ['JOINED'] ('listings_latest', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR DAY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR DOW ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR DOY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR MONTH ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR QUARTER ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at HOUR YEAR ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) archived_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MINUTE YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND DAY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND DOW ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND DOY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND MONTH ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND QUARTER ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts SECOND YEAR ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) bio_added_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] ('listings_latest', 'users_ds_source') ('user',) created_at DAY ['JOINED'] ('listings_latest', 'users_ds_source') ('user',) created_at DAY DAY ['JOINED'] ('listings_latest', 'users_ds_source') ('user',) created_at DAY DOW ['JOINED'] @@ -315,6 +377,88 @@ Model Join-Path Entity Links ('listings_latest', 'users_ds_source') ('user',) ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] ('listings_latest', 'users_ds_source') ('user',) ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] ('listings_latest', 'users_ds_source') ('user',) home_state ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE DAY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE DOW ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE DOY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE MONTH ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE QUARTER ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MINUTE YEAR ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_login_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts DAY YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts HOUR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND DAY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND DOW ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND DOY ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND MONTH ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND QUARTER ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND YEAR ['JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MINUTE YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND DAY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND DOW ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND DOY ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts SECOND YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +('listings_latest', 'users_ds_source') ('user',) last_profile_edit_ts YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] ('listings_latest', 'users_latest') ('user',) ds_latest DAY ['JOINED'] ('listings_latest', 'users_latest') ('user',) ds_latest DAY DAY ['JOINED'] ('listings_latest', 'users_latest') ('user',) ds_latest DAY DOW ['JOINED'] diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt index 39a66bae59..9e424ad035 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_metrics__result0.txt @@ -1,103 +1,159 @@ -Model Join-Path Entity Links Name Time Granularity Date Part Properties ------------------------------------------------------- ------------------- ----------------- ------------------ ----------- --------------------------------- -('views_source',) () listing ['ENTITY', 'LOCAL'] -('views_source',) () user ['ENTITY', 'LOCAL'] -('views_source',) ('view',) ds DAY ['LOCAL'] -('views_source',) ('view',) ds DAY DAY ['LOCAL'] -('views_source',) ('view',) ds DAY DOW ['LOCAL'] -('views_source',) ('view',) ds DAY DOY ['LOCAL'] -('views_source',) ('view',) ds DAY MONTH ['LOCAL'] -('views_source',) ('view',) ds DAY QUARTER ['LOCAL'] -('views_source',) ('view',) ds DAY YEAR ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY DAY ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY DOW ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY DOY ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY MONTH ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY QUARTER ['LOCAL'] -('views_source',) ('view',) ds_partitioned DAY YEAR ['LOCAL'] -('views_source',) ('view',) listing ['ENTITY', 'LOCAL'] -('views_source',) ('view',) user ['ENTITY', 'LOCAL'] -('views_source', 'companies') ('user',) company ['ENTITY', 'JOINED'] -('views_source', 'companies') ('user',) company_name ['JOINED'] -('views_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) country_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] -('views_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] -('views_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] -('views_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY ['JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY DAY ['JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY DOW ['JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY DOY ['JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY MONTH ['JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY QUARTER ['JOINED'] -('views_source', 'users_ds_source') ('user',) created_at DAY YEAR ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY DAY ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY DOW ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY DOY ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY MONTH ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY QUARTER ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds DAY YEAR ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY DAY ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY DOW ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY DOY ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY MONTH ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY QUARTER ['JOINED'] -('views_source', 'users_ds_source') ('user',) ds_partitioned DAY YEAR ['JOINED'] -('views_source', 'users_ds_source') ('user',) home_state ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY DAY ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY DOW ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY DOY ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY MONTH ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY QUARTER ['JOINED'] -('views_source', 'users_latest') ('user',) ds_latest DAY YEAR ['JOINED'] -('views_source', 'users_latest') ('user',) home_state_latest ['JOINED'] +Model Join-Path Entity Links Name Time Granularity Date Part Properties +------------------------------------------------------ ------------------- -------------------- ------------------ ----------- --------------------------------- +('views_source',) () listing ['ENTITY', 'LOCAL'] +('views_source',) () user ['ENTITY', 'LOCAL'] +('views_source',) ('view',) ds DAY ['LOCAL'] +('views_source',) ('view',) ds DAY DAY ['LOCAL'] +('views_source',) ('view',) ds DAY DOW ['LOCAL'] +('views_source',) ('view',) ds DAY DOY ['LOCAL'] +('views_source',) ('view',) ds DAY MONTH ['LOCAL'] +('views_source',) ('view',) ds DAY QUARTER ['LOCAL'] +('views_source',) ('view',) ds DAY YEAR ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY DAY ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY DOW ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY DOY ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY MONTH ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY QUARTER ['LOCAL'] +('views_source',) ('view',) ds_partitioned DAY YEAR ['LOCAL'] +('views_source',) ('view',) listing ['ENTITY', 'LOCAL'] +('views_source',) ('view',) user ['ENTITY', 'LOCAL'] +('views_source', 'companies') ('user',) company ['ENTITY', 'JOINED'] +('views_source', 'companies') ('user',) company_name ['JOINED'] +('views_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) country_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] +('views_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] +('views_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] +('views_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR ['JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) archived_at HOUR YEAR ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) bio_added_ts SECOND YEAR ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) created_at DAY YEAR ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds DAY YEAR ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) ds_partitioned DAY YEAR ['JOINED'] +('views_source', 'users_ds_source') ('user',) home_state ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_login_ts MINUTE YEAR ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND DAY ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND DOW ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND DOY ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND MONTH ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND QUARTER ['JOINED'] +('views_source', 'users_ds_source') ('user',) last_profile_edit_ts MILLISECOND YEAR ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY DAY ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY DOW ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY DOY ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY MONTH ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY QUARTER ['JOINED'] +('views_source', 'users_latest') ('user',) ds_latest DAY YEAR ['JOINED'] +('views_source', 'users_latest') ('user',) home_state_latest ['JOINED'] diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt index 4bb311eb3b..7652399b70 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_set_for_common_dimensions_in_different_models__result0.txt @@ -1,108 +1,164 @@ -Model Join-Path Entity Links Name Time Granularity Date Part Properties ---------------------------------------------------------- ------------------- ----------------- ------------------ ----------- --------------------------------- -('bookings_source',) () listing ['ENTITY', 'LOCAL'] -('bookings_source',) () metric_time DAY ['METRIC_TIME'] -('bookings_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) country_latest ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] -('bookings_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] -('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] -('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] -('bookings_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] -('views_source',) () listing ['ENTITY', 'LOCAL'] -('views_source',) () metric_time DAY ['METRIC_TIME'] -('views_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) country_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] -('views_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] -('views_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] -('views_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] -('views_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] -('views_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] -('views_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] -('views_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] +Model Join-Path Entity Links Name Time Granularity Date Part Properties +--------------------------------------------------------- ------------------- -------------------- ------------------ ----------- --------------------------------- +('bookings_source',) () listing ['ENTITY', 'LOCAL'] +('bookings_source',) () metric_time DAY ['METRIC_TIME'] +('bookings_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) country_latest ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] +('bookings_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] +('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] +('bookings_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] +('bookings_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] +('views_source',) () listing ['ENTITY', 'LOCAL'] +('views_source',) () metric_time DAY ['METRIC_TIME'] +('views_source', 'listings_latest') ('listing',) capacity_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) country_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DOW ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY DOY ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY MONTH ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY QUARTER ['JOINED'] +('views_source', 'listings_latest') ('listing',) created_at DAY YEAR ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DAY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DOW ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY DOY ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY MONTH ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY QUARTER ['JOINED'] +('views_source', 'listings_latest') ('listing',) ds DAY YEAR ['JOINED'] +('views_source', 'listings_latest') ('listing',) is_lux_latest ['JOINED'] +('views_source', 'listings_latest') ('listing',) user ['ENTITY', 'JOINED'] +('views_source', 'listings_latest', 'companies') ('listing', 'user') company ['ENTITY', 'JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'companies') ('listing', 'user') company_name ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') archived_at HOUR YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') bio_added_ts SECOND YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') ds_partitioned DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') home_state ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_login_ts MINUTE YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_ds_source') ('listing', 'user') last_profile_edit_ts MILLISECOND YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DAY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOW ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY DOY ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY MONTH ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY QUARTER ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') ds_latest DAY YEAR ['JOINED', 'MULTI_HOP'] +('views_source', 'listings_latest', 'users_latest') ('listing', 'user') home_state_latest ['JOINED', 'MULTI_HOP'] +('views_source', 'lux_listing_mapping') ('listing',) lux_listing ['ENTITY', 'JOINED'] diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt index 7cf20ab18e..d27aa93bbf 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/tuple/test_linkable_elements_for_no_metrics_query__result0.txt @@ -59,8 +59,6 @@ 'company__listing__user__company__booking_value_sub_instant', 'company__listing__user__company__booking_value_sub_instant_add_10', 'company__listing__user__company__bookings', - 'company__listing__user__company__bookings_before_dec_20_2019', - 'company__listing__user__company__bookings_between_dec_18_2019_and_dec_20_2019', 'company__listing__user__company__bookings_fill_nulls_with_0', 'company__listing__user__company__bookings_fill_nulls_with_0_without_time_spine', 'company__listing__user__company__bookings_join_to_time_spine', @@ -127,8 +125,6 @@ 'guest__booking__guest__booking_value_sub_instant', 'guest__booking__guest__booking_value_sub_instant_add_10', 'guest__booking__guest__bookings', - 'guest__booking__guest__bookings_before_dec_20_2019', - 'guest__booking__guest__bookings_between_dec_18_2019_and_dec_20_2019', 'guest__booking__guest__bookings_fill_nulls_with_0', 'guest__booking__guest__bookings_fill_nulls_with_0_without_time_spine', 'guest__booking__guest__bookings_join_to_time_spine', @@ -162,8 +158,6 @@ 'guest__booking_value_sub_instant', 'guest__booking_value_sub_instant_add_10', 'guest__bookings', - 'guest__bookings_before_dec_20_2019', - 'guest__bookings_between_dec_18_2019_and_dec_20_2019', 'guest__bookings_fill_nulls_with_0', 'guest__bookings_fill_nulls_with_0_without_time_spine', 'guest__bookings_join_to_time_spine', @@ -208,8 +202,6 @@ 'host__booking__host__booking_value_sub_instant', 'host__booking__host__booking_value_sub_instant_add_10', 'host__booking__host__bookings', - 'host__booking__host__bookings_before_dec_20_2019', - 'host__booking__host__bookings_between_dec_18_2019_and_dec_20_2019', 'host__booking__host__bookings_fill_nulls_with_0', 'host__booking__host__bookings_fill_nulls_with_0_without_time_spine', 'host__booking__host__bookings_join_to_time_spine', @@ -243,8 +235,6 @@ 'host__booking_value_sub_instant', 'host__booking_value_sub_instant_add_10', 'host__bookings', - 'host__bookings_before_dec_20_2019', - 'host__bookings_between_dec_18_2019_and_dec_20_2019', 'host__bookings_fill_nulls_with_0', 'host__bookings_fill_nulls_with_0_without_time_spine', 'host__bookings_join_to_time_spine', @@ -290,8 +280,6 @@ 'listing__booking__listing__booking_value_sub_instant', 'listing__booking__listing__booking_value_sub_instant_add_10', 'listing__booking__listing__bookings', - 'listing__booking__listing__bookings_before_dec_20_2019', - 'listing__booking__listing__bookings_between_dec_18_2019_and_dec_20_2019', 'listing__booking__listing__bookings_fill_nulls_with_0', 'listing__booking__listing__bookings_fill_nulls_with_0_without_time_spine', 'listing__booking__listing__bookings_join_to_time_spine', @@ -326,8 +314,6 @@ 'listing__booking_value_sub_instant', 'listing__booking_value_sub_instant_add_10', 'listing__bookings', - 'listing__bookings_before_dec_20_2019', - 'listing__bookings_between_dec_18_2019_and_dec_20_2019', 'listing__bookings_fill_nulls_with_0', 'listing__bookings_fill_nulls_with_0_without_time_spine', 'listing__bookings_join_to_time_spine', @@ -399,8 +385,6 @@ 'lux_listing__listing__lux_listing__booking_value_sub_instant', 'lux_listing__listing__lux_listing__booking_value_sub_instant_add_10', 'lux_listing__listing__lux_listing__bookings', - 'lux_listing__listing__lux_listing__bookings_before_dec_20_2019', - 'lux_listing__listing__lux_listing__bookings_between_dec_18_2019_and_dec_20_2019', 'lux_listing__listing__lux_listing__bookings_fill_nulls_with_0', 'lux_listing__listing__lux_listing__bookings_fill_nulls_with_0_without_time_spine', 'lux_listing__listing__lux_listing__bookings_join_to_time_spine', @@ -435,7 +419,6 @@ 'lux_listing__listing__lux_listing__twice_bookings_fill_nulls_with_0_without_time_spine', 'lux_listing__listing__lux_listing__views', 'lux_listing__listing__lux_listing__views_times_booking_value', - 'metric_time__day', 'revenue_instance__ds__day', 'revenue_instance__ds__extract_day', 'revenue_instance__ds__extract_dow', @@ -461,6 +444,20 @@ 'user__account__user__regional_starting_balance_ratios', 'user__account__user__total_account_balance_first_day', 'user__active_listings', + 'user__archived_at__extract_day', + 'user__archived_at__extract_dow', + 'user__archived_at__extract_doy', + 'user__archived_at__extract_month', + 'user__archived_at__extract_quarter', + 'user__archived_at__extract_year', + 'user__archived_at__hour', + 'user__bio_added_ts__extract_day', + 'user__bio_added_ts__extract_dow', + 'user__bio_added_ts__extract_doy', + 'user__bio_added_ts__extract_month', + 'user__bio_added_ts__extract_quarter', + 'user__bio_added_ts__extract_year', + 'user__bio_added_ts__second', 'user__company', 'user__company_name', 'user__created_at__day', @@ -496,6 +493,20 @@ 'user__home_state_latest', 'user__identity_verifications', 'user__largest_listing', + 'user__last_login_ts__extract_day', + 'user__last_login_ts__extract_dow', + 'user__last_login_ts__extract_doy', + 'user__last_login_ts__extract_month', + 'user__last_login_ts__extract_quarter', + 'user__last_login_ts__extract_year', + 'user__last_login_ts__minute', + 'user__last_profile_edit_ts__extract_day', + 'user__last_profile_edit_ts__extract_dow', + 'user__last_profile_edit_ts__extract_doy', + 'user__last_profile_edit_ts__extract_month', + 'user__last_profile_edit_ts__extract_quarter', + 'user__last_profile_edit_ts__extract_year', + 'user__last_profile_edit_ts__millisecond', 'user__listing__user__active_listings', 'user__listing__user__approximate_continuous_booking_value_p99', 'user__listing__user__approximate_discrete_booking_value_p99', @@ -512,8 +523,6 @@ 'user__listing__user__booking_value_sub_instant', 'user__listing__user__booking_value_sub_instant_add_10', 'user__listing__user__bookings', - 'user__listing__user__bookings_before_dec_20_2019', - 'user__listing__user__bookings_between_dec_18_2019_and_dec_20_2019', 'user__listing__user__bookings_fill_nulls_with_0', 'user__listing__user__bookings_fill_nulls_with_0_without_time_spine', 'user__listing__user__bookings_join_to_time_spine', diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt index c2032697c8..8d6db7c744 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_filters_in_multi_metric_query__result_0.txt @@ -18,8 +18,8 @@ Error #1: "TimeDimension('listing__created_at', 'day')", "Dimension('listing__is_lux_latest')", "TimeDimension('listing__ds', 'day')", + "TimeDimension('user__archived_at', 'hour')", "TimeDimension('user__created_at', 'day')", - "TimeDimension('user__ds_latest', 'day')", ] Query Input: diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt index 0bbbe1a1a0..ae82301f75 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_suggestions.py/str/test_suggestions_for_defined_where_filter__result_0.txt @@ -19,7 +19,7 @@ Error #1: "Dimension('listing__is_lux_latest')", "TimeDimension('listing__ds', 'day')", "Dimension('listing__country_latest')", - "TimeDimension('user__created_at', 'day')", + "TimeDimension('user__archived_at', 'hour')", ] Query Input: diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index d22533be75..b5a11fb2e8 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -200,14 +200,19 @@ def _find_joinable_candidate_nodes_that_can_satisfy_linkable_specs( candidates_for_join: List[JoinLinkableInstancesRecipe] = [] left_node_spec_set = left_node_instance_set.spec_set for right_node in self._nodes_available_for_joins: + data_set_in_right_node: SqlDataSet = self._node_data_set_resolver.get_output_data_set(right_node) + linkable_specs_in_right_node = data_set_in_right_node.instance_set.spec_set.linkable_specs + # If right node is time spine source node, use cross join. if right_node in self._time_spine_nodes: - needed_metric_time_specs = group_specs_by_type(needed_linkable_specs).metric_time_specs + satisfiable_metric_time_specs = [ + spec for spec in linkable_specs_in_right_node if spec in needed_linkable_specs + ] candidates_for_join.append( JoinLinkableInstancesRecipe( node_to_join=right_node, join_on_entity=None, - satisfiable_linkable_specs=list(needed_metric_time_specs), + satisfiable_linkable_specs=list(satisfiable_metric_time_specs), join_on_partition_dimensions=(), join_on_partition_time_dimensions=(), join_type=SqlJoinType.CROSS_JOIN, @@ -215,8 +220,6 @@ def _find_joinable_candidate_nodes_that_can_satisfy_linkable_specs( ) continue - data_set_in_right_node: SqlDataSet = self._node_data_set_resolver.get_output_data_set(right_node) - linkable_specs_in_right_node = data_set_in_right_node.instance_set.spec_set.linkable_specs entity_specs_in_right_node = data_set_in_right_node.instance_set.spec_set.entity_specs # For each unlinked entity in the data set, create a candidate for joining. diff --git a/metricflow/dataset/convert_semantic_model.py b/metricflow/dataset/convert_semantic_model.py index 198bdbce87..3304aefce3 100644 --- a/metricflow/dataset/convert_semantic_model.py +++ b/metricflow/dataset/convert_semantic_model.py @@ -104,7 +104,7 @@ def _create_time_dimension_instance( self, element_name: str, entity_links: Tuple[EntityReference, ...], - time_granularity: TimeGranularity = DEFAULT_TIME_GRANULARITY, + time_granularity: TimeGranularity, date_part: Optional[DatePart] = None, semantic_model_name: Optional[str] = None, ) -> TimeDimensionInstance: @@ -332,7 +332,7 @@ def _build_time_dimension_instances_and_columns( ) -> Tuple[List[TimeDimensionInstance], List[SqlSelectColumn]]: time_dimension_instances: List[TimeDimensionInstance] = [] select_columns: List[SqlSelectColumn] = [] - # Add time dimensions with a smaller granularity for ease in query resolution + # Add time dimensions with a larger granularity for ease in query resolution for time_granularity in TimeGranularity: if time_granularity.to_int() > defined_time_granularity.to_int(): time_dimension_instance = self._create_time_dimension_instance( diff --git a/tests_metricflow/dataflow/builder/test_node_data_set.py b/tests_metricflow/dataflow/builder/test_node_data_set.py index 1402472277..86bc84d7d5 100644 --- a/tests_metricflow/dataflow/builder/test_node_data_set.py +++ b/tests_metricflow/dataflow/builder/test_node_data_set.py @@ -5,6 +5,7 @@ from _pytest.fixtures import FixtureRequest from dbt_semantic_interfaces.references import SemanticModelElementReference +from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.aggregation_properties import AggregationState from metricflow_semantics.instances import ( InstanceSet, @@ -38,7 +39,7 @@ def test_no_parent_node_data_set( simple_semantic_manifest_lookup: SemanticManifestLookup, - time_spine_source: TimeSpineSource, + time_spine_sources: Mapping[TimeGranularity, TimeSpineSource], ) -> None: """Tests getting the data set from a single node.""" resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( @@ -93,7 +94,7 @@ def test_joined_node_data_set( mf_test_configuration: MetricFlowTestConfiguration, mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], simple_semantic_manifest_lookup: SemanticManifestLookup, - time_spine_source: TimeSpineSource, + time_spine_sources: Mapping[TimeGranularity, TimeSpineSource], ) -> None: """Tests getting the data set from a dataflow plan with a join.""" resolver: DataflowPlanNodeOutputDataSetResolver = DataflowPlanNodeOutputDataSetResolver( diff --git a/tests_metricflow/fixtures/dataflow_fixtures.py b/tests_metricflow/fixtures/dataflow_fixtures.py index 76604df857..571d86972d 100644 --- a/tests_metricflow/fixtures/dataflow_fixtures.py +++ b/tests_metricflow/fixtures/dataflow_fixtures.py @@ -3,6 +3,7 @@ from typing import Mapping import pytest +from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration @@ -90,7 +91,30 @@ def scd_query_parser( # noqa: D103 @pytest.fixture(scope="session") -def time_spine_source( # noqa: D103 +def time_spine_sources( # noqa: D103 sql_client: SqlClient, mf_test_configuration: MetricFlowTestConfiguration # noqa: F811 -) -> TimeSpineSource: - return TimeSpineSource(schema_name=mf_test_configuration.mf_source_schema, table_name="mf_time_spine") +) -> Mapping[TimeGranularity, TimeSpineSource]: + legacy_time_spine_grain = TimeGranularity.DAY + time_spine_base_table_name = "mf_time_spine" + print("expected schema name:", mf_test_configuration.mf_source_schema) + # Legacy time spine + time_spine_sources = { + legacy_time_spine_grain: TimeSpineSource( + schema_name=mf_test_configuration.mf_source_schema, table_name=time_spine_base_table_name + ) + } + # Current time spines + for granularity in TimeGranularity: + if ( + granularity in sql_client.sql_engine_type.unsupported_granularities + or granularity.to_int() >= legacy_time_spine_grain.to_int() + ): + continue + time_spine_sources[granularity] = TimeSpineSource( + schema_name=mf_test_configuration.mf_source_schema, + table_name=f"{time_spine_base_table_name}_{granularity.value}", + time_column_name="ts", + time_column_granularity=granularity, + ) + + return time_spine_sources diff --git a/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users.yaml b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users.yaml index f471960d30..430b76b49c 100644 --- a/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users.yaml +++ b/tests_metricflow/fixtures/source_table_snapshots/simple_model/dim_users.yaml @@ -11,16 +11,25 @@ table_snapshot: type: STRING - name: home_state type: STRING + - name: last_profile_edit_ts + type: TIME + - name: bio_added_ts + type: TIME + - name: last_login_ts + type: TIME + - name: archived_at + type: TIME + rows: - - ["2020-01-01", "2020-01-01", "2019-03-03", "u0004114", "CA"] - - ["2020-01-01", "2020-01-01", "2019-04-03", "u1612112", "CA"] - - ["2020-01-01", "2020-01-01", "2017-03-03", "u0005432", "TX"] - - ["2020-01-01", "2020-01-01", "2013-03-03", "u0003452", "HI"] - - ["2020-01-01", "2020-01-01", "2014-03-03", "u0003154", "MD"] - - ["2020-01-01", "2020-01-01", "2015-03-03", "u0003141", "NY"] - - ["2020-01-02", "2020-01-02", "2019-03-03", "u0004114", "CA"] - - ["2020-01-02", "2020-01-02", "2019-04-03", "u1612112", "WA"] - - ["2020-01-02", "2020-01-02", "2017-03-03", "u0005432", "TX"] - - ["2020-01-02", "2020-01-02", "2013-03-03", "u0003452", "HI"] - - ["2020-01-02", "2020-01-02", "2014-03-03", "u0003154", "MD"] - - ["2020-01-02", "2020-01-02", "2015-03-03", "u0003141", "NY"] + - ["2020-01-01", "2020-01-01", "2019-03-03", "u0004114", "CA", "2020-01-01 00:00:00.000", "2020-01-01 00:00:00", "2020-01-01 00:00:00", "2020-01-01 01:00:00"] + - ["2020-01-01", "2020-01-01", "2019-04-03", "u1612112", "CA", "2020-01-01 00:00:00.001", "2020-01-01 00:00:01", "2020-01-01 00:01:00", "2020-01-01 02:00:00"] + - ["2020-01-01", "2020-01-01", "2017-03-03", "u0005432", "TX", "2020-01-01 00:00:00.002", "2020-01-01 00:00:02", "2020-01-01 00:02:00", "2020-01-01 03:00:00"] + - ["2020-01-01", "2020-01-01", "2013-03-03", "u0003452", "HI", "2020-01-01 00:00:00.003", "2020-01-01 00:00:03", "2020-01-01 00:03:00", "2020-01-01 04:00:00"] + - ["2020-01-01", "2020-01-01", "2014-03-03", "u0003154", "MD", "2020-01-01 00:00:00.004", "2020-01-01 00:00:04", "2020-01-01 00:04:00", "2020-01-01 05:00:00"] + - ["2020-01-01", "2020-01-01", "2015-03-03", "u0003141", "NY", "2020-01-01 00:00:00.005", "2020-01-01 00:00:05", "2020-01-01 00:05:00", "2020-01-01 06:00:00"] + - ["2020-01-02", "2020-01-02", "2019-03-03", "u0004114", "CA", "2020-01-01 00:00:00.006", "2020-01-01 00:00:06", "2020-01-01 00:06:00", "2020-01-01 07:00:00"] + - ["2020-01-02", "2020-01-02", "2019-04-03", "u1612112", "WA", "2020-01-01 00:00:00.007", "2020-01-01 00:00:07", "2020-01-01 00:07:00", "2020-01-01 08:00:00"] + - ["2020-01-02", "2020-01-02", "2017-03-03", "u0005432", "TX", "2020-01-01 00:00:00.008", "2020-01-01 00:00:08", "2020-01-01 00:08:00", "2020-01-01 09:00:00"] + - ["2020-01-02", "2020-01-02", "2013-03-03", "u0003452", "HI", "2020-01-01 00:00:00.009", "2020-01-01 00:00:09", "2020-01-01 00:09:00", "2020-01-01 10:00:00"] + - ["2020-01-02", "2020-01-02", "2014-03-03", "u0003154", "MD", "2020-01-01 00:00:00.010", "2020-01-01 00:00:10", "2020-01-01 00:10:00", "2020-01-01 11:00:00"] + - ["2020-01-02", "2020-01-02", "2015-03-03", "u0003141", "NY", "2020-01-01 00:00:00.011", "2020-01-01 00:00:11", "2020-01-01 00:11:00", "2020-01-01 12:00:00"] diff --git a/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_hour.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_hour.yaml new file mode 100644 index 0000000000..fb56561d49 --- /dev/null +++ b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_hour.yaml @@ -0,0 +1,42 @@ +table_snapshot: + table_name: mf_time_spine_hour + column_definitions: + - name: ts + type: TIME + rows: + - ["2020-01-01 01:00:00"] + - ["2020-01-01 02:00:00"] + - ["2020-01-01 03:00:00"] + - ["2020-01-01 04:00:00"] + - ["2020-01-01 05:00:00"] + - ["2020-01-01 06:00:00"] + - ["2020-01-01 07:00:00"] + - ["2020-01-01 08:00:00"] + - ["2020-01-01 09:00:00"] + - ["2020-01-01 010:00:00"] + - ["2020-01-01 11:00:00"] + - ["2020-01-01 12:00:00"] + - ["2020-01-02 01:00:00"] + - ["2020-01-02 02:00:00"] + - ["2020-01-02 03:00:00"] + - ["2020-01-02 04:00:00"] + - ["2020-01-02 05:00:00"] + - ["2020-01-02 06:00:00"] + - ["2020-01-02 07:00:00"] + - ["2020-01-02 08:00:00"] + - ["2020-01-02 09:00:00"] + - ["2020-01-02 010:00:00"] + - ["2020-01-02 11:00:00"] + - ["2020-01-02 12:00:00"] + - ["2020-01-03 01:00:00"] + - ["2020-01-03 02:00:00"] + - ["2020-01-03 03:00:00"] + - ["2020-01-03 04:00:00"] + - ["2020-01-03 05:00:00"] + - ["2020-01-03 06:00:00"] + - ["2020-01-03 07:00:00"] + - ["2020-01-03 08:00:00"] + - ["2020-01-03 09:00:00"] + - ["2020-01-03 010:00:00"] + - ["2020-01-03 11:00:00"] + - ["2020-01-03 12:00:00"] diff --git a/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_microsecond.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_microsecond.yaml new file mode 100644 index 0000000000..c009928882 --- /dev/null +++ b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_microsecond.yaml @@ -0,0 +1,37 @@ +table_snapshot: + table_name: mf_time_spine_microsecond + column_definitions: + - name: ts + type: TIME + rows: + - ["2020-01-01 00:00:00.000000"] + - ["2020-01-01 00:00:00.000001"] + - ["2020-01-01 00:00:00.000002"] + - ["2020-01-01 00:00:00.000003"] + - ["2020-01-01 00:00:00.000004"] + - ["2020-01-01 00:00:00.000005"] + - ["2020-01-01 00:00:00.000006"] + - ["2020-01-01 00:00:00.000007"] + - ["2020-01-01 00:00:00.000008"] + - ["2020-01-01 00:00:00.000009"] + - ["2020-01-01 00:00:00.000010"] + - ["2020-01-01 00:00:00.000011"] + - ["2020-01-01 00:00:00.000012"] + - ["2020-01-01 00:00:00.000013"] + - ["2020-01-01 00:00:00.000014"] + - ["2020-01-01 00:00:00.000015"] + - ["2020-01-01 00:00:00.000016"] + - ["2020-01-01 00:00:00.000017"] + - ["2020-01-01 00:00:00.000018"] + - ["2020-01-01 00:00:00.000019"] + - ["2020-01-01 00:00:00.000020"] + - ["2020-01-01 00:00:00.000021"] + - ["2020-01-01 00:00:00.000022"] + - ["2020-01-01 00:00:00.000023"] + - ["2020-01-01 00:00:00.000024"] + - ["2020-01-01 00:00:00.000025"] + - ["2020-01-01 00:00:00.000026"] + - ["2020-01-01 00:00:00.000027"] + - ["2020-01-01 00:00:00.000028"] + - ["2020-01-01 00:00:00.000029"] + - ["2020-01-01 00:00:00.000030"] diff --git a/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_millisecond.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_millisecond.yaml new file mode 100644 index 0000000000..4853717090 --- /dev/null +++ b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_millisecond.yaml @@ -0,0 +1,36 @@ +table_snapshot: + table_name: mf_time_spine_millisecond + column_definitions: + - name: ts + type: TIME + rows: + - ["2020-01-01 00:00:00.001"] + - ["2020-01-01 00:00:00.002"] + - ["2020-01-01 00:00:00.003"] + - ["2020-01-01 00:00:00.004"] + - ["2020-01-01 00:00:00.005"] + - ["2020-01-01 00:00:00.006"] + - ["2020-01-01 00:00:00.007"] + - ["2020-01-01 00:00:00.008"] + - ["2020-01-01 00:00:00.009"] + - ["2020-01-01 00:00:00.010"] + - ["2020-01-01 00:00:00.011"] + - ["2020-01-01 00:00:00.012"] + - ["2020-01-01 00:00:00.013"] + - ["2020-01-01 00:00:00.014"] + - ["2020-01-01 00:00:00.015"] + - ["2020-01-01 00:00:00.016"] + - ["2020-01-01 00:00:00.017"] + - ["2020-01-01 00:00:00.018"] + - ["2020-01-01 00:00:00.019"] + - ["2020-01-01 00:00:00.020"] + - ["2020-01-01 00:00:00.021"] + - ["2020-01-01 00:00:00.022"] + - ["2020-01-01 00:00:00.023"] + - ["2020-01-01 00:00:00.024"] + - ["2020-01-01 00:00:00.025"] + - ["2020-01-01 00:00:00.026"] + - ["2020-01-01 00:00:00.027"] + - ["2020-01-01 00:00:00.028"] + - ["2020-01-01 00:00:00.029"] + - ["2020-01-01 00:00:00.030"] diff --git a/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_minute.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_minute.yaml new file mode 100644 index 0000000000..063038276c --- /dev/null +++ b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_minute.yaml @@ -0,0 +1,37 @@ +table_snapshot: + table_name: mf_time_spine_minute + column_definitions: + - name: ts + type: TIME + rows: + - ["2020-01-01 00:00:00"] + - ["2020-01-01 00:01:00"] + - ["2020-01-01 00:02:00"] + - ["2020-01-01 00:03:00"] + - ["2020-01-01 00:04:00"] + - ["2020-01-01 00:05:00"] + - ["2020-01-01 00:06:00"] + - ["2020-01-01 00:07:00"] + - ["2020-01-01 00:08:00"] + - ["2020-01-01 00:09:00"] + - ["2020-01-01 00:10:00"] + - ["2020-01-01 00:11:00"] + - ["2020-01-01 00:12:00"] + - ["2020-01-01 00:13:00"] + - ["2020-01-01 00:14:00"] + - ["2020-01-01 00:15:00"] + - ["2020-01-01 00:16:00"] + - ["2020-01-01 00:17:00"] + - ["2020-01-01 00:18:00"] + - ["2020-01-01 00:19:00"] + - ["2020-01-01 00:20:00"] + - ["2020-01-01 00:21:00"] + - ["2020-01-01 00:22:00"] + - ["2020-01-01 00:23:00"] + - ["2020-01-01 00:24:00"] + - ["2020-01-01 00:25:00"] + - ["2020-01-01 00:26:00"] + - ["2020-01-01 00:27:00"] + - ["2020-01-01 00:28:00"] + - ["2020-01-01 00:29:00"] + - ["2020-01-01 00:30:00"] diff --git a/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_nanosecond.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_nanosecond.yaml new file mode 100644 index 0000000000..e63ddd16ad --- /dev/null +++ b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_nanosecond.yaml @@ -0,0 +1,36 @@ +table_snapshot: + table_name: mf_time_spine_nanosecond + column_definitions: + - name: ts + type: TIME + rows: + - ["2020-01-01 00:00:00.000000001"] + - ["2020-01-01 00:00:00.000000002"] + - ["2020-01-01 00:00:00.000000003"] + - ["2020-01-01 00:00:00.000000004"] + - ["2020-01-01 00:00:00.000000005"] + - ["2020-01-01 00:00:00.000000006"] + - ["2020-01-01 00:00:00.000000007"] + - ["2020-01-01 00:00:00.000000008"] + - ["2020-01-01 00:00:00.000000009"] + - ["2020-01-01 00:00:00.000000010"] + - ["2020-01-01 00:00:00.000000011"] + - ["2020-01-01 00:00:00.000000012"] + - ["2020-01-01 00:00:00.000000013"] + - ["2020-01-01 00:00:00.000000014"] + - ["2020-01-01 00:00:00.000000015"] + - ["2020-01-01 00:00:00.000000016"] + - ["2020-01-01 00:00:00.000000017"] + - ["2020-01-01 00:00:00.000000018"] + - ["2020-01-01 00:00:00.000000019"] + - ["2020-01-01 00:00:00.000000020"] + - ["2020-01-01 00:00:00.000000021"] + - ["2020-01-01 00:00:00.000000022"] + - ["2020-01-01 00:00:00.000000023"] + - ["2020-01-01 00:00:00.000000024"] + - ["2020-01-01 00:00:00.000000025"] + - ["2020-01-01 00:00:00.000000026"] + - ["2020-01-01 00:00:00.000000027"] + - ["2020-01-01 00:00:00.000000028"] + - ["2020-01-01 00:00:00.000000029"] + - ["2020-01-01 00:00:00.000000030"] diff --git a/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_second.yaml b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_second.yaml new file mode 100644 index 0000000000..5d1d193481 --- /dev/null +++ b/tests_metricflow/fixtures/source_table_snapshots/time_spine_table/mf_time_spine_second.yaml @@ -0,0 +1,36 @@ +table_snapshot: + table_name: mf_time_spine_second + column_definitions: + - name: ts + type: TIME + rows: + - ["2020-01-01 00:00:01"] + - ["2020-01-01 00:00:02"] + - ["2020-01-01 00:00:03"] + - ["2020-01-01 00:00:04"] + - ["2020-01-01 00:00:05"] + - ["2020-01-01 00:00:06"] + - ["2020-01-01 00:00:07"] + - ["2020-01-01 00:00:08"] + - ["2020-01-01 00:00:09"] + - ["2020-01-01 00:00:10"] + - ["2020-01-01 00:00:11"] + - ["2020-01-01 00:00:12"] + - ["2020-01-01 00:00:13"] + - ["2020-01-01 00:00:14"] + - ["2020-01-01 00:00:15"] + - ["2020-01-01 00:00:16"] + - ["2020-01-01 00:00:17"] + - ["2020-01-01 00:00:18"] + - ["2020-01-01 00:00:19"] + - ["2020-01-01 00:00:20"] + - ["2020-01-01 00:00:21"] + - ["2020-01-01 00:00:22"] + - ["2020-01-01 00:00:23"] + - ["2020-01-01 00:00:24"] + - ["2020-01-01 00:00:25"] + - ["2020-01-01 00:00:26"] + - ["2020-01-01 00:00:27"] + - ["2020-01-01 00:00:28"] + - ["2020-01-01 00:00:29"] + - ["2020-01-01 00:00:30"] diff --git a/tests_metricflow/integration/conftest.py b/tests_metricflow/integration/conftest.py index 7fef0e7567..5c0da3bdb1 100644 --- a/tests_metricflow/integration/conftest.py +++ b/tests_metricflow/integration/conftest.py @@ -1,9 +1,11 @@ from __future__ import annotations from dataclasses import dataclass +from typing import Mapping import pytest from dbt_semantic_interfaces.test_utils import as_datetime +from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.model.semantic_manifest_lookup import SemanticManifestLookup from metricflow_semantics.specs.dunder_column_association_resolver import DunderColumnAssociationResolver from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration @@ -29,7 +31,7 @@ def it_helpers( # noqa: D103 sql_client: SqlClient, create_source_tables: bool, simple_semantic_manifest_lookup: SemanticManifestLookup, - time_spine_source: TimeSpineSource, + time_spine_sources: Mapping[TimeGranularity, TimeSpineSource], mf_test_configuration: MetricFlowTestConfiguration, ) -> IntegrationTestHelpers: return IntegrationTestHelpers( diff --git a/tests_metricflow/integration/test_cases/itest_dimensions.yaml b/tests_metricflow/integration/test_cases/itest_dimensions.yaml index 7cc89a5b43..54d6632927 100644 --- a/tests_metricflow/integration/test_cases/itest_dimensions.yaml +++ b/tests_metricflow/integration/test_cases/itest_dimensions.yaml @@ -370,3 +370,27 @@ integration_test: ) outer_subq WHERE listing__bookings > 2 GROUP BY listing +--- +integration_test: + name: sub_daily_metric_time + description: Query metric_time alone with a sub-daily granularity + model: SIMPLE_MODEL + group_bys: ["metric_time__hour"] + check_query: | + SELECT + {{ render_date_trunc("ts", TimeGranularity.HOUR) }} AS metric_time__hour + FROM {{ source_schema }}.mf_time_spine_hour + GROUP BY + {{ render_date_trunc("ts", TimeGranularity.HOUR) }} +--- +integration_test: + name: sub_daily_time_dimension + description: Query a time dimension alone with a sub-daily granularity + model: SIMPLE_MODEL + group_bys: ["user__bio_added_ts__second"] + check_query: | + SELECT + {{ render_date_trunc("bio_added_ts", TimeGranularity.SECOND) }} AS user__bio_added_ts__second + FROM {{ source_schema }}.dim_users + GROUP BY + {{ render_date_trunc("bio_added_ts", TimeGranularity.SECOND) }} diff --git a/tests_metricflow/integration/test_cases/itest_metrics.yaml b/tests_metricflow/integration/test_cases/itest_metrics.yaml index 7c6e96f8f6..52b805f9ea 100644 --- a/tests_metricflow/integration/test_cases/itest_metrics.yaml +++ b/tests_metricflow/integration/test_cases/itest_metrics.yaml @@ -2215,15 +2215,3 @@ integration_test: GROUP BY {{ render_date_trunc("ds", TimeGranularity.DAY) }} ) a ON b.ds = a.ds WHERE {{ render_between_time_constraint("b.ds", "2020-01-03", "2020-01-03") }} ---- -integration_test: - name: metric_time_filter_on_input_metric - description: Test a metric with a filter defined on its input metric. - model: SIMPLE_MODEL - metrics: ["bookings_between_dec_18_2019_and_dec_20_2019"] - check_query: | - SELECT - SUM(1) AS bookings_between_dec_18_2019_and_dec_20_2019 - FROM {{ source_schema }}.fct_bookings - WHERE ({{ render_date_trunc("ds", TimeGranularity.DAY) }} < '2012-12-20') - AND ({{ render_date_trunc("ds", TimeGranularity.WEEK) }} > '2019-12-18') diff --git a/tests_metricflow/integration/test_configured_cases.py b/tests_metricflow/integration/test_configured_cases.py index 2193c9d1d5..1a781ebdf9 100644 --- a/tests_metricflow/integration/test_configured_cases.py +++ b/tests_metricflow/integration/test_configured_cases.py @@ -235,13 +235,14 @@ def test_case( name: str, mf_test_configuration: MetricFlowTestConfiguration, mf_engine_test_fixture_mapping: Mapping[SemanticManifestSetup, MetricFlowEngineTestFixture], - time_spine_source: TimeSpineSource, + time_spine_sources: Mapping[TimeGranularity, TimeSpineSource], sql_client: SqlClient, create_source_tables: bool, ) -> None: """Runs all integration tests configured in the test case YAML directory.""" case = CONFIGURED_INTEGRATION_TESTS_REPOSITORY.get_test_case(name) logger.info(f"Running integration test case: '{case.name}' from file '{case.file_path}'") + time_spine_source = time_spine_sources[TimeGranularity.DAY] missing_required_features = filter_not_supported_features(sql_client, case.required_features) if missing_required_features: diff --git a/tests_metricflow/query_rendering/compare_rendered_query.py b/tests_metricflow/query_rendering/compare_rendered_query.py index b1651a9cac..c0ce374111 100644 --- a/tests_metricflow/query_rendering/compare_rendered_query.py +++ b/tests_metricflow/query_rendering/compare_rendered_query.py @@ -23,10 +23,10 @@ def render_and_check( dataflow_to_sql_converter: DataflowToSqlQueryPlanConverter, sql_client: SqlClient, query_spec: MetricFlowQuerySpec, - is_distinct_values_plan: bool = False, ) -> None: """Renders an engine-specific query output from a given query, in both basic and optimized forms.""" # Build and convert dataflow plan without optimizers + is_distinct_values_plan = not query_spec.metric_specs if is_distinct_values_plan: base_plan = dataflow_plan_builder.build_plan_for_distinct_values(query_spec=query_spec) else: diff --git a/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py index ef9ba71f0b..d675db12b1 100644 --- a/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py +++ b/tests_metricflow/query_rendering/test_granularity_date_part_rendering.py @@ -8,10 +8,12 @@ import pytest from _pytest.fixtures import FixtureRequest +from dbt_semantic_interfaces.references import EntityReference from dbt_semantic_interfaces.type_enums.date_part import DatePart from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.specs.metric_spec import MetricSpec from metricflow_semantics.specs.query_spec import MetricFlowQuerySpec +from metricflow_semantics.specs.time_dimension_spec import TimeDimensionSpec from metricflow_semantics.test_helpers.config_helpers import MetricFlowTestConfiguration from metricflow.dataflow.builder.dataflow_plan_builder import DataflowPlanBuilder @@ -99,3 +101,53 @@ def test_offset_window_with_date_part( # noqa: D103 dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, ) + + +@pytest.mark.sql_engine_snapshot +def test_sub_daily_metric_time( # noqa: D103 + request: FixtureRequest, + mf_test_configuration: MetricFlowTestConfiguration, + dataflow_plan_builder: DataflowPlanBuilder, + dataflow_to_sql_converter: DataflowToSqlQueryPlanConverter, + sql_client: SqlClient, +) -> None: + query_spec = MetricFlowQuerySpec( + time_dimension_specs=(DataSet.metric_time_dimension_spec(time_granularity=TimeGranularity.MILLISECOND),), + ) + + render_and_check( + request=request, + mf_test_configuration=mf_test_configuration, + dataflow_to_sql_converter=dataflow_to_sql_converter, + sql_client=sql_client, + dataflow_plan_builder=dataflow_plan_builder, + query_spec=query_spec, + ) + + +@pytest.mark.sql_engine_snapshot +def test_sub_daily_dimension( # noqa: D103 + request: FixtureRequest, + mf_test_configuration: MetricFlowTestConfiguration, + dataflow_plan_builder: DataflowPlanBuilder, + dataflow_to_sql_converter: DataflowToSqlQueryPlanConverter, + sql_client: SqlClient, +) -> None: + query_spec = MetricFlowQuerySpec( + time_dimension_specs=( + TimeDimensionSpec( + element_name="bio_added_ts", + time_granularity=TimeGranularity.SECOND, + entity_links=(EntityReference("user"),), + ), + ), + ) + + render_and_check( + request=request, + mf_test_configuration=mf_test_configuration, + dataflow_to_sql_converter=dataflow_to_sql_converter, + sql_client=sql_client, + dataflow_plan_builder=dataflow_plan_builder, + query_spec=query_spec, + ) diff --git a/tests_metricflow/query_rendering/test_metric_filter_rendering.py b/tests_metricflow/query_rendering/test_metric_filter_rendering.py index 0cd3728c32..a2ce2e2e6d 100644 --- a/tests_metricflow/query_rendering/test_metric_filter_rendering.py +++ b/tests_metricflow/query_rendering/test_metric_filter_rendering.py @@ -226,7 +226,6 @@ def test_distinct_values_query_with_metric_filter( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) diff --git a/tests_metricflow/query_rendering/test_query_rendering.py b/tests_metricflow/query_rendering/test_query_rendering.py index 26a02adce5..b96c5786d2 100644 --- a/tests_metricflow/query_rendering/test_query_rendering.py +++ b/tests_metricflow/query_rendering/test_query_rendering.py @@ -178,7 +178,6 @@ def test_distinct_values( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) @@ -457,7 +456,6 @@ def test_min_max_only_categorical( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) @@ -488,7 +486,6 @@ def test_min_max_only_time( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) @@ -519,7 +516,6 @@ def test_min_max_only_time_quarter( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) @@ -544,7 +540,6 @@ def test_min_max_metric_time( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) @@ -569,5 +564,4 @@ def test_min_max_metric_time_week( sql_client=sql_client, dataflow_plan_builder=dataflow_plan_builder, query_spec=query_spec, - is_distinct_values_plan=True, ) diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml index b192c249c4..433ca59f13 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_count_with_no_group_by__plan0.xml @@ -244,138 +244,138 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -699,147 +699,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml index 4bc0b4751a..e68ffaf1c3 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.xml @@ -326,147 +326,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -865,147 +865,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml index e084fc9484..5b8f534958 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate__plan0.xml @@ -272,138 +272,138 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -758,147 +758,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml index 38e58f30c1..e25cc35467 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_constant_properties__plan0.xml @@ -295,138 +295,138 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -818,147 +818,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml index 394fb65ee4..8ac0024a40 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_no_group_by__plan0.xml @@ -247,138 +247,138 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -702,147 +702,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml index b1810bd898..aa50779402 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlQueryPlan/test_conversion_rate_with_window__plan0.xml @@ -295,138 +295,138 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -806,147 +806,147 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml b/tests_metricflow/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml index e913b52a4b..ae541e136e 100644 --- a/tests_metricflow/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml +++ b/tests_metricflow/snapshots/test_cyclic_join.py/DataflowPlan/test_cyclic_join__dfp_0.xml @@ -36,11 +36,11 @@ - + - + @@ -53,7 +53,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml index 0fe093d825..fef8f21032 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_common_semantic_model__dfp_0.xml @@ -42,11 +42,11 @@ - + - + @@ -59,11 +59,11 @@ - + - + @@ -110,11 +110,11 @@ - + - + @@ -127,11 +127,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml index 914569e512..bf54d2fce4 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_with_metric_time__dfp_0.xml @@ -22,11 +22,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml index 33f9fc76f8..0db2f56fd7 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_no_window_or_grain_without_metric_time__dfp_0.xml @@ -16,11 +16,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_non_default_grain__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_non_default_grain__dfp_0.xml index 4352536fd0..67442fc6af 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_non_default_grain__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_non_default_grain__dfp_0.xml @@ -34,11 +34,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml index 1283d92943..244821dae7 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_cumulative_metric_with_window__dfp_0.xml @@ -23,11 +23,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_cumulative_metric_with_non_default_grain__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_cumulative_metric_with_non_default_grain__dfp_0.xml index e7e2471f97..bdae25ff6b 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_cumulative_metric_with_non_default_grain__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_cumulative_metric_with_non_default_grain__dfp_0.xml @@ -38,11 +38,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml index bc7da98f3e..1e6217f25c 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_to_grain__dfp_0.xml @@ -24,11 +24,11 @@ - + - + @@ -61,11 +61,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml index b7b0209d66..f1a363e216 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_window__dfp_0.xml @@ -36,11 +36,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml index d9ca9b4480..91f4aac2d3 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_metric_offset_with_granularity__dfp_0.xml @@ -36,11 +36,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml index 30aa24a5f4..67373508a6 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_derived_offset_cumulative_metric__dfp_0.xml @@ -42,11 +42,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml index 415f19bcf2..18a280f887 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dimensions_with_time_constraint__dfp_0.xml @@ -21,7 +21,7 @@ - + @@ -31,11 +31,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml index 4096dc93bd..1e8196b582 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan__dfp_0.xml @@ -67,7 +67,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml index 90f3ed7004..8ca7a32b85 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_distinct_values_plan_with_join__dfp_0.xml @@ -81,7 +81,7 @@ - + @@ -92,7 +92,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml index ca3d0e8227..7760e7b9c3 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_dont_join_to_time_spine_if_no_time_dimension_requested__dfp_0.xml @@ -16,11 +16,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml index b0302f1ac3..3ecf955c35 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_derived_metric__dfp_0.xml @@ -34,11 +34,11 @@ - + - + @@ -86,11 +86,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml index 621594973f..668ed3edad 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_filters__dfp_0.xml @@ -147,11 +147,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml index 7cab7e01e1..8894c05413 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_metric_time__dfp_0.xml @@ -27,11 +27,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml index 5b498724ca..e176f164e6 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_join_to_time_spine_with_non_metric_time__dfp_0.xml @@ -22,11 +22,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml index 227386e31b..dd95dca8e0 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_joined_plan__dfp_0.xml @@ -47,11 +47,11 @@ - + - + @@ -64,11 +64,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml index e0db8bfde2..58fe24e376 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_limit_rows_plan__dfp_0.xml @@ -21,11 +21,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml index 8aaf8772a7..01ef085957 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_plan__dfp_0.xml @@ -162,12 +162,12 @@ - + - + @@ -180,12 +180,12 @@ - + - + @@ -348,12 +348,12 @@ - + - + @@ -366,12 +366,12 @@ - + - + @@ -397,11 +397,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml index 94c67d5965..e186ee1481 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_measure_constraint_with_reused_measure_plan__dfp_0.xml @@ -124,11 +124,11 @@ - + - + @@ -152,11 +152,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml index 010e620781..355d69e546 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_metric_where_filter__dfp_0.xml @@ -67,11 +67,11 @@ - + - + @@ -102,12 +102,12 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml index b0a31a473c..26a64602d6 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_in_query_where_filter__dfp_0.xml @@ -93,11 +93,11 @@ - + - + @@ -128,12 +128,12 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml index 66cab34841..0d0b8c95fe 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_only__dfp_0.xml @@ -9,11 +9,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml index 8681109851..a7ec17768a 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_quarter__dfp_0.xml @@ -9,11 +9,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml index d57c92a51c..c98504cdc4 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_metric_time_with_other_dimensions__dfp_0.xml @@ -27,7 +27,7 @@ - + @@ -38,11 +38,11 @@ - + - + @@ -55,7 +55,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml index 72b29b2006..527a7bd36b 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time__dfp_0.xml @@ -12,11 +12,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml index 5a86800a4e..61fd7ad0b7 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_metric_time_week__dfp_0.xml @@ -12,11 +12,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml index 86684220f1..5886aada0e 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_categorical__dfp_0.xml @@ -16,7 +16,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml index 758d3d0c59..16301f285f 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time__dfp_0.xml @@ -17,7 +17,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml index 724432836d..7f4200ead4 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_min_max_only_time_year__dfp_0.xml @@ -17,7 +17,7 @@ - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml index b29c93a7e8..4f2fe013fa 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multi_semantic_model_ratio_metrics_plan__dfp_0.xml @@ -47,11 +47,11 @@ - + - + @@ -64,11 +64,11 @@ - + - + @@ -115,11 +115,11 @@ - + - + @@ -132,11 +132,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml index f53e7c0ce1..25d62e8faa 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multihop_join_plan__dfp_0.xml @@ -52,11 +52,11 @@ - + - + @@ -97,11 +97,11 @@ - + - + @@ -328,11 +328,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml index d2867a667f..439a216e2e 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_multiple_metrics_plan__dfp_0.xml @@ -25,11 +25,11 @@ - + - + @@ -57,11 +57,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml index 83552ed2f4..278978a74c 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_nested_derived_metric_with_outer_offset__dfp_0.xml @@ -53,11 +53,11 @@ - + - + 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 ba790537f8..22af651f78 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 @@ -146,11 +146,11 @@ - + - + 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 f013299c7a..0d99a4a2e3 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 @@ -150,11 +150,11 @@ - + - + @@ -258,11 +258,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml index 7ba932194b..3354f7bf20 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_order_by_plan__dfp_0.xml @@ -27,11 +27,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml index cf479cd665..39c81616f4 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_primary_entity_dimension__dfp_0.xml @@ -21,11 +21,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml index cf479cd665..39c81616f4 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_simple_plan__dfp_0.xml @@ -21,11 +21,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml index 959067757b..61675b49ee 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_single_semantic_model_ratio_metrics_plan__dfp_0.xml @@ -47,11 +47,11 @@ - + - + @@ -64,11 +64,11 @@ - + - + @@ -115,11 +115,11 @@ - + - + @@ -132,11 +132,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml index 6478d60801..55109326af 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan__dfp_0.xml @@ -163,11 +163,11 @@ - + - + @@ -180,11 +180,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml index 4fe0d5461f..4226540ce0 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_plan_time_dimension__dfp_0.xml @@ -102,11 +102,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml index 7109d76f6d..4c900a8ec5 100644 --- a/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml +++ b/tests_metricflow/snapshots/test_dataflow_plan_builder.py/DataflowPlan/test_where_constrained_with_common_linkable_plan__dfp_0.xml @@ -141,11 +141,11 @@ - + - + @@ -158,11 +158,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml index ca0dff00ec..f9aa2ddda0 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.xml @@ -2188,242 +2188,242 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml index a25452a9ea..0a1d09c6ae 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimension_with_joined_where_constraint__plan0.xml @@ -671,126 +671,126 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml index 83134e8bfd..b1a70ffcf0 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml @@ -428,115 +428,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml index ff2c1449de..b63265b985 100644 --- a/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml +++ b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimension_values_with_a_join_and_a_filter__plan0.xml @@ -675,126 +675,126 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml index 83134e8bfd..b1a70ffcf0 100644 --- a/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml +++ b/tests_metricflow/snapshots/test_distinct_values_to_sql.py/SqlQueryPlan/test_dimensions_requiring_join__plan0.xml @@ -428,115 +428,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..eb3bf092ab --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATETIME_TRUNC(users_ds_source_src_28000.ds, day) AS ds__day + , DATETIME_TRUNC(users_ds_source_src_28000.ds, isoweek) AS ds__week + , DATETIME_TRUNC(users_ds_source_src_28000.ds, month) AS ds__month + , DATETIME_TRUNC(users_ds_source_src_28000.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.ds, year) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, day) AS created_at__day + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, isoweek) AS created_at__week + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, month) AS created_at__month + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, quarter) AS created_at__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, year) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.created_at) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.created_at) - 1) AS created_at__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, day) AS ds_partitioned__day + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, isoweek) AS ds_partitioned__week + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, month) AS ds_partitioned__month + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, quarter) AS ds_partitioned__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, year) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) - 1) AS ds_partitioned__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, millisecond) AS last_profile_edit_ts__millisecond + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, second) AS last_profile_edit_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, minute) AS last_profile_edit_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, hour) AS last_profile_edit_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, day) AS last_profile_edit_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, isoweek) AS last_profile_edit_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, month) AS last_profile_edit_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, quarter) AS last_profile_edit_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, year) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) - 1) AS last_profile_edit_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, second) AS bio_added_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, minute) AS bio_added_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, hour) AS bio_added_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, day) AS bio_added_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, isoweek) AS bio_added_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, month) AS bio_added_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, quarter) AS bio_added_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, year) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) - 1) AS bio_added_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, minute) AS last_login_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, hour) AS last_login_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, day) AS last_login_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, isoweek) AS last_login_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, month) AS last_login_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, quarter) AS last_login_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, year) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) - 1) AS last_login_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, hour) AS archived_at__hour + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, day) AS archived_at__day + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, isoweek) AS archived_at__week + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, month) AS archived_at__month + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, quarter) AS archived_at__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, year) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) - 1) AS archived_at__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.ds, day) AS user__ds__day + , DATETIME_TRUNC(users_ds_source_src_28000.ds, isoweek) AS user__ds__week + , DATETIME_TRUNC(users_ds_source_src_28000.ds, month) AS user__ds__month + , DATETIME_TRUNC(users_ds_source_src_28000.ds, quarter) AS user__ds__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.ds, year) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.ds) - 1) AS user__ds__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, day) AS user__created_at__day + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, isoweek) AS user__created_at__week + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, month) AS user__created_at__month + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, quarter) AS user__created_at__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.created_at, year) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.created_at) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.created_at) - 1) AS user__created_at__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, day) AS user__ds_partitioned__day + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, isoweek) AS user__ds_partitioned__week + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, month) AS user__ds_partitioned__month + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, quarter) AS user__ds_partitioned__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.ds_partitioned, year) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) - 1) AS user__ds_partitioned__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, millisecond) AS user__last_profile_edit_ts__millisecond + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, second) AS user__last_profile_edit_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, minute) AS user__last_profile_edit_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, hour) AS user__last_profile_edit_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, day) AS user__last_profile_edit_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, isoweek) AS user__last_profile_edit_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, month) AS user__last_profile_edit_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, quarter) AS user__last_profile_edit_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, year) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) - 1) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, second) AS user__bio_added_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, minute) AS user__bio_added_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, hour) AS user__bio_added_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, day) AS user__bio_added_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, isoweek) AS user__bio_added_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, month) AS user__bio_added_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, quarter) AS user__bio_added_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, year) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) - 1) AS user__bio_added_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, minute) AS user__last_login_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, hour) AS user__last_login_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, day) AS user__last_login_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, isoweek) AS user__last_login_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, month) AS user__last_login_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, quarter) AS user__last_login_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, year) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) - 1) AS user__last_login_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, hour) AS user__archived_at__hour + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, day) AS user__archived_at__day + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, isoweek) AS user__archived_at__week + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, month) AS user__archived_at__month + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, quarter) AS user__archived_at__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, year) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) - 1) AS user__archived_at__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..fdc7c955bd --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATETIME_TRUNC(bio_added_ts, second) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..2cd1404453 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATETIME_TRUNC(time_spine_src_28002.ts, millisecond) AS ts__millisecond + , DATETIME_TRUNC(time_spine_src_28002.ts, second) AS ts__second + , DATETIME_TRUNC(time_spine_src_28002.ts, minute) AS ts__minute + , DATETIME_TRUNC(time_spine_src_28002.ts, hour) AS ts__hour + , DATETIME_TRUNC(time_spine_src_28002.ts, day) AS ts__day + , DATETIME_TRUNC(time_spine_src_28002.ts, isoweek) AS ts__week + , DATETIME_TRUNC(time_spine_src_28002.ts, month) AS ts__month + , DATETIME_TRUNC(time_spine_src_28002.ts, quarter) AS ts__quarter + , DATETIME_TRUNC(time_spine_src_28002.ts, year) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28002.ts) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28002.ts) - 1) AS ts__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..861d1aeed0 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/BigQuery/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATETIME_TRUNC(ts, millisecond) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..068fffb79b --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATE_TRUNC('day', users_ds_source_src_28000.ds) AS ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.ds) AS ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.created_at) AS created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS user__ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.ds) AS user__ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS user__created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS user__created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS user__created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS user__created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + subq_0.user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..b7bf7d7395 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATE_TRUNC('second', bio_added_ts) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + DATE_TRUNC('second', bio_added_ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..a913e4dc26 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATE_TRUNC('millisecond', time_spine_src_28002.ts) AS ts__millisecond + , DATE_TRUNC('second', time_spine_src_28002.ts) AS ts__second + , DATE_TRUNC('minute', time_spine_src_28002.ts) AS ts__minute + , DATE_TRUNC('hour', time_spine_src_28002.ts) AS ts__hour + , DATE_TRUNC('day', time_spine_src_28002.ts) AS ts__day + , DATE_TRUNC('week', time_spine_src_28002.ts) AS ts__week + , DATE_TRUNC('month', time_spine_src_28002.ts) AS ts__month + , DATE_TRUNC('quarter', time_spine_src_28002.ts) AS ts__quarter + , DATE_TRUNC('year', time_spine_src_28002.ts) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28002.ts) AS ts__extract_dow + , EXTRACT(doy FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + subq_1.metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..6bc0e3fe94 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Databricks/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATE_TRUNC('millisecond', ts) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + DATE_TRUNC('millisecond', ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..32c180b9bb --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATE_TRUNC('day', users_ds_source_src_28000.ds) AS ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds) AS ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.created_at) AS created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS user__ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds) AS user__ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS user__created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS user__created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS user__created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS user__created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + subq_0.user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..b7bf7d7395 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATE_TRUNC('second', bio_added_ts) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + DATE_TRUNC('second', bio_added_ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..4507843952 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATE_TRUNC('millisecond', time_spine_src_28002.ts) AS ts__millisecond + , DATE_TRUNC('second', time_spine_src_28002.ts) AS ts__second + , DATE_TRUNC('minute', time_spine_src_28002.ts) AS ts__minute + , DATE_TRUNC('hour', time_spine_src_28002.ts) AS ts__hour + , DATE_TRUNC('day', time_spine_src_28002.ts) AS ts__day + , DATE_TRUNC('week', time_spine_src_28002.ts) AS ts__week + , DATE_TRUNC('month', time_spine_src_28002.ts) AS ts__month + , DATE_TRUNC('quarter', time_spine_src_28002.ts) AS ts__quarter + , DATE_TRUNC('year', time_spine_src_28002.ts) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , EXTRACT(isodow FROM time_spine_src_28002.ts) AS ts__extract_dow + , EXTRACT(doy FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + subq_1.metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..6bc0e3fe94 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/DuckDB/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATE_TRUNC('millisecond', ts) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + DATE_TRUNC('millisecond', ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..32c180b9bb --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATE_TRUNC('day', users_ds_source_src_28000.ds) AS ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds) AS ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.created_at) AS created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS user__ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds) AS user__ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS user__created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS user__created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS user__created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS user__created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + subq_0.user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..b7bf7d7395 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATE_TRUNC('second', bio_added_ts) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + DATE_TRUNC('second', bio_added_ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..4507843952 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATE_TRUNC('millisecond', time_spine_src_28002.ts) AS ts__millisecond + , DATE_TRUNC('second', time_spine_src_28002.ts) AS ts__second + , DATE_TRUNC('minute', time_spine_src_28002.ts) AS ts__minute + , DATE_TRUNC('hour', time_spine_src_28002.ts) AS ts__hour + , DATE_TRUNC('day', time_spine_src_28002.ts) AS ts__day + , DATE_TRUNC('week', time_spine_src_28002.ts) AS ts__week + , DATE_TRUNC('month', time_spine_src_28002.ts) AS ts__month + , DATE_TRUNC('quarter', time_spine_src_28002.ts) AS ts__quarter + , DATE_TRUNC('year', time_spine_src_28002.ts) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , EXTRACT(isodow FROM time_spine_src_28002.ts) AS ts__extract_dow + , EXTRACT(doy FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + subq_1.metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..6bc0e3fe94 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Postgres/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATE_TRUNC('millisecond', ts) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + DATE_TRUNC('millisecond', ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..eb3225eb70 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATE_TRUNC('day', users_ds_source_src_28000.ds) AS ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.ds) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.ds) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.ds) END AS ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.created_at) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.created_at) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.created_at) END AS created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) END AS ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) END AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) END AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) END AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.archived_at) END AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS user__ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.ds) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.ds) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.ds) END AS user__ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS user__created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS user__created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS user__created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS user__created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.created_at) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.created_at) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.created_at) END AS user__created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) END AS user__ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) END AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) END AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) END AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.archived_at) END AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + subq_0.user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..b7bf7d7395 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATE_TRUNC('second', bio_added_ts) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + DATE_TRUNC('second', bio_added_ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..6747428a95 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATE_TRUNC('millisecond', time_spine_src_28002.ts) AS ts__millisecond + , DATE_TRUNC('second', time_spine_src_28002.ts) AS ts__second + , DATE_TRUNC('minute', time_spine_src_28002.ts) AS ts__minute + , DATE_TRUNC('hour', time_spine_src_28002.ts) AS ts__hour + , DATE_TRUNC('day', time_spine_src_28002.ts) AS ts__day + , DATE_TRUNC('week', time_spine_src_28002.ts) AS ts__week + , DATE_TRUNC('month', time_spine_src_28002.ts) AS ts__month + , DATE_TRUNC('quarter', time_spine_src_28002.ts) AS ts__quarter + , DATE_TRUNC('year', time_spine_src_28002.ts) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28002.ts) = 0 THEN EXTRACT(dow FROM time_spine_src_28002.ts) + 7 ELSE EXTRACT(dow FROM time_spine_src_28002.ts) END AS ts__extract_dow + , EXTRACT(doy FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + subq_1.metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..6bc0e3fe94 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Redshift/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATE_TRUNC('millisecond', ts) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + DATE_TRUNC('millisecond', ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..f10e223545 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATE_TRUNC('day', users_ds_source_src_28000.ds) AS ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.ds) AS ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.created_at) AS created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS user__ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.ds) AS user__ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS user__created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS user__created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS user__created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS user__created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + subq_0.user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..b7bf7d7395 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATE_TRUNC('second', bio_added_ts) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + DATE_TRUNC('second', bio_added_ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..7a8fe48698 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATE_TRUNC('millisecond', time_spine_src_28002.ts) AS ts__millisecond + , DATE_TRUNC('second', time_spine_src_28002.ts) AS ts__second + , DATE_TRUNC('minute', time_spine_src_28002.ts) AS ts__minute + , DATE_TRUNC('hour', time_spine_src_28002.ts) AS ts__hour + , DATE_TRUNC('day', time_spine_src_28002.ts) AS ts__day + , DATE_TRUNC('week', time_spine_src_28002.ts) AS ts__week + , DATE_TRUNC('month', time_spine_src_28002.ts) AS ts__month + , DATE_TRUNC('quarter', time_spine_src_28002.ts) AS ts__quarter + , DATE_TRUNC('year', time_spine_src_28002.ts) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28002.ts) AS ts__extract_dow + , EXTRACT(doy FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + subq_1.metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..6bc0e3fe94 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Snowflake/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATE_TRUNC('millisecond', ts) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + DATE_TRUNC('millisecond', ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_dimension__plan0.sql new file mode 100644 index 0000000000..32ff8427db --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_dimension__plan0.sql @@ -0,0 +1,187 @@ +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + subq_0.user__bio_added_ts__second +FROM ( + -- Read Elements From Semantic Model 'users_ds_source' + SELECT + DATE_TRUNC('day', users_ds_source_src_28000.ds) AS ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.ds) AS ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS created_at__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.created_at) AS created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds) AS user__ds__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds) AS user__ds__year + , EXTRACT(year FROM users_ds_source_src_28000.ds) AS user__ds__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds) AS user__ds__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds) AS user__ds__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds) AS user__ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.ds) AS user__ds__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds) AS user__ds__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.created_at) AS user__created_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.created_at) AS user__created_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.created_at) AS user__created_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.created_at) AS user__created_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.created_at) AS user__created_at__year + , EXTRACT(year FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.created_at) AS user__created_at__extract_doy + , DATE_TRUNC('day', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__day + , DATE_TRUNC('week', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__week + , DATE_TRUNC('month', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__year + , EXTRACT(year FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy + , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy + , users_ds_source_src_28000.user_id AS user + FROM ***************************.dim_users users_ds_source_src_28000 +) subq_0 +GROUP BY + subq_0.user__bio_added_ts__second diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_dimension__plan0_optimized.sql new file mode 100644 index 0000000000..b7bf7d7395 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_dimension__plan0_optimized.sql @@ -0,0 +1,7 @@ +-- Read Elements From Semantic Model 'users_ds_source' +-- Pass Only Elements: ['user__bio_added_ts__second',] +SELECT + DATE_TRUNC('second', bio_added_ts) AS user__bio_added_ts__second +FROM ***************************.dim_users users_ds_source_src_28000 +GROUP BY + DATE_TRUNC('second', bio_added_ts) diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_metric_time__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_metric_time__plan0.sql new file mode 100644 index 0000000000..58d3c2359f --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_metric_time__plan0.sql @@ -0,0 +1,59 @@ +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + subq_1.metric_time__millisecond +FROM ( + -- Metric Time Dimension 'ts' + SELECT + subq_0.ts__millisecond + , subq_0.ts__second + , subq_0.ts__minute + , subq_0.ts__hour + , subq_0.ts__day + , subq_0.ts__week + , subq_0.ts__month + , subq_0.ts__quarter + , subq_0.ts__year + , subq_0.ts__extract_year + , subq_0.ts__extract_quarter + , subq_0.ts__extract_month + , subq_0.ts__extract_day + , subq_0.ts__extract_dow + , subq_0.ts__extract_doy + , subq_0.ts__millisecond AS metric_time__millisecond + , subq_0.ts__second AS metric_time__second + , subq_0.ts__minute AS metric_time__minute + , subq_0.ts__hour AS metric_time__hour + , subq_0.ts__day AS metric_time__day + , subq_0.ts__week AS metric_time__week + , subq_0.ts__month AS metric_time__month + , subq_0.ts__quarter AS metric_time__quarter + , subq_0.ts__year AS metric_time__year + , subq_0.ts__extract_year AS metric_time__extract_year + , subq_0.ts__extract_quarter AS metric_time__extract_quarter + , subq_0.ts__extract_month AS metric_time__extract_month + , subq_0.ts__extract_day AS metric_time__extract_day + , subq_0.ts__extract_dow AS metric_time__extract_dow + , subq_0.ts__extract_doy AS metric_time__extract_doy + FROM ( + -- Time Spine + SELECT + DATE_TRUNC('millisecond', time_spine_src_28002.ts) AS ts__millisecond + , DATE_TRUNC('second', time_spine_src_28002.ts) AS ts__second + , DATE_TRUNC('minute', time_spine_src_28002.ts) AS ts__minute + , DATE_TRUNC('hour', time_spine_src_28002.ts) AS ts__hour + , DATE_TRUNC('day', time_spine_src_28002.ts) AS ts__day + , DATE_TRUNC('week', time_spine_src_28002.ts) AS ts__week + , DATE_TRUNC('month', time_spine_src_28002.ts) AS ts__month + , DATE_TRUNC('quarter', time_spine_src_28002.ts) AS ts__quarter + , DATE_TRUNC('year', time_spine_src_28002.ts) AS ts__year + , EXTRACT(year FROM time_spine_src_28002.ts) AS ts__extract_year + , EXTRACT(quarter FROM time_spine_src_28002.ts) AS ts__extract_quarter + , EXTRACT(month FROM time_spine_src_28002.ts) AS ts__extract_month + , EXTRACT(day FROM time_spine_src_28002.ts) AS ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28002.ts) AS ts__extract_dow + , EXTRACT(doy FROM time_spine_src_28002.ts) AS ts__extract_doy + FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 + ) subq_0 +) subq_1 +GROUP BY + subq_1.metric_time__millisecond diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_metric_time__plan0_optimized.sql new file mode 100644 index 0000000000..6bc0e3fe94 --- /dev/null +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlQueryPlan/Trino/test_sub_daily_metric_time__plan0_optimized.sql @@ -0,0 +1,8 @@ +-- Time Spine +-- Metric Time Dimension 'ts' +-- Pass Only Elements: ['metric_time__millisecond',] +SELECT + DATE_TRUNC('millisecond', ts) AS metric_time__millisecond +FROM ***************************.mf_time_spine_millisecond time_spine_src_28002 +GROUP BY + DATE_TRUNC('millisecond', ts) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql index d79391ab01..98928afa92 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS ds__day - , DATETIME_TRUNC(time_spine_src_28000.ds, isoweek) AS ds__week - , DATETIME_TRUNC(time_spine_src_28000.ds, month) AS ds__month - , DATETIME_TRUNC(time_spine_src_28000.ds, quarter) AS ds__quarter - , DATETIME_TRUNC(time_spine_src_28000.ds, year) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , IF(EXTRACT(dayofweek FROM time_spine_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28000.ds) - 1) AS ds__extract_dow - , EXTRACT(dayofyear FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day + , DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week + , DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month + , DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql index e939afb66d..ee11e39060 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,17 +2,17 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS metric_time__day + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATETIME_TRUNC(time_spine_src_28000.ds, day) BETWEEN '2020-01-01' AND '2020-01-03' +WHERE DATETIME_TRUNC(time_spine_src_28006.ds, day) BETWEEN '2020-01-01' AND '2020-01-03' GROUP BY metric_time__day , listing__is_lux_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql index a5ac99c303..7c7c84cde3 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS ds__day - , DATETIME_TRUNC(time_spine_src_28000.ds, isoweek) AS ds__week - , DATETIME_TRUNC(time_spine_src_28000.ds, month) AS ds__month - , DATETIME_TRUNC(time_spine_src_28000.ds, quarter) AS ds__quarter - , DATETIME_TRUNC(time_spine_src_28000.ds, year) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , IF(EXTRACT(dayofweek FROM time_spine_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28000.ds) - 1) AS ds__extract_dow - , EXTRACT(dayofyear FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day + , DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week + , DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month + , DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql index e3d2c86221..aefc098bd3 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATETIME_TRUNC(ds, day) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql index 46093b139a..0e8fd5fcfc 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS ds__day - , DATETIME_TRUNC(time_spine_src_28000.ds, isoweek) AS ds__week - , DATETIME_TRUNC(time_spine_src_28000.ds, month) AS ds__month - , DATETIME_TRUNC(time_spine_src_28000.ds, quarter) AS ds__quarter - , DATETIME_TRUNC(time_spine_src_28000.ds, year) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , IF(EXTRACT(dayofweek FROM time_spine_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28000.ds) - 1) AS ds__extract_dow - , EXTRACT(dayofyear FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day + , DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week + , DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month + , DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql index 7f99e4d431..81ede48103 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATETIME_TRUNC(ds, quarter) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY metric_time__quarter diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql index f8d8755c47..161bc57c9f 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS ds__day - , DATETIME_TRUNC(time_spine_src_28000.ds, isoweek) AS ds__week - , DATETIME_TRUNC(time_spine_src_28000.ds, month) AS ds__month - , DATETIME_TRUNC(time_spine_src_28000.ds, quarter) AS ds__quarter - , DATETIME_TRUNC(time_spine_src_28000.ds, year) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , IF(EXTRACT(dayofweek FROM time_spine_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28000.ds) - 1) AS ds__extract_dow - , EXTRACT(dayofyear FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day + , DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week + , DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month + , DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql index 0ab00225f9..f03a3399ee 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/BigQuery/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,12 +1,12 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS metric_time__day + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql index c158a74935..f28a1aed0c 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql index 96a96bb787..f7f473a317 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,18 +2,18 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATE_TRUNC('day', time_spine_src_28000.ds) BETWEEN '2020-01-01' AND '2020-01-03' +WHERE DATE_TRUNC('day', time_spine_src_28006.ds) BETWEEN '2020-01-01' AND '2020-01-03' GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql index 12f243442c..27ff087a4a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql index 2eed8d0c4b..ec27d0d54a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql index 5f56894a6b..939c04fbd5 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql index 89d1d3d730..d33ecb7c33 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATE_TRUNC('quarter', ds) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('quarter', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql index 5ec23f6eba..3bb8f19c72 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql index f029b6173e..68e7b122d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Databricks/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,17 +1,17 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql index 1e42a5d726..4fa1768bc7 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql index 96a96bb787..f7f473a317 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,18 +2,18 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATE_TRUNC('day', time_spine_src_28000.ds) BETWEEN '2020-01-01' AND '2020-01-03' +WHERE DATE_TRUNC('day', time_spine_src_28006.ds) BETWEEN '2020-01-01' AND '2020-01-03' GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql index c6bb4bb18f..b7efe020e7 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql index 2eed8d0c4b..ec27d0d54a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql index a1584ad35b..a719a46832 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql index 89d1d3d730..d33ecb7c33 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATE_TRUNC('quarter', ds) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('quarter', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql index 44f88a1efd..0ca186e4af 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql index f029b6173e..68e7b122d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/DuckDB/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,17 +1,17 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql index 1e42a5d726..4fa1768bc7 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql index 96a96bb787..f7f473a317 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,18 +2,18 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATE_TRUNC('day', time_spine_src_28000.ds) BETWEEN '2020-01-01' AND '2020-01-03' +WHERE DATE_TRUNC('day', time_spine_src_28006.ds) BETWEEN '2020-01-01' AND '2020-01-03' GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql index c6bb4bb18f..b7efe020e7 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql index 2eed8d0c4b..ec27d0d54a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql index a1584ad35b..a719a46832 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql index 89d1d3d730..d33ecb7c33 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATE_TRUNC('quarter', ds) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('quarter', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql index 44f88a1efd..0ca186e4af 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql index f029b6173e..68e7b122d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Postgres/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,17 +1,17 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql index 5d4572d904..c3937910b2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , CASE WHEN EXTRACT(dow FROM time_spine_src_28000.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28000.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28000.ds) END AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql index 96a96bb787..f7f473a317 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,18 +2,18 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATE_TRUNC('day', time_spine_src_28000.ds) BETWEEN '2020-01-01' AND '2020-01-03' +WHERE DATE_TRUNC('day', time_spine_src_28006.ds) BETWEEN '2020-01-01' AND '2020-01-03' GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql index 00fc8c8a34..f2ad087708 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , CASE WHEN EXTRACT(dow FROM time_spine_src_28000.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28000.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28000.ds) END AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql index 2eed8d0c4b..ec27d0d54a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql index d60589cfc7..a4f3a0d479 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , CASE WHEN EXTRACT(dow FROM time_spine_src_28000.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28000.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28000.ds) END AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql index 89d1d3d730..d33ecb7c33 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATE_TRUNC('quarter', ds) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('quarter', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql index 801a5743f3..fdaa63698b 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , CASE WHEN EXTRACT(dow FROM time_spine_src_28000.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28000.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28000.ds) END AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql index f029b6173e..68e7b122d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Redshift/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,17 +1,17 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql index 98667582a9..7fc222ee66 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(dayofweekiso FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql index 96a96bb787..f7f473a317 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,18 +2,18 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATE_TRUNC('day', time_spine_src_28000.ds) BETWEEN '2020-01-01' AND '2020-01-03' +WHERE DATE_TRUNC('day', time_spine_src_28006.ds) BETWEEN '2020-01-01' AND '2020-01-03' GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql index 5d5be88b9e..d3dc52558a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(dayofweekiso FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql index 2eed8d0c4b..ec27d0d54a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql index 636a1ecd16..2f076adedb 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(dayofweekiso FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql index 89d1d3d730..d33ecb7c33 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATE_TRUNC('quarter', ds) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('quarter', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql index a5c5e24b30..0b393e86b3 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(dayofweekiso FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql index f029b6173e..68e7b122d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Snowflake/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,17 +1,17 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql index 89ae3ebda3..2cd56fbc7e 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0.sql @@ -218,18 +218,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql index 864a5c757f..cd1bf9a23e 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_dimensions_with_time_constraint__plan0_optimized.sql @@ -2,18 +2,18 @@ -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-03T00:00:00] -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id -WHERE DATE_TRUNC('day', time_spine_src_28000.ds) BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-03' +WHERE DATE_TRUNC('day', time_spine_src_28006.ds) BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-03' GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql index 863f81b097..3c0778b8c2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql index 2eed8d0c4b..ec27d0d54a 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_only__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql index e2652152ca..d18942fc1e 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0.sql @@ -29,18 +29,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql index 89d1d3d730..d33ecb7c33 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_quarter_alone__plan0_optimized.sql @@ -3,6 +3,6 @@ -- Pass Only Elements: ['metric_time__quarter',] SELECT DATE_TRUNC('quarter', ds) AS metric_time__quarter -FROM ***************************.mf_time_spine time_spine_src_28000 +FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('quarter', ds) diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql index 99af6dace4..1c5714bc87 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0.sql @@ -157,18 +157,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_1 ) subq_2 ) subq_3 diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql index f029b6173e..68e7b122d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/Trino/test_metric_time_with_other_dimensions__plan0_optimized.sql @@ -1,17 +1,17 @@ -- Join Standard Outputs -- Pass Only Elements: ['user__home_state_latest', 'listing__is_lux_latest', 'metric_time__day'] SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS metric_time__day + DATE_TRUNC('day', time_spine_src_28006.ds) AS metric_time__day , listings_latest_src_28000.is_lux AS listing__is_lux_latest , users_latest_src_28000.home_state_latest AS user__home_state_latest FROM ***************************.dim_listings_latest listings_latest_src_28000 CROSS JOIN - ***************************.mf_time_spine time_spine_src_28000 + ***************************.mf_time_spine time_spine_src_28006 FULL OUTER JOIN ***************************.dim_users_latest users_latest_src_28000 ON listings_latest_src_28000.user_id = users_latest_src_28000.user_id GROUP BY - DATE_TRUNC('day', time_spine_src_28000.ds) + DATE_TRUNC('day', time_spine_src_28006.ds) , listings_latest_src_28000.is_lux , users_latest_src_28000.home_state_latest diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml index e81db14dc9..8ec7e633d2 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_dimensions_with_time_constraint__plan0.xml @@ -784,64 +784,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -864,126 +864,126 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml index ab92d8b32b..6bf34b30a5 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_only__plan0.xml @@ -66,33 +66,33 @@ - + - - - - - - + + + + + + - + - + - - - + + + - - + + - + diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml index 9bc2e28999..dac8a4ae04 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_quarter_alone__plan0.xml @@ -67,33 +67,33 @@ - + - - - - - - + + + + + + - + - + - - - + + + - - + + - + diff --git a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml index 30066f15a8..58e50bc745 100644 --- a/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml +++ b/tests_metricflow/snapshots/test_metric_time_without_metrics.py/SqlQueryPlan/test_metric_time_with_other_dimensions__plan0.xml @@ -533,58 +533,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -603,115 +603,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests_metricflow/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt b/tests_metricflow/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt index d52d8892b9..1c37af0880 100644 --- a/tests_metricflow/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt +++ b/tests_metricflow/snapshots/test_mf_engine.py/list/test_list_dimensions__result0.txt @@ -13,12 +13,16 @@ 'listing__ds', 'listing__is_lux_latest', 'revenue_instance__ds', + 'user__archived_at', + 'user__bio_added_ts', 'user__created_at', 'user__ds', 'user__ds_latest', 'user__ds_partitioned', 'user__home_state', 'user__home_state_latest', + 'user__last_login_ts', + 'user__last_profile_edit_ts', 'verification__ds', 'verification__ds_partitioned', 'verification__verification_type', diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_conversion_metric_predicate_pushdown__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_conversion_metric_predicate_pushdown__dfp_0.xml index f819a44912..63b4cfcd0a 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_conversion_metric_predicate_pushdown__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_conversion_metric_predicate_pushdown__dfp_0.xml @@ -153,11 +153,11 @@ - + - + @@ -170,7 +170,7 @@ - + @@ -257,11 +257,11 @@ - + - + @@ -273,7 +273,7 @@ - + @@ -284,11 +284,11 @@ - + - + @@ -303,7 +303,7 @@ - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_cumulative_metric_predicate_pushdown__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_cumulative_metric_predicate_pushdown__dfp_0.xml index 18ed3d0c5c..3fd12a5735 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_cumulative_metric_predicate_pushdown__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_cumulative_metric_predicate_pushdown__dfp_0.xml @@ -155,11 +155,11 @@ - + - + @@ -173,11 +173,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_predicate_pushdown__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_predicate_pushdown__dfp_0.xml index b916d545c0..05e5480fbe 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_predicate_pushdown__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_predicate_pushdown__dfp_0.xml @@ -211,12 +211,12 @@ - + - + @@ -229,12 +229,12 @@ - + - + @@ -423,12 +423,12 @@ - + - + @@ -442,12 +442,12 @@ - + - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_with_post_agg_join_predicate_pushdown__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_with_post_agg_join_predicate_pushdown__dfp_0.xml index 3e0f6ba307..f6f53d7377 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_with_post_agg_join_predicate_pushdown__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_fill_nulls_time_spine_metric_with_post_agg_join_predicate_pushdown__dfp_0.xml @@ -242,12 +242,12 @@ - + - + @@ -260,12 +260,12 @@ - + - + @@ -485,12 +485,12 @@ - + - + @@ -504,12 +504,12 @@ - + - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_offset_metric_predicate_pushdown__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_offset_metric_predicate_pushdown__dfp_0.xml index 9059fcb7e2..512cdc0fce 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_offset_metric_predicate_pushdown__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_offset_metric_predicate_pushdown__dfp_0.xml @@ -201,12 +201,12 @@ - + - + @@ -219,12 +219,12 @@ - + - + @@ -401,12 +401,12 @@ - + - + @@ -420,12 +420,12 @@ - + - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_categorical_pushdown__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_categorical_pushdown__dfp_0.xml index 7f2c90a551..80357bff35 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_categorical_pushdown__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_categorical_pushdown__dfp_0.xml @@ -143,11 +143,11 @@ - + - + @@ -160,11 +160,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_metric_time_pushdown_with_two_targets__dfp_0.xml b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_metric_time_pushdown_with_two_targets__dfp_0.xml index 20bfbfe40f..621a7a9449 100644 --- a/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_metric_time_pushdown_with_two_targets__dfp_0.xml +++ b/tests_metricflow/snapshots/test_predicate_pushdown_optimizer.py/DataflowPlan/test_simple_join_metric_time_pushdown_with_two_targets__dfp_0.xml @@ -119,11 +119,11 @@ - + - + @@ -136,11 +136,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql index 43cd6f32e3..9366489873 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS ds__day - , DATETIME_TRUNC(time_spine_src_28000.ds, isoweek) AS ds__week - , DATETIME_TRUNC(time_spine_src_28000.ds, month) AS ds__month - , DATETIME_TRUNC(time_spine_src_28000.ds, quarter) AS ds__quarter - , DATETIME_TRUNC(time_spine_src_28000.ds, year) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , IF(EXTRACT(dayofweek FROM time_spine_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28000.ds) - 1) AS ds__extract_dow - , EXTRACT(dayofyear FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day + , DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week + , DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month + , DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql index 21b0a95fc4..f24a9803be 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATETIME_TRUNC(ds, day) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY metric_time__day ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql index f43945c4af..a020f1aad3 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATETIME_TRUNC(time_spine_src_28000.ds, day) AS ds__day - , DATETIME_TRUNC(time_spine_src_28000.ds, isoweek) AS ds__week - , DATETIME_TRUNC(time_spine_src_28000.ds, month) AS ds__month - , DATETIME_TRUNC(time_spine_src_28000.ds, quarter) AS ds__quarter - , DATETIME_TRUNC(time_spine_src_28000.ds, year) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , IF(EXTRACT(dayofweek FROM time_spine_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28000.ds) - 1) AS ds__extract_dow - , EXTRACT(dayofyear FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day + , DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week + , DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month + , DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter + , DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow + , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql index 68ca95b0d3..02d3002c6c 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATETIME_TRUNC(ds, isoweek) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY metric_time__week ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql index d846170f03..ddb20104bb 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/BigQuery/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) - 1) AS ds_partitioned__extract_dow , EXTRACT(dayofyear FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, millisecond) AS last_profile_edit_ts__millisecond + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, second) AS last_profile_edit_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, minute) AS last_profile_edit_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, hour) AS last_profile_edit_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, day) AS last_profile_edit_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, isoweek) AS last_profile_edit_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, month) AS last_profile_edit_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, quarter) AS last_profile_edit_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, year) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) - 1) AS last_profile_edit_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, second) AS bio_added_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, minute) AS bio_added_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, hour) AS bio_added_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, day) AS bio_added_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, isoweek) AS bio_added_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, month) AS bio_added_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, quarter) AS bio_added_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, year) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) - 1) AS bio_added_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, minute) AS last_login_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, hour) AS last_login_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, day) AS last_login_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, isoweek) AS last_login_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, month) AS last_login_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, quarter) AS last_login_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, year) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) - 1) AS last_login_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, hour) AS archived_at__hour + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, day) AS archived_at__day + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, isoweek) AS archived_at__week + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, month) AS archived_at__month + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, quarter) AS archived_at__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, year) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) - 1) AS archived_at__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATETIME_TRUNC(users_ds_source_src_28000.ds, day) AS user__ds__day , DATETIME_TRUNC(users_ds_source_src_28000.ds, isoweek) AS user__ds__week , DATETIME_TRUNC(users_ds_source_src_28000.ds, month) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.ds_partitioned) - 1) AS user__ds_partitioned__extract_dow , EXTRACT(dayofyear FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, millisecond) AS user__last_profile_edit_ts__millisecond + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, second) AS user__last_profile_edit_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, minute) AS user__last_profile_edit_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, hour) AS user__last_profile_edit_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, day) AS user__last_profile_edit_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, isoweek) AS user__last_profile_edit_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, month) AS user__last_profile_edit_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, quarter) AS user__last_profile_edit_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_profile_edit_ts, year) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_profile_edit_ts) - 1) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, second) AS user__bio_added_ts__second + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, minute) AS user__bio_added_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, hour) AS user__bio_added_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, day) AS user__bio_added_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, isoweek) AS user__bio_added_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, month) AS user__bio_added_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, quarter) AS user__bio_added_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, year) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.bio_added_ts) - 1) AS user__bio_added_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, minute) AS user__last_login_ts__minute + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, hour) AS user__last_login_ts__hour + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, day) AS user__last_login_ts__day + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, isoweek) AS user__last_login_ts__week + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, month) AS user__last_login_ts__month + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, quarter) AS user__last_login_ts__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.last_login_ts, year) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.last_login_ts) - 1) AS user__last_login_ts__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, hour) AS user__archived_at__hour + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, day) AS user__archived_at__day + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, isoweek) AS user__archived_at__week + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, month) AS user__archived_at__month + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, quarter) AS user__archived_at__quarter + , DATETIME_TRUNC(users_ds_source_src_28000.archived_at, year) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , IF(EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) = 1, 7, EXTRACT(dayofweek FROM users_ds_source_src_28000.archived_at) - 1) AS user__archived_at__extract_dow + , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql index dbfc7da23a..829d13678f 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql index ce2a27035e..4d31ef04b9 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql index d7ca5161cc..68dd51363f 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql index a5d07eba96..4ceb83d067 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATE_TRUNC('week', ds) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('week', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql index c4553bcdb9..4067cd9e89 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Databricks/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(DAYOFWEEK_ISO FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql index fecf550869..0eef091ea3 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql index ce2a27035e..4d31ef04b9 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql index 8216c96cc1..7c587e39ac 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql index a5d07eba96..4ceb83d067 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATE_TRUNC('week', ds) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('week', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql index aba31555ed..2c6261d271 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/DuckDB/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql index fecf550869..0eef091ea3 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql index ce2a27035e..4d31ef04b9 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql index 8216c96cc1..7c587e39ac 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(isodow FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql index a5d07eba96..4ceb83d067 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATE_TRUNC('week', ds) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('week', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql index aba31555ed..2c6261d271 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Postgres/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , EXTRACT(isodow FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(isodow FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql index 5f3939ae42..5d35c8a3ba 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , CASE WHEN EXTRACT(dow FROM time_spine_src_28000.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28000.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28000.ds) END AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql index ce2a27035e..4d31ef04b9 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql index a78f290fde..1bd5e2e330 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , CASE WHEN EXTRACT(dow FROM time_spine_src_28000.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28000.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28000.ds) END AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql index a5d07eba96..4ceb83d067 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATE_TRUNC('week', ds) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('week', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql index 18bd72503a..2dd31cfb11 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Redshift/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) END AS ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) END AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) END AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) END AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.archived_at) END AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.ds_partitioned) END AS user__ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_profile_edit_ts) END AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.bio_added_ts) END AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.last_login_ts) END AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , CASE WHEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) = 0 THEN EXTRACT(dow FROM users_ds_source_src_28000.archived_at) + 7 ELSE EXTRACT(dow FROM users_ds_source_src_28000.archived_at) END AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql index 8532ab4bbb..6d1f296f9d 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(dayofweekiso FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql index ce2a27035e..4d31ef04b9 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql index b761f97a62..9f37f05bc2 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(dayofweekiso FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql index a5d07eba96..4ceb83d067 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATE_TRUNC('week', ds) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('week', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql index c8af79b4f7..35eba9553f 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Snowflake/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(dayofweekiso FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql index ce97454651..0f0357e2e0 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql index ce2a27035e..4d31ef04b9 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT DATE_TRUNC('day', ds) AS metric_time__day - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('day', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql index 43a97950c9..b1f33eb2a6 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0.sql @@ -34,18 +34,18 @@ FROM ( FROM ( -- Time Spine SELECT - DATE_TRUNC('day', time_spine_src_28000.ds) AS ds__day - , DATE_TRUNC('week', time_spine_src_28000.ds) AS ds__week - , DATE_TRUNC('month', time_spine_src_28000.ds) AS ds__month - , DATE_TRUNC('quarter', time_spine_src_28000.ds) AS ds__quarter - , DATE_TRUNC('year', time_spine_src_28000.ds) AS ds__year - , EXTRACT(year FROM time_spine_src_28000.ds) AS ds__extract_year - , EXTRACT(quarter FROM time_spine_src_28000.ds) AS ds__extract_quarter - , EXTRACT(month FROM time_spine_src_28000.ds) AS ds__extract_month - , EXTRACT(day FROM time_spine_src_28000.ds) AS ds__extract_day - , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28000.ds) AS ds__extract_dow - , EXTRACT(doy FROM time_spine_src_28000.ds) AS ds__extract_doy - FROM ***************************.mf_time_spine time_spine_src_28000 + DATE_TRUNC('day', time_spine_src_28006.ds) AS ds__day + , DATE_TRUNC('week', time_spine_src_28006.ds) AS ds__week + , DATE_TRUNC('month', time_spine_src_28006.ds) AS ds__month + , DATE_TRUNC('quarter', time_spine_src_28006.ds) AS ds__quarter + , DATE_TRUNC('year', time_spine_src_28006.ds) AS ds__year + , EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year + , EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter + , EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month + , EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day + , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow + , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy + FROM ***************************.mf_time_spine time_spine_src_28006 ) subq_0 ) subq_1 GROUP BY diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql index a5d07eba96..4ceb83d067 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_min_max_metric_time_week__plan0_optimized.sql @@ -8,7 +8,7 @@ FROM ( -- Pass Only Elements: ['metric_time__week',] SELECT DATE_TRUNC('week', ds) AS metric_time__week - FROM ***************************.mf_time_spine time_spine_src_28000 + FROM ***************************.mf_time_spine time_spine_src_28006 GROUP BY DATE_TRUNC('week', ds) ) subq_5 diff --git a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql index 2ce733de7d..72f660a182 100644 --- a/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql +++ b/tests_metricflow/snapshots/test_query_rendering.py/SqlQueryPlan/Trino/test_partitioned_join__plan0.sql @@ -190,6 +190,60 @@ FROM ( , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy , users_ds_source_src_28000.home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS archived_at__extract_doy , DATE_TRUNC('day', users_ds_source_src_28000.ds) AS user__ds__day , DATE_TRUNC('week', users_ds_source_src_28000.ds) AS user__ds__week , DATE_TRUNC('month', users_ds_source_src_28000.ds) AS user__ds__month @@ -224,6 +278,60 @@ FROM ( , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_dow , EXTRACT(doy FROM users_ds_source_src_28000.ds_partitioned) AS user__ds_partitioned__extract_doy , users_ds_source_src_28000.home_state AS user__home_state + , DATE_TRUNC('millisecond', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__millisecond + , DATE_TRUNC('second', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_profile_edit_ts) AS user__last_profile_edit_ts__extract_doy + , DATE_TRUNC('second', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__second + , DATE_TRUNC('minute', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.bio_added_ts) AS user__bio_added_ts__extract_doy + , DATE_TRUNC('minute', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__minute + , DATE_TRUNC('hour', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__hour + , DATE_TRUNC('day', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__day + , DATE_TRUNC('week', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__week + , DATE_TRUNC('month', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__year + , EXTRACT(year FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.last_login_ts) AS user__last_login_ts__extract_doy + , DATE_TRUNC('hour', users_ds_source_src_28000.archived_at) AS user__archived_at__hour + , DATE_TRUNC('day', users_ds_source_src_28000.archived_at) AS user__archived_at__day + , DATE_TRUNC('week', users_ds_source_src_28000.archived_at) AS user__archived_at__week + , DATE_TRUNC('month', users_ds_source_src_28000.archived_at) AS user__archived_at__month + , DATE_TRUNC('quarter', users_ds_source_src_28000.archived_at) AS user__archived_at__quarter + , DATE_TRUNC('year', users_ds_source_src_28000.archived_at) AS user__archived_at__year + , EXTRACT(year FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_year + , EXTRACT(quarter FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_quarter + , EXTRACT(month FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_month + , EXTRACT(day FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_day + , EXTRACT(DAY_OF_WEEK FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_dow + , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 ) subq_3 diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml index 0fe093d825..fef8f21032 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_1_semantic_model__dfp_0.xml @@ -42,11 +42,11 @@ - + - + @@ -59,11 +59,11 @@ - + - + @@ -110,11 +110,11 @@ - + - + @@ -127,11 +127,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml index 0bf968b5aa..b431d0a228 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_metrics_from_2_semantic_models__dfp_0.xml @@ -20,11 +20,11 @@ - + - + @@ -46,11 +46,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml index 043ac63d08..2ddfeed739 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_2_ratio_metrics_from_1_semantic_model__dfp_0.xml @@ -27,11 +27,11 @@ - + - + @@ -53,11 +53,11 @@ - + - + @@ -88,11 +88,11 @@ - + - + @@ -114,11 +114,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml index 39de495060..2d63d5e1c5 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_3_metrics_from_2_semantic_models__dfp_0.xml @@ -20,11 +20,11 @@ - + - + @@ -46,11 +46,11 @@ - + - + @@ -72,11 +72,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml index 57dad2c6e2..4964340006 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_constrained_metric_not_combined__dfp_0.xml @@ -20,11 +20,11 @@ - + - + @@ -100,11 +100,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml index f77d573c61..b071f05bc6 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric__dfp_0.xml @@ -24,11 +24,11 @@ - + - + @@ -50,11 +50,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml index d2cec259be..fb4c3516a7 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_derived_metric_with_non_derived_metric__dfp_0.xml @@ -20,11 +20,11 @@ - + - + @@ -53,11 +53,11 @@ - + - + @@ -79,11 +79,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml index 7edd301e94..14fc0c78b9 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_duplicate_measures__dfp_0.xml @@ -24,11 +24,11 @@ - + - + @@ -55,11 +55,11 @@ - + - + diff --git a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml index 9a7c8a6c17..b9181a179d 100644 --- a/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml +++ b/tests_metricflow/snapshots/test_source_scan_optimizer.py/DataflowPlan/test_nested_derived_metric__dfp_0.xml @@ -32,11 +32,11 @@ - + - + @@ -59,11 +59,11 @@ - + - + @@ -87,11 +87,11 @@ - + - + @@ -113,11 +113,11 @@ - + - +