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 b39a591843..b5173399d3 100644 --- a/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py @@ -276,6 +276,8 @@ def get_joinable_metrics_for_semantic_model( f"last join path element: {using_join_path.last_semantic_model_reference.semantic_model_name}", ) properties = properties.union(frozenset({LinkableElementProperty.MULTI_HOP})) + # Temp: disable LinkableMetrics with outer join path until there is an interface to specify it. + return LinkableElementSet() path_key_to_linkable_metrics: Dict[ElementPathKey, Tuple[LinkableMetric, ...]] = {} for entity_reference in [entity.reference for entity in semantic_model.entities]: diff --git a/metricflow-semantics/metricflow_semantics/specs/linkable_spec_set.py b/metricflow-semantics/metricflow_semantics/specs/linkable_spec_set.py index 2e1edb7d9e..236172d8ab 100644 --- a/metricflow-semantics/metricflow_semantics/specs/linkable_spec_set.py +++ b/metricflow-semantics/metricflow_semantics/specs/linkable_spec_set.py @@ -3,10 +3,10 @@ import itertools import typing from dataclasses import dataclass -from typing import Dict, List, Sequence, Set, Tuple +from typing import Dict, List, Sequence, Tuple from dbt_semantic_interfaces.dataclass_serialization import SerializableDataclass -from dbt_semantic_interfaces.references import LinkableElementReference, MeasureReference, MetricReference +from dbt_semantic_interfaces.references import MeasureReference, MetricReference from typing_extensions import override from metricflow_semantics.collection_helpers.merger import Mergeable @@ -84,10 +84,6 @@ def as_tuple(self) -> Tuple[LinkableInstanceSpec, ...]: # noqa: D102 ) ) - @property - def as_reference_set(self) -> Set[LinkableElementReference]: # noqa: D102 - return {spec.reference for spec in self.as_tuple} - @override def merge(self, other: LinkableSpecSet) -> LinkableSpecSet: return LinkableSpecSet( 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 66505f4456..64f36751c6 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 @@ -120,55 +120,6 @@ 'listing__lux_booking_fraction_of_max_value', 'listing__lux_booking_value_rate_expr', 'listing__lux_listing', - 'listing__lux_listing__active_listings', - 'listing__lux_listing__approximate_continuous_booking_value_p99', - 'listing__lux_listing__approximate_discrete_booking_value_p99', - 'listing__lux_listing__average_booking_value', - 'listing__lux_listing__average_instant_booking_value', - 'listing__lux_listing__bookers', - 'listing__lux_listing__booking_fees', - 'listing__lux_listing__booking_fees_per_booker', - 'listing__lux_listing__booking_payments', - 'listing__lux_listing__booking_value', - 'listing__lux_listing__booking_value_for_non_null_listing_id', - 'listing__lux_listing__booking_value_p99', - 'listing__lux_listing__booking_value_per_view', - 'listing__lux_listing__booking_value_sub_instant', - 'listing__lux_listing__booking_value_sub_instant_add_10', - 'listing__lux_listing__bookings', - 'listing__lux_listing__bookings_fill_nulls_with_0', - 'listing__lux_listing__bookings_fill_nulls_with_0_without_time_spine', - 'listing__lux_listing__bookings_join_to_time_spine', - 'listing__lux_listing__bookings_per_booker', - 'listing__lux_listing__bookings_per_dollar', - 'listing__lux_listing__bookings_per_listing', - 'listing__lux_listing__bookings_per_lux_listing_derived', - 'listing__lux_listing__bookings_per_view', - 'listing__lux_listing__derived_bookings_0', - 'listing__lux_listing__derived_bookings_1', - 'listing__lux_listing__discrete_booking_value_p99', - 'listing__lux_listing__double_counted_delayed_bookings', - 'listing__lux_listing__instant_booking_fraction_of_max_value', - 'listing__lux_listing__instant_booking_value', - 'listing__lux_listing__instant_booking_value_ratio', - 'listing__lux_listing__instant_bookings', - 'listing__lux_listing__instant_lux_booking_value_rate', - 'listing__lux_listing__instant_plus_non_referred_bookings_pct', - 'listing__lux_listing__largest_listing', - 'listing__lux_listing__listings', - 'listing__lux_listing__lux_booking_fraction_of_max_value', - 'listing__lux_listing__lux_booking_value_rate_expr', - 'listing__lux_listing__lux_listings', - 'listing__lux_listing__max_booking_value', - 'listing__lux_listing__median_booking_value', - 'listing__lux_listing__min_booking_value', - 'listing__lux_listing__nested_fill_nulls_without_time_spine', - 'listing__lux_listing__non_referred_bookings_pct', - 'listing__lux_listing__referred_bookings', - 'listing__lux_listing__smallest_listing', - 'listing__lux_listing__twice_bookings_fill_nulls_with_0_without_time_spine', - 'listing__lux_listing__views', - 'listing__lux_listing__views_times_booking_value', 'listing__lux_listings', 'listing__max_booking_value', 'listing__median_booking_value', @@ -208,65 +159,6 @@ 'user__account__user__total_account_balance_first_day', 'user__active_listings', 'user__company', - 'user__company__active_listings', - 'user__company__current_account_balance_by_user', - 'user__company__identity_verifications', - 'user__company__largest_listing', - 'user__company__listing__user__company__approximate_continuous_booking_value_p99', - 'user__company__listing__user__company__approximate_discrete_booking_value_p99', - 'user__company__listing__user__company__average_booking_value', - 'user__company__listing__user__company__average_instant_booking_value', - 'user__company__listing__user__company__bookers', - 'user__company__listing__user__company__booking_fees', - 'user__company__listing__user__company__booking_fees_per_booker', - 'user__company__listing__user__company__booking_payments', - 'user__company__listing__user__company__booking_value', - 'user__company__listing__user__company__booking_value_for_non_null_listing_id', - 'user__company__listing__user__company__booking_value_p99', - 'user__company__listing__user__company__booking_value_per_view', - 'user__company__listing__user__company__booking_value_sub_instant', - 'user__company__listing__user__company__booking_value_sub_instant_add_10', - 'user__company__listing__user__company__bookings', - 'user__company__listing__user__company__bookings_fill_nulls_with_0', - 'user__company__listing__user__company__bookings_fill_nulls_with_0_without_time_spine', - 'user__company__listing__user__company__bookings_join_to_time_spine', - 'user__company__listing__user__company__bookings_per_booker', - 'user__company__listing__user__company__bookings_per_dollar', - 'user__company__listing__user__company__bookings_per_view', - 'user__company__listing__user__company__derived_bookings_0', - 'user__company__listing__user__company__derived_bookings_1', - 'user__company__listing__user__company__discrete_booking_value_p99', - 'user__company__listing__user__company__double_counted_delayed_bookings', - 'user__company__listing__user__company__instant_booking_fraction_of_max_value', - 'user__company__listing__user__company__instant_booking_value', - 'user__company__listing__user__company__instant_booking_value_ratio', - 'user__company__listing__user__company__instant_bookings', - 'user__company__listing__user__company__instant_lux_booking_value_rate', - 'user__company__listing__user__company__instant_plus_non_referred_bookings_pct', - 'user__company__listing__user__company__lux_booking_fraction_of_max_value', - 'user__company__listing__user__company__lux_booking_value_rate_expr', - 'user__company__listing__user__company__max_booking_value', - 'user__company__listing__user__company__median_booking_value', - 'user__company__listing__user__company__min_booking_value', - 'user__company__listing__user__company__nested_fill_nulls_without_time_spine', - 'user__company__listing__user__company__non_referred_bookings_pct', - 'user__company__listing__user__company__referred_bookings', - 'user__company__listing__user__company__twice_bookings_fill_nulls_with_0_without_time_spine', - 'user__company__listing__user__company__views', - 'user__company__listing__user__company__views_times_booking_value', - 'user__company__listings', - 'user__company__lux_listings', - 'user__company__regional_starting_balance_ratios', - 'user__company__revenue', - 'user__company__revenue_all_time', - 'user__company__smallest_listing', - 'user__company__total_account_balance_first_day', - 'user__company__views', - 'user__company__visit_buy_conversion_rate', - 'user__company__visit_buy_conversion_rate_7days', - 'user__company__visit_buy_conversion_rate_7days_fill_nulls_with_0', - 'user__company__visit_buy_conversion_rate_by_session', - 'user__company__visit_buy_conversions', 'user__company_name', 'user__created_at__day', 'user__created_at__extract_day', diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt index 9137e7531f..5e883fe5be 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path__result0.txt @@ -1,126 +1,46 @@ -Semantic Model Entity Links Name Time Granularity Date Part Properties ----------------- ------------------------------------------------------- --------------------------------------------------- ------------------ ----------- -------------------------------------- -listings_latest ("('listing', 'user')", "('account', 'user')") current_account_balance_by_user ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('account', 'user')") regional_starting_balance_ratios ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('account', 'user')") total_account_balance_first_day ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") active_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") average_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") average_instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookers ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_fees ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_fees_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_payments ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_value_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_value_sub_instant ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_join_to_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_dollar ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") bookings_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") derived_bookings_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") derived_bookings_1 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") double_counted_delayed_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") instant_booking_value_ratio ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") instant_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") instant_lux_booking_value_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") largest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") lux_booking_value_rate_expr ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") lux_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") max_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") median_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") min_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") referred_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") smallest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('listing', 'user')") views_times_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('revenue_instance', 'user')") revenue ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('revenue_instance', 'user')") revenue_all_time ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") active_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") current_account_balance_by_user ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") identity_verifications ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") largest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") lux_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") regional_starting_balance_ratios ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") revenue ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") revenue_all_time ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") smallest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") total_account_balance_first_day ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") views ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") visit_buy_conversion_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") visit_buy_conversion_rate_7days ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('user',)") visit_buy_conversions ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('verification', 'user')") identity_verifications ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('view', 'user')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate_7days ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('listing', 'user')", "('visit', 'user')") visit_buy_conversions ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ('listing',) capacity_latest ['JOINED'] -listings_latest ('listing',) country_latest ['JOINED'] -listings_latest ('listing',) created_at DAY ['JOINED'] -listings_latest ('listing',) created_at DAY DAY ['JOINED'] -listings_latest ('listing',) created_at DAY DOW ['JOINED'] -listings_latest ('listing',) created_at DAY DOY ['JOINED'] -listings_latest ('listing',) created_at DAY MONTH ['JOINED'] -listings_latest ('listing',) created_at DAY QUARTER ['JOINED'] -listings_latest ('listing',) created_at DAY YEAR ['JOINED'] -listings_latest ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds DAY ['JOINED'] -listings_latest ('listing',) ds DAY DAY ['JOINED'] -listings_latest ('listing',) ds DAY DOW ['JOINED'] -listings_latest ('listing',) ds DAY DOY ['JOINED'] -listings_latest ('listing',) ds DAY MONTH ['JOINED'] -listings_latest ('listing',) ds DAY QUARTER ['JOINED'] -listings_latest ('listing',) ds DAY YEAR ['JOINED'] -listings_latest ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -listings_latest ('listing',) is_lux_latest ['JOINED'] -listings_latest ('listing',) user ['ENTITY', 'JOINED'] +Semantic Model Entity Links Name Time Granularity Date Part Properties +---------------- -------------- --------------- ------------------ ----------- -------------------------------------- +listings_latest ('listing',) capacity_latest ['JOINED'] +listings_latest ('listing',) country_latest ['JOINED'] +listings_latest ('listing',) created_at DAY ['JOINED'] +listings_latest ('listing',) created_at DAY DAY ['JOINED'] +listings_latest ('listing',) created_at DAY DOW ['JOINED'] +listings_latest ('listing',) created_at DAY DOY ['JOINED'] +listings_latest ('listing',) created_at DAY MONTH ['JOINED'] +listings_latest ('listing',) created_at DAY QUARTER ['JOINED'] +listings_latest ('listing',) created_at DAY YEAR ['JOINED'] +listings_latest ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds DAY ['JOINED'] +listings_latest ('listing',) ds DAY DAY ['JOINED'] +listings_latest ('listing',) ds DAY DOW ['JOINED'] +listings_latest ('listing',) ds DAY DOY ['JOINED'] +listings_latest ('listing',) ds DAY MONTH ['JOINED'] +listings_latest ('listing',) ds DAY QUARTER ['JOINED'] +listings_latest ('listing',) ds DAY YEAR ['JOINED'] +listings_latest ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +listings_latest ('listing',) is_lux_latest ['JOINED'] +listings_latest ('listing',) user ['ENTITY', 'JOINED'] diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt index 94f0b7aa10..8b594e18c5 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_linkable_spec_resolver.py/str/test_create_linkable_element_set_from_join_path_multi_hop__result0.txt @@ -1,126 +1,46 @@ -Semantic Model Entity Links Name Time Granularity Date Part Properties ----------------- ---------------------------------------------------------------- --------------------------------------------------- ------------------ ----------- --------------------------------------------------- -listings_latest ("('guest', 'listing', 'user')", "('account', 'user')") current_account_balance_by_user ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('account', 'user')") regional_starting_balance_ratios ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('account', 'user')") total_account_balance_first_day ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") active_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") average_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") average_instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookers ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_fees ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_fees_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_payments ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_value_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_value_sub_instant ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_join_to_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_dollar ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") bookings_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") derived_bookings_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") derived_bookings_1 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") double_counted_delayed_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") instant_booking_value_ratio ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") instant_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") instant_lux_booking_value_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") largest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") lux_booking_value_rate_expr ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") lux_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") max_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") median_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") min_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") referred_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") smallest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('listing', 'user')") views_times_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('revenue_instance', 'user')") revenue ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('revenue_instance', 'user')") revenue_all_time ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") active_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") current_account_balance_by_user ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") identity_verifications ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") largest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") lux_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") regional_starting_balance_ratios ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") revenue ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") revenue_all_time ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") smallest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") total_account_balance_first_day ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") views ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") visit_buy_conversion_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") visit_buy_conversion_rate_7days ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('user',)") visit_buy_conversions ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('verification', 'user')") identity_verifications ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('view', 'user')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate_7days ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('visit', 'user')") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ("('guest', 'listing', 'user')", "('visit', 'user')") visit_buy_conversions ['JOINED', 'METRIC', 'MULTI_HOP'] -listings_latest ('guest', 'listing') capacity_latest ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') country_latest ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY DAY ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY DOW ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY DOY ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY DAY ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY DOW ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY DOY ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY MONTH ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds DAY YEAR ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') is_lux_latest ['JOINED', 'MULTI_HOP'] -listings_latest ('guest', 'listing') user ['ENTITY', 'JOINED', 'MULTI_HOP'] +Semantic Model Entity Links Name Time Granularity Date Part Properties +---------------- -------------------- --------------- ------------------ ----------- --------------------------------------------------- +listings_latest ('guest', 'listing') capacity_latest ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') country_latest ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY DAY ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY DOW ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY DOY ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY MONTH ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY QUARTER ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at DAY YEAR ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY DAY ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY DOW ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY DOY ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY MONTH ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY QUARTER ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds DAY YEAR ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') is_lux_latest ['JOINED', 'MULTI_HOP'] +listings_latest ('guest', 'listing') user ['ENTITY', 'JOINED', 'MULTI_HOP'] 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 f90acc3fad..df50420705 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 @@ -1,429 +1,321 @@ -Semantic Model Entity Links Name Time Granularity Date Part Properties -------------------- ------------------------------------------------------------ --------------------------------------------------- ------------------ ----------- ------------------------------------------- - ("('listing',)", "('booking', 'listing')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") average_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") average_instant_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookers ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_fees ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_fees_per_booker ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_payments ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_value_sub_instant ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookings ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookings_join_to_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookings_per_booker ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") bookings_per_dollar ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") derived_bookings_0 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") derived_bookings_1 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") discrete_booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") double_counted_delayed_bookings ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") instant_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") instant_booking_value_ratio ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") instant_bookings ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") instant_lux_booking_value_rate ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") lux_booking_value_rate_expr ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") max_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") median_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") min_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") non_referred_bookings_pct ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") referred_bookings ['JOINED', 'METRIC'] - ("('listing',)", "('booking', 'listing')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") active_listings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") average_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") average_instant_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookers ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_fees ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_fees_per_booker ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_payments ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_value_for_non_null_listing_id ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_value_per_view ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_value_sub_instant ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_join_to_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_per_booker ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_per_dollar ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_per_listing ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_per_lux_listing_derived ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") bookings_per_view ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") derived_bookings_0 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") derived_bookings_1 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") discrete_booking_value_p99 ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") double_counted_delayed_bookings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") instant_booking_fraction_of_max_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") instant_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") instant_booking_value_ratio ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") instant_bookings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") instant_lux_booking_value_rate ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") largest_listing ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") listings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") lux_booking_fraction_of_max_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") lux_booking_value_rate_expr ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") lux_listings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") max_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") median_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") min_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") non_referred_bookings_pct ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") referred_bookings ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") smallest_listing ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") views ['JOINED', 'METRIC'] - ("('listing',)", "('listing',)") views_times_booking_value ['JOINED', 'METRIC'] - ("('listing',)", "('view', 'listing')") views ['JOINED', 'METRIC'] - ("('user',)", "('account', 'user')") current_account_balance_by_user ['JOINED', 'METRIC'] - ("('user',)", "('account', 'user')") regional_starting_balance_ratios ['JOINED', 'METRIC'] - ("('user',)", "('account', 'user')") total_account_balance_first_day ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") active_listings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") average_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") average_instant_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookers ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_fees ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_fees_per_booker ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_payments ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_value_p99 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_value_per_view ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_value_sub_instant ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_join_to_time_spine ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_booker ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_dollar ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") bookings_per_view ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") derived_bookings_0 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") derived_bookings_1 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") discrete_booking_value_p99 ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") double_counted_delayed_bookings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") instant_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") instant_booking_value_ratio ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") instant_bookings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") instant_lux_booking_value_rate ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") largest_listing ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") listings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") lux_booking_value_rate_expr ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") lux_listings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") max_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") median_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") min_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") non_referred_bookings_pct ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") referred_bookings ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") smallest_listing ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") views ['JOINED', 'METRIC'] - ("('user',)", "('listing', 'user')") views_times_booking_value ['JOINED', 'METRIC'] - ("('user',)", "('revenue_instance', 'user')") revenue ['JOINED', 'METRIC'] - ("('user',)", "('revenue_instance', 'user')") revenue_all_time ['JOINED', 'METRIC'] - ("('user',)", "('user',)") active_listings ['JOINED', 'METRIC'] - ("('user',)", "('user',)") current_account_balance_by_user ['JOINED', 'METRIC'] - ("('user',)", "('user',)") identity_verifications ['JOINED', 'METRIC'] - ("('user',)", "('user',)") largest_listing ['JOINED', 'METRIC'] - ("('user',)", "('user',)") listings ['JOINED', 'METRIC'] - ("('user',)", "('user',)") lux_listings ['JOINED', 'METRIC'] - ("('user',)", "('user',)") regional_starting_balance_ratios ['JOINED', 'METRIC'] - ("('user',)", "('user',)") revenue ['JOINED', 'METRIC'] - ("('user',)", "('user',)") revenue_all_time ['JOINED', 'METRIC'] - ("('user',)", "('user',)") smallest_listing ['JOINED', 'METRIC'] - ("('user',)", "('user',)") total_account_balance_first_day ['JOINED', 'METRIC'] - ("('user',)", "('user',)") views ['JOINED', 'METRIC'] - ("('user',)", "('user',)") visit_buy_conversion_rate ['JOINED', 'METRIC'] - ("('user',)", "('user',)") visit_buy_conversion_rate_7days ['JOINED', 'METRIC'] - ("('user',)", "('user',)") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC'] - ("('user',)", "('user',)") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC'] - ("('user',)", "('user',)") visit_buy_conversions ['JOINED', 'METRIC'] - ("('user',)", "('verification', 'user')") identity_verifications ['JOINED', 'METRIC'] - ("('user',)", "('view', 'user')") views ['JOINED', 'METRIC'] - ("('user',)", "('visit', 'user')") visit_buy_conversion_rate ['JOINED', 'METRIC'] - ("('user',)", "('visit', 'user')") visit_buy_conversion_rate_7days ['JOINED', 'METRIC'] - ("('user',)", "('visit', 'user')") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC'] - ("('user',)", "('visit', 'user')") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC'] - ("('user',)", "('visit', 'user')") visit_buy_conversions ['JOINED', 'METRIC'] -companies ("('user', 'company')", "('listing', 'user', 'company')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") average_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") average_instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookers ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_fees ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_fees_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_payments ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_value_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_value_sub_instant ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings_join_to_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings_per_dollar ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") bookings_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") derived_bookings_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") derived_bookings_1 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") double_counted_delayed_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") instant_booking_value_ratio ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") instant_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") instant_lux_booking_value_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") lux_booking_value_rate_expr ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") max_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") median_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") min_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") referred_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('listing', 'user', 'company')") views_times_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") active_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") current_account_balance_by_user ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") identity_verifications ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") largest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") listings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") lux_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") regional_starting_balance_ratios ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") revenue ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") revenue_all_time ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") smallest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") total_account_balance_first_day ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") visit_buy_conversion_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") visit_buy_conversion_rate_7days ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ("('user', 'company')", "('user', 'company')") visit_buy_conversions ['JOINED', 'METRIC', 'MULTI_HOP'] -companies ('user',) company ['ENTITY', 'JOINED'] -companies ('user',) company_name ['JOINED'] -listings_latest () listing ['ENTITY', 'LOCAL'] -listings_latest () metric_time DAY ['METRIC_TIME'] -listings_latest () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -listings_latest () user ['ENTITY', 'LOCAL'] -listings_latest ('listing',) capacity_latest ['LOCAL'] -listings_latest ('listing',) country_latest ['LOCAL'] -listings_latest ('listing',) created_at DAY ['LOCAL'] -listings_latest ('listing',) created_at DAY DAY ['LOCAL'] -listings_latest ('listing',) created_at DAY DOW ['LOCAL'] -listings_latest ('listing',) created_at DAY DOY ['LOCAL'] -listings_latest ('listing',) created_at DAY MONTH ['LOCAL'] -listings_latest ('listing',) created_at DAY QUARTER ['LOCAL'] -listings_latest ('listing',) created_at DAY YEAR ['LOCAL'] -listings_latest ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds DAY ['LOCAL'] -listings_latest ('listing',) ds DAY DAY ['LOCAL'] -listings_latest ('listing',) ds DAY DOW ['LOCAL'] -listings_latest ('listing',) ds DAY DOY ['LOCAL'] -listings_latest ('listing',) ds DAY MONTH ['LOCAL'] -listings_latest ('listing',) ds DAY QUARTER ['LOCAL'] -listings_latest ('listing',) ds DAY YEAR ['LOCAL'] -listings_latest ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -listings_latest ('listing',) is_lux_latest ['LOCAL'] -listings_latest ('listing',) user ['ENTITY', 'LOCAL'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") active_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") average_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") average_instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookers ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_fees ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_fees_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_payments ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_value_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_value_sub_instant ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_join_to_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_per_booker ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_per_dollar ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_per_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_per_lux_listing_derived ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") bookings_per_view ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") derived_bookings_0 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") derived_bookings_1 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") discrete_booking_value_p99 ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") double_counted_delayed_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") instant_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") instant_booking_value_ratio ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") instant_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") instant_lux_booking_value_rate ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") largest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") listings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") lux_booking_value_rate_expr ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") lux_listings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") max_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") median_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") min_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") non_referred_bookings_pct ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") referred_bookings ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") smallest_listing ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") views ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ("('listing', 'lux_listing')", "('listing', 'lux_listing')") views_times_booking_value ['JOINED', 'METRIC', 'MULTI_HOP'] -lux_listing_mapping ('listing',) lux_listing ['ENTITY', 'JOINED'] -users_ds_source ('user',) created_at DAY ['JOINED'] -users_ds_source ('user',) created_at DAY DAY ['JOINED'] -users_ds_source ('user',) created_at DAY DOW ['JOINED'] -users_ds_source ('user',) created_at DAY DOY ['JOINED'] -users_ds_source ('user',) created_at DAY MONTH ['JOINED'] -users_ds_source ('user',) created_at DAY QUARTER ['JOINED'] -users_ds_source ('user',) created_at DAY YEAR ['JOINED'] -users_ds_source ('user',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds DAY ['JOINED'] -users_ds_source ('user',) ds DAY DAY ['JOINED'] -users_ds_source ('user',) ds DAY DOW ['JOINED'] -users_ds_source ('user',) ds DAY DOY ['JOINED'] -users_ds_source ('user',) ds DAY MONTH ['JOINED'] -users_ds_source ('user',) ds DAY QUARTER ['JOINED'] -users_ds_source ('user',) ds DAY YEAR ['JOINED'] -users_ds_source ('user',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned DAY ['JOINED'] -users_ds_source ('user',) ds_partitioned DAY DAY ['JOINED'] -users_ds_source ('user',) ds_partitioned DAY DOW ['JOINED'] -users_ds_source ('user',) ds_partitioned DAY DOY ['JOINED'] -users_ds_source ('user',) ds_partitioned DAY MONTH ['JOINED'] -users_ds_source ('user',) ds_partitioned DAY QUARTER ['JOINED'] -users_ds_source ('user',) ds_partitioned DAY YEAR ['JOINED'] -users_ds_source ('user',) ds_partitioned MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_ds_source ('user',) home_state ['JOINED'] -users_latest ('user',) ds_latest DAY ['JOINED'] -users_latest ('user',) ds_latest DAY DAY ['JOINED'] -users_latest ('user',) ds_latest DAY DOW ['JOINED'] -users_latest ('user',) ds_latest DAY DOY ['JOINED'] -users_latest ('user',) ds_latest DAY MONTH ['JOINED'] -users_latest ('user',) ds_latest DAY QUARTER ['JOINED'] -users_latest ('user',) ds_latest DAY YEAR ['JOINED'] -users_latest ('user',) ds_latest MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) ds_latest YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] -users_latest ('user',) home_state_latest ['JOINED'] +Semantic Model Entity Links Name Time Granularity Date Part Properties +------------------- --------------------------------------------- --------------------------------------------------- ------------------ ----------- ------------------------------------------- + ("('listing',)", "('booking', 'listing')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") average_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") average_instant_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookers ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_fees ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_fees_per_booker ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_payments ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_value_sub_instant ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookings ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookings_join_to_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookings_per_booker ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") bookings_per_dollar ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") derived_bookings_0 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") derived_bookings_1 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") discrete_booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") double_counted_delayed_bookings ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") instant_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") instant_booking_value_ratio ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") instant_bookings ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") instant_lux_booking_value_rate ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") lux_booking_value_rate_expr ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") max_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") median_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") min_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") non_referred_bookings_pct ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") referred_bookings ['JOINED', 'METRIC'] + ("('listing',)", "('booking', 'listing')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") active_listings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") average_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") average_instant_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookers ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_fees ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_fees_per_booker ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_payments ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_value_for_non_null_listing_id ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_value_per_view ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_value_sub_instant ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_join_to_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_per_booker ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_per_dollar ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_per_listing ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_per_lux_listing_derived ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") bookings_per_view ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") derived_bookings_0 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") derived_bookings_1 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") discrete_booking_value_p99 ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") double_counted_delayed_bookings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") instant_booking_fraction_of_max_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") instant_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") instant_booking_value_ratio ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") instant_bookings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") instant_lux_booking_value_rate ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") largest_listing ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") listings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") lux_booking_fraction_of_max_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") lux_booking_value_rate_expr ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") lux_listings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") max_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") median_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") min_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") non_referred_bookings_pct ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") referred_bookings ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") smallest_listing ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") views ['JOINED', 'METRIC'] + ("('listing',)", "('listing',)") views_times_booking_value ['JOINED', 'METRIC'] + ("('listing',)", "('view', 'listing')") views ['JOINED', 'METRIC'] + ("('user',)", "('account', 'user')") current_account_balance_by_user ['JOINED', 'METRIC'] + ("('user',)", "('account', 'user')") regional_starting_balance_ratios ['JOINED', 'METRIC'] + ("('user',)", "('account', 'user')") total_account_balance_first_day ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") active_listings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") approximate_continuous_booking_value_p99 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") approximate_discrete_booking_value_p99 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") average_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") average_instant_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookers ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_fees ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_fees_per_booker ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_payments ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_value_for_non_null_listing_id ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_value_p99 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_value_per_view ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_value_sub_instant ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") booking_value_sub_instant_add_10 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_fill_nulls_with_0 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_join_to_time_spine ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_booker ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_dollar ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_listing ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_lux_listing_derived ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") bookings_per_view ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") derived_bookings_0 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") derived_bookings_1 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") discrete_booking_value_p99 ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") double_counted_delayed_bookings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") instant_booking_fraction_of_max_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") instant_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") instant_booking_value_ratio ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") instant_bookings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") instant_lux_booking_value_rate ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") instant_plus_non_referred_bookings_pct ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") largest_listing ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") listings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") lux_booking_fraction_of_max_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") lux_booking_value_rate_expr ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") lux_listings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") max_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") median_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") min_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") nested_fill_nulls_without_time_spine ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") non_referred_bookings_pct ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") referred_bookings ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") smallest_listing ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") twice_bookings_fill_nulls_with_0_without_time_spine ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") views ['JOINED', 'METRIC'] + ("('user',)", "('listing', 'user')") views_times_booking_value ['JOINED', 'METRIC'] + ("('user',)", "('revenue_instance', 'user')") revenue ['JOINED', 'METRIC'] + ("('user',)", "('revenue_instance', 'user')") revenue_all_time ['JOINED', 'METRIC'] + ("('user',)", "('user',)") active_listings ['JOINED', 'METRIC'] + ("('user',)", "('user',)") current_account_balance_by_user ['JOINED', 'METRIC'] + ("('user',)", "('user',)") identity_verifications ['JOINED', 'METRIC'] + ("('user',)", "('user',)") largest_listing ['JOINED', 'METRIC'] + ("('user',)", "('user',)") listings ['JOINED', 'METRIC'] + ("('user',)", "('user',)") lux_listings ['JOINED', 'METRIC'] + ("('user',)", "('user',)") regional_starting_balance_ratios ['JOINED', 'METRIC'] + ("('user',)", "('user',)") revenue ['JOINED', 'METRIC'] + ("('user',)", "('user',)") revenue_all_time ['JOINED', 'METRIC'] + ("('user',)", "('user',)") smallest_listing ['JOINED', 'METRIC'] + ("('user',)", "('user',)") total_account_balance_first_day ['JOINED', 'METRIC'] + ("('user',)", "('user',)") views ['JOINED', 'METRIC'] + ("('user',)", "('user',)") visit_buy_conversion_rate ['JOINED', 'METRIC'] + ("('user',)", "('user',)") visit_buy_conversion_rate_7days ['JOINED', 'METRIC'] + ("('user',)", "('user',)") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC'] + ("('user',)", "('user',)") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC'] + ("('user',)", "('user',)") visit_buy_conversions ['JOINED', 'METRIC'] + ("('user',)", "('verification', 'user')") identity_verifications ['JOINED', 'METRIC'] + ("('user',)", "('view', 'user')") views ['JOINED', 'METRIC'] + ("('user',)", "('visit', 'user')") visit_buy_conversion_rate ['JOINED', 'METRIC'] + ("('user',)", "('visit', 'user')") visit_buy_conversion_rate_7days ['JOINED', 'METRIC'] + ("('user',)", "('visit', 'user')") visit_buy_conversion_rate_7days_fill_nulls_with_0 ['JOINED', 'METRIC'] + ("('user',)", "('visit', 'user')") visit_buy_conversion_rate_by_session ['JOINED', 'METRIC'] + ("('user',)", "('visit', 'user')") visit_buy_conversions ['JOINED', 'METRIC'] +companies ('user',) company ['ENTITY', 'JOINED'] +companies ('user',) company_name ['JOINED'] +listings_latest () listing ['ENTITY', 'LOCAL'] +listings_latest () metric_time DAY ['METRIC_TIME'] +listings_latest () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +listings_latest () user ['ENTITY', 'LOCAL'] +listings_latest ('listing',) capacity_latest ['LOCAL'] +listings_latest ('listing',) country_latest ['LOCAL'] +listings_latest ('listing',) created_at DAY ['LOCAL'] +listings_latest ('listing',) created_at DAY DAY ['LOCAL'] +listings_latest ('listing',) created_at DAY DOW ['LOCAL'] +listings_latest ('listing',) created_at DAY DOY ['LOCAL'] +listings_latest ('listing',) created_at DAY MONTH ['LOCAL'] +listings_latest ('listing',) created_at DAY QUARTER ['LOCAL'] +listings_latest ('listing',) created_at DAY YEAR ['LOCAL'] +listings_latest ('listing',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds DAY ['LOCAL'] +listings_latest ('listing',) ds DAY DAY ['LOCAL'] +listings_latest ('listing',) ds DAY DOW ['LOCAL'] +listings_latest ('listing',) ds DAY DOY ['LOCAL'] +listings_latest ('listing',) ds DAY MONTH ['LOCAL'] +listings_latest ('listing',) ds DAY QUARTER ['LOCAL'] +listings_latest ('listing',) ds DAY YEAR ['LOCAL'] +listings_latest ('listing',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +listings_latest ('listing',) is_lux_latest ['LOCAL'] +listings_latest ('listing',) user ['ENTITY', 'LOCAL'] +lux_listing_mapping ('listing',) lux_listing ['ENTITY', 'JOINED'] +users_ds_source ('user',) created_at DAY ['JOINED'] +users_ds_source ('user',) created_at DAY DAY ['JOINED'] +users_ds_source ('user',) created_at DAY DOW ['JOINED'] +users_ds_source ('user',) created_at DAY DOY ['JOINED'] +users_ds_source ('user',) created_at DAY MONTH ['JOINED'] +users_ds_source ('user',) created_at DAY QUARTER ['JOINED'] +users_ds_source ('user',) created_at DAY YEAR ['JOINED'] +users_ds_source ('user',) created_at MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) created_at YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds DAY ['JOINED'] +users_ds_source ('user',) ds DAY DAY ['JOINED'] +users_ds_source ('user',) ds DAY DOW ['JOINED'] +users_ds_source ('user',) ds DAY DOY ['JOINED'] +users_ds_source ('user',) ds DAY MONTH ['JOINED'] +users_ds_source ('user',) ds DAY QUARTER ['JOINED'] +users_ds_source ('user',) ds DAY YEAR ['JOINED'] +users_ds_source ('user',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned DAY ['JOINED'] +users_ds_source ('user',) ds_partitioned DAY DAY ['JOINED'] +users_ds_source ('user',) ds_partitioned DAY DOW ['JOINED'] +users_ds_source ('user',) ds_partitioned DAY DOY ['JOINED'] +users_ds_source ('user',) ds_partitioned DAY MONTH ['JOINED'] +users_ds_source ('user',) ds_partitioned DAY QUARTER ['JOINED'] +users_ds_source ('user',) ds_partitioned DAY YEAR ['JOINED'] +users_ds_source ('user',) ds_partitioned MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) ds_partitioned YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_ds_source ('user',) home_state ['JOINED'] +users_latest ('user',) ds_latest DAY ['JOINED'] +users_latest ('user',) ds_latest DAY DAY ['JOINED'] +users_latest ('user',) ds_latest DAY DOW ['JOINED'] +users_latest ('user',) ds_latest DAY DOY ['JOINED'] +users_latest ('user',) ds_latest DAY MONTH ['JOINED'] +users_latest ('user',) ds_latest DAY QUARTER ['JOINED'] +users_latest ('user',) ds_latest DAY YEAR ['JOINED'] +users_latest ('user',) ds_latest MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest WEEK ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) ds_latest YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'JOINED'] +users_latest ('user',) home_state_latest ['JOINED'] diff --git a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure_multi_hop_model__result0.txt b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure_multi_hop_model__result0.txt index fb273b2e4a..ff18b8c773 100644 --- a/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure_multi_hop_model__result0.txt +++ b/metricflow-semantics/tests_metricflow_semantics/snapshots/test_semantic_model_container.py/str/test_linkable_elements_for_measure_multi_hop_model__result0.txt @@ -1,53 +1,51 @@ -Semantic Model Entity Links Name Time Granularity Date Part Properties -------------------- -------------------------------------------------------------------------------------------------------------------- ---------------------- ------------------ ----------- ------------------------------------------- - ("('account_id',)", "('account_id',)") txn_count ['JOINED', 'METRIC'] -account_month_txns () account_id ['ENTITY', 'LOCAL'] -account_month_txns () metric_time DAY ['METRIC_TIME'] -account_month_txns () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] -account_month_txns ('account_id',) account_month ['LOCAL'] -account_month_txns ('account_id',) ds DAY ['LOCAL'] -account_month_txns ('account_id',) ds DAY DAY ['LOCAL'] -account_month_txns ('account_id',) ds DAY DOW ['LOCAL'] -account_month_txns ('account_id',) ds DAY DOY ['LOCAL'] -account_month_txns ('account_id',) ds DAY MONTH ['LOCAL'] -account_month_txns ('account_id',) ds DAY QUARTER ['LOCAL'] -account_month_txns ('account_id',) ds DAY YEAR ['LOCAL'] -account_month_txns ('account_id',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -account_month_txns ('account_id',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] -bridge_table ("('account_id', 'customer_id')", "('account_id', 'customer_id')") txn_count ['JOINED', 'METRIC', 'MULTI_HOP'] -bridge_table ('account_id',) customer_id ['ENTITY', 'JOINED'] -bridge_table ('account_id',) extra_dim ['JOINED'] -customer_other_data ("('account_id', 'customer_id', 'customer_third_hop_id')", "('account_id', 'customer_id', 'customer_third_hop_id')") txn_count ['JOINED', 'METRIC', 'MULTI_HOP'] -customer_other_data ('account_id', 'customer_id') country ['JOINED', 'MULTI_HOP'] -customer_other_data ('account_id', 'customer_id') customer_third_hop_id ['ENTITY', 'JOINED', 'MULTI_HOP'] -customer_table ('account_id', 'customer_id') customer_atomic_weight ['JOINED', 'MULTI_HOP'] -customer_table ('account_id', 'customer_id') customer_name ['JOINED', 'MULTI_HOP'] +Semantic Model Entity Links Name Time Granularity Date Part Properties +------------------- -------------------------------------- ---------------------- ------------------ ----------- ------------------------------------------- + ("('account_id',)", "('account_id',)") txn_count ['JOINED', 'METRIC'] +account_month_txns () account_id ['ENTITY', 'LOCAL'] +account_month_txns () metric_time DAY ['METRIC_TIME'] +account_month_txns () metric_time DAY DAY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time DAY DOW ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time DAY DOY ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time DAY MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time DAY QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time DAY YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time WEEK ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns () metric_time YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'METRIC_TIME'] +account_month_txns ('account_id',) account_month ['LOCAL'] +account_month_txns ('account_id',) ds DAY ['LOCAL'] +account_month_txns ('account_id',) ds DAY DAY ['LOCAL'] +account_month_txns ('account_id',) ds DAY DOW ['LOCAL'] +account_month_txns ('account_id',) ds DAY DOY ['LOCAL'] +account_month_txns ('account_id',) ds DAY MONTH ['LOCAL'] +account_month_txns ('account_id',) ds DAY QUARTER ['LOCAL'] +account_month_txns ('account_id',) ds DAY YEAR ['LOCAL'] +account_month_txns ('account_id',) ds MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds MONTH MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds MONTH QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds MONTH YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds QUARTER QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds QUARTER YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds WEEK ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds WEEK MONTH ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds WEEK QUARTER ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds WEEK YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +account_month_txns ('account_id',) ds YEAR YEAR ['DERIVED_TIME_GRANULARITY', 'LOCAL'] +bridge_table ('account_id',) customer_id ['ENTITY', 'JOINED'] +bridge_table ('account_id',) extra_dim ['JOINED'] +customer_other_data ('account_id', 'customer_id') country ['JOINED', 'MULTI_HOP'] +customer_other_data ('account_id', 'customer_id') customer_third_hop_id ['ENTITY', 'JOINED', 'MULTI_HOP'] +customer_table ('account_id', 'customer_id') customer_atomic_weight ['JOINED', 'MULTI_HOP'] +customer_table ('account_id', 'customer_id') customer_name ['JOINED', 'MULTI_HOP'] diff --git a/metricflow/dataflow/builder/dataflow_plan_builder.py b/metricflow/dataflow/builder/dataflow_plan_builder.py index a1971ae886..a1f11aaf33 100644 --- a/metricflow/dataflow/builder/dataflow_plan_builder.py +++ b/metricflow/dataflow/builder/dataflow_plan_builder.py @@ -15,7 +15,7 @@ MetricTimeWindow, MetricType, ) -from dbt_semantic_interfaces.references import LinkableElementReference, MetricReference, TimeDimensionReference +from dbt_semantic_interfaces.references import MetricReference, TimeDimensionReference from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from dbt_semantic_interfaces.validations.unique_valid_name import MetricFlowReservedKeywords from metricflow_semantics.dag.id_prefix import StaticIdPrefix @@ -386,7 +386,7 @@ def _build_conversion_metric_output_node( metric_spec=metric_spec, aggregated_measures_node=aggregated_measures_node, for_group_by_source_node=for_group_by_source_node, - aggregated_to_elements=queried_linkable_specs.as_reference_set, + aggregated_to_elements=set(queried_linkable_specs.as_tuple), ) def _build_base_metric_output_node( @@ -445,7 +445,7 @@ def _build_base_metric_output_node( metric_spec=metric_spec, aggregated_measures_node=aggregated_measures_node, for_group_by_source_node=for_group_by_source_node, - aggregated_to_elements=queried_linkable_specs.as_reference_set, + aggregated_to_elements=set(queried_linkable_specs.as_tuple), ) def _build_derived_metric_output_node( @@ -513,7 +513,7 @@ def _build_derived_metric_output_node( parent_node=parent_node, metric_specs=[metric_spec], for_group_by_source_node=for_group_by_source_node, - is_aggregated_to_elements={spec.reference for spec in queried_linkable_specs.as_tuple}, + aggregated_to_elements=set(queried_linkable_specs.as_tuple), ) # For ratio / derived metrics with time offset, apply offset & where constraint after metric computation. @@ -826,17 +826,6 @@ def _find_dataflow_recipe( candidate_nodes_for_left_side_of_join: List[BaseOutput] = [] candidate_nodes_for_right_side_of_join: List[BaseOutput] = [] - # If there are MetricGroupBys in the requested linkable specs, build source nodes to satisfy them. - # We do this at query time instead of during usual source node generation because the number of potential - # MetricGroupBy source nodes could be extremely large (and potentially slow). - candidate_nodes_for_right_side_of_join += [ - self._build_query_output_node( - query_spec=self._source_node_builder.build_source_node_inputs_for_group_by_metric(group_by_metric_spec), - for_group_by_source_node=True, - ) - for group_by_metric_spec in linkable_spec_set.group_by_metric_specs - ] - if measure_spec_properties: candidate_nodes_for_right_side_of_join += self._source_node_set.source_nodes_for_metric_queries candidate_nodes_for_left_side_of_join += self._select_source_nodes_with_measures( @@ -897,6 +886,19 @@ def _find_dataflow_recipe( f"nodes for the right side of the join:\n" f"{mf_pformat(candidate_nodes_for_right_side_of_join)}" ) + + # If there are MetricGroupBys in the requested linkable specs, build source nodes to satisfy them. + # We do this at query time instead of during usual source node generation because the number of potential + # MetricGroupBy source nodes could be extremely large (and potentially slow). + logger.info(f"Building source nodes for group by metrics: {linkable_spec_set.group_by_metric_specs}") + candidate_nodes_for_right_side_of_join += [ + self._build_query_output_node( + query_spec=self._source_node_builder.build_source_node_inputs_for_group_by_metric(group_by_metric_spec), + for_group_by_source_node=True, + ) + for group_by_metric_spec in linkable_spec_set.group_by_metric_specs + ] + logger.info(f"Processing nodes took: {time.time()-start_time:.2f}s") node_evaluator = NodeEvaluatorForLinkableInstances( @@ -1008,7 +1010,7 @@ def build_computed_metrics_node( self, metric_spec: MetricSpec, aggregated_measures_node: Union[AggregateMeasuresNode, BaseOutput], - aggregated_to_elements: Set[LinkableElementReference], + aggregated_to_elements: Set[LinkableInstanceSpec], for_group_by_source_node: bool = False, ) -> ComputeMetricsNode: """Builds a ComputeMetricsNode from aggregated measures.""" @@ -1016,7 +1018,7 @@ def build_computed_metrics_node( parent_node=aggregated_measures_node, metric_specs=[metric_spec], for_group_by_source_node=for_group_by_source_node, - is_aggregated_to_elements=aggregated_to_elements, + aggregated_to_elements=aggregated_to_elements, ) def _build_input_measure_specs_for_conversion_metric( diff --git a/metricflow/dataflow/builder/node_evaluator.py b/metricflow/dataflow/builder/node_evaluator.py index 1317f171c2..984d12c8e0 100644 --- a/metricflow/dataflow/builder/node_evaluator.py +++ b/metricflow/dataflow/builder/node_evaluator.py @@ -79,10 +79,16 @@ def __post_init__(self) -> None: # noqa: D105 if self.join_on_entity is None and self.join_type != SqlJoinType.CROSS_JOIN: raise RuntimeError("`join_on_entity` is required unless using CROSS JOIN.") + # TODO: JoinDescription is very similar to JoinLinkableInstancesRecipe. Can we consolidate by just adding a + # `filtered_node_to_join` property on JoinLinkableInstancesRecipe? @property def join_description(self) -> JoinDescription: - """The recipe as a join description to use in the dataflow plan node.""" - # Figure out what elements to filter from the joined node. + """The recipe as a join description to use in the dataflow plan node. + + Here, we figure out which instance specs to keep from this node in order to join to it and render its + satisfiable linkable specs, e.g. if the node is used to satisfy "user_id__country", the node must have the + entity "user_id" and the "country" dimension so that it can be joined to the source node. + """ include_specs: List[LinkableInstanceSpec] = [] assert all( [ @@ -92,13 +98,13 @@ def join_description(self) -> JoinDescription: ] ) - include_specs.extend( - [ - LinklessEntitySpec.from_reference(spec.entity_links[0]) - for spec in self.satisfiable_linkable_specs - if len(spec.entity_links) > 0 - ] - ) + # Get the specs needed to join onto this node. + if self.node_to_join.aggregated_to_elements: + include_specs.extend(self.node_to_join.aggregated_to_elements) + else: + for spec in self.satisfiable_linkable_specs: + if len(spec.entity_links) > 0: + include_specs.append(LinklessEntitySpec.from_reference(spec.entity_links[0])) include_specs.extend([join.node_to_join_dimension_spec for join in self.join_on_partition_dimensions]) include_specs.extend([join.node_to_join_time_dimension_spec for join in self.join_on_partition_time_dimensions]) @@ -109,14 +115,13 @@ def join_description(self) -> JoinDescription: # `satisfiable_linkable_specs` describes what can be satisfied after the join, so remove the entity # link when filtering before the join. - # e.g. if the node is used to satisfy "user_id__country", then the node must have the entity - # "user_id" and the "country" dimension so that it can be joined to the source node. include_specs.extend( [ spec.without_first_entity_link if len(spec.entity_links) > 0 else spec for spec in self.satisfiable_linkable_specs ] ) + filtered_node_to_join = FilterElementsNode( parent_node=self.node_to_join, include_specs=group_specs_by_type(include_specs) ) @@ -256,6 +261,9 @@ def _find_joinable_candidate_nodes_that_can_satisfy_linkable_specs( assert len(entity_instance_in_left_node.defined_from) == 1 assert len(entity_instance_in_right_node.defined_from) == 1 + entity_spec_matches_aggregated_specs = { + spec.reference for spec in right_node.aggregated_to_elements + } == {entity_spec_in_right_node.reference} if not ( self._join_evaluator.is_valid_semantic_model_join( left_semantic_model_reference=entity_instance_in_left_node.defined_from[ @@ -266,7 +274,7 @@ def _find_joinable_candidate_nodes_that_can_satisfy_linkable_specs( ].semantic_model_reference, on_entity_reference=entity_spec_in_right_node.reference, ) - or right_node.is_aggregated_to_elements == {entity_spec_in_right_node.reference} + or entity_spec_matches_aggregated_specs ): continue diff --git a/metricflow/dataflow/dataflow_plan.py b/metricflow/dataflow/dataflow_plan.py index 504eab81ac..34ba99fee7 100644 --- a/metricflow/dataflow/dataflow_plan.py +++ b/metricflow/dataflow/dataflow_plan.py @@ -12,7 +12,7 @@ from metricflow_semantics.visitor import Visitable, VisitorOutputT if typing.TYPE_CHECKING: - from dbt_semantic_interfaces.references import LinkableElementReference + from metricflow_semantics.specs.spec_classes import LinkableInstanceSpec from metricflow.dataflow.nodes.add_generated_uuid import AddGeneratedUuidColumnNode from metricflow.dataflow.nodes.aggregate_measures import AggregateMeasuresNode @@ -178,7 +178,7 @@ class BaseOutput(DataflowPlanNode, ABC): """ @property - def is_aggregated_to_elements(self) -> Set[LinkableElementReference]: + def aggregated_to_elements(self) -> Set[LinkableInstanceSpec]: """Indicates that the node has been aggregated to these specs, guaranteeing uniqueness in each combination of them.""" return set() diff --git a/metricflow/dataflow/nodes/compute_metrics.py b/metricflow/dataflow/nodes/compute_metrics.py index ccb8aaf4cd..645d560bc7 100644 --- a/metricflow/dataflow/nodes/compute_metrics.py +++ b/metricflow/dataflow/nodes/compute_metrics.py @@ -2,10 +2,9 @@ from typing import Sequence, Set -from dbt_semantic_interfaces.references import LinkableElementReference from metricflow_semantics.dag.id_prefix import IdPrefix, StaticIdPrefix from metricflow_semantics.dag.mf_dag import DisplayedProperty -from metricflow_semantics.specs.spec_classes import MetricSpec +from metricflow_semantics.specs.spec_classes import LinkableInstanceSpec, MetricSpec from metricflow_semantics.visitor import VisitorOutputT from metricflow.dataflow.dataflow_plan import ( @@ -23,7 +22,7 @@ def __init__( self, parent_node: BaseOutput, metric_specs: Sequence[MetricSpec], - is_aggregated_to_elements: Set[LinkableElementReference], + aggregated_to_elements: Set[LinkableInstanceSpec], for_group_by_source_node: bool = False, ) -> None: """Constructor. @@ -36,7 +35,7 @@ def __init__( self._parent_node = parent_node self._metric_specs = tuple(metric_specs) self._for_group_by_source_node = for_group_by_source_node - self._is_aggregated_to_elements = is_aggregated_to_elements + self._aggregated_to_elements = aggregated_to_elements super().__init__(node_id=self.create_unique_id(), parent_nodes=(self._parent_node,)) @classmethod @@ -92,9 +91,9 @@ def with_new_parents(self, new_parent_nodes: Sequence[BaseOutput]) -> ComputeMet parent_node=new_parent_nodes[0], metric_specs=self.metric_specs, for_group_by_source_node=self.for_group_by_source_node, - is_aggregated_to_elements=self._is_aggregated_to_elements, + aggregated_to_elements=self._aggregated_to_elements, ) @property - def is_aggregated_to_elements(self) -> Set[LinkableElementReference]: # noqa: D102 - return self._is_aggregated_to_elements + def aggregated_to_elements(self) -> Set[LinkableInstanceSpec]: # noqa: D102 + return self._aggregated_to_elements diff --git a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py index 06a5382039..79f69b898e 100644 --- a/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py +++ b/metricflow/dataflow/optimizer/source_scan/cm_branch_combiner.py @@ -285,7 +285,7 @@ def visit_compute_metrics_node(self, node: ComputeMetricsNode) -> ComputeMetrics ) return ComputeMetricsBranchCombinerResult() - if not self._current_left_node.is_aggregated_to_elements == current_right_node.is_aggregated_to_elements: + if not self._current_left_node.aggregated_to_elements == current_right_node.aggregated_to_elements: self._log_combine_failure( left_node=self._current_left_node, right_node=current_right_node, @@ -307,7 +307,7 @@ def visit_compute_metrics_node(self, node: ComputeMetricsNode) -> ComputeMetrics combined_node = ComputeMetricsNode( parent_node=combined_parent_node, metric_specs=unique_metric_specs, - is_aggregated_to_elements=current_right_node.is_aggregated_to_elements, + aggregated_to_elements=current_right_node.aggregated_to_elements, ) self._log_combine_success( left_node=self._current_left_node, diff --git a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py index 85069c9f55..fbeaf4341b 100644 --- a/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py +++ b/metricflow/dataflow/optimizer/source_scan/source_scan_optimizer.py @@ -172,7 +172,7 @@ def visit_compute_metrics_node(self, node: ComputeMetricsNode) -> OptimizeBranch parent_node=optimized_parent_result.base_output_node, metric_specs=node.metric_specs, for_group_by_source_node=node.for_group_by_source_node, - is_aggregated_to_elements=node.is_aggregated_to_elements, + aggregated_to_elements=node.aggregated_to_elements, ) ) diff --git a/metricflow/dataset/sql_dataset.py b/metricflow/dataset/sql_dataset.py index 9441112c48..38e3a8c241 100644 --- a/metricflow/dataset/sql_dataset.py +++ b/metricflow/dataset/sql_dataset.py @@ -74,11 +74,11 @@ def column_associations_for_entity( if len(matching_instances) != 1: raise RuntimeError( - f"Expected exactly one matching instance for {entity_spec} in instance set, but found: {matching_instances}" + f"Expected exactly one matching instance for {entity_spec} in instance set, but found: {matching_instances}. " + f"All entity instances: {self.instance_set.entity_instances}" ) matching_instance = matching_instances[0] if not matching_instance.associated_columns: - print("entity links to compare:", entity_spec.entity_links, linkable_instance.spec.entity_links) raise RuntimeError( f"No associated columns for entity instance {matching_instance} in data set." "This indicates internal misconfiguration." diff --git a/metricflow/plan_conversion/instance_converters.py b/metricflow/plan_conversion/instance_converters.py index 3d7562b450..0d816209ed 100644 --- a/metricflow/plan_conversion/instance_converters.py +++ b/metricflow/plan_conversion/instance_converters.py @@ -558,19 +558,25 @@ def transform(self, instance_set: InstanceSet) -> InstanceSet: # noqa: D102 # Sanity check to make sure the specs are in the instance set if self._include_specs: + include_specs_not_found = [] for include_spec in self._include_specs.all_specs: if include_spec not in instance_set.spec_set.all_specs: - raise RuntimeError( - f"Include spec {include_spec} is not in the spec set {instance_set.spec_set} - " - f"check if this node was constructed correctly." - ) + include_specs_not_found.append(include_spec) + if include_specs_not_found: + raise RuntimeError( + f"Include specs {include_specs_not_found} are not in the spec set {instance_set.spec_set} - " + f"check if this node was constructed correctly." + ) elif self._exclude_specs: + exclude_specs_not_found = [] for exclude_spec in self._exclude_specs.all_specs: if exclude_spec not in instance_set.spec_set.all_specs: - raise RuntimeError( - f"Exclude spec {exclude_spec} is not in the spec set {instance_set.spec_set} - " - f"check if this node was constructed correctly." - ) + exclude_specs_not_found.append(exclude_spec) + if exclude_specs_not_found: + raise RuntimeError( + f"Exclude specs {exclude_specs_not_found} are not in the spec set {instance_set.spec_set} - " + f"check if this node was constructed correctly." + ) else: assert False, "Include specs or exclude specs should have been specified." diff --git a/metricflow/plan_conversion/node_processor.py b/metricflow/plan_conversion/node_processor.py index c6b7d6f4c2..3133b9db31 100644 --- a/metricflow/plan_conversion/node_processor.py +++ b/metricflow/plan_conversion/node_processor.py @@ -214,7 +214,7 @@ def _get_candidates_nodes_for_multi_hop( left_instance_set=data_set_of_first_node_that_could_be_joined.instance_set, right_instance_set=data_set_of_second_node_that_can_be_joined.instance_set, on_entity_reference=entity_reference_to_join_first_and_second_nodes, - right_node_is_aggregated_to_entity=second_node_that_could_be_joined.is_aggregated_to_elements + right_node_is_aggregated_to_entity=second_node_that_could_be_joined.aggregated_to_elements == {entity_reference_to_join_first_and_second_nodes}, ): continue diff --git a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py index 9dca206645..d0c03da8be 100644 --- a/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py +++ b/tests_metricflow/dataflow/builder/test_dataflow_plan_builder.py @@ -12,7 +12,6 @@ from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity from metricflow_semantics.errors.error_classes import UnableToSatisfyQueryError from metricflow_semantics.filters.time_constraint import TimeRangeConstraint -from metricflow_semantics.model.linkable_element_property import LinkableElementProperty from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet from metricflow_semantics.query.query_parser import MetricFlowQueryParser from metricflow_semantics.specs.column_assoc import ColumnAssociationResolver @@ -1331,24 +1330,22 @@ def test_metric_in_metric_where_filter( ) -def test_all_available_single_join_metric_filters( +def test_all_available_metric_filters( dataflow_plan_builder: DataflowPlanBuilder, query_parser: MetricFlowQueryParser ) -> None: - """Checks that all allowed metric filters do not error when used in dataflow plan (single-hop for both inner and out query).""" + """Checks that all allowed metric filters do not error when used in dataflow plan.""" for linkable_metric_tuple in dataflow_plan_builder._metric_lookup.linkable_elements_for_measure( - MeasureReference("listings"), without_any_of={LinkableElementProperty.MULTI_HOP} + MeasureReference("bookings") ).path_key_to_linkable_metrics.values(): for linkable_metric in linkable_metric_tuple: group_by_metric_spec = LinkableElementSet._path_key_to_spec(linkable_metric.path_key) assert isinstance(group_by_metric_spec, GroupByMetricSpec) entity_spec = group_by_metric_spec.metric_subquery_entity_spec - if entity_spec.entity_links: # multi-hop for inner query - continue query_spec = query_parser.parse_and_validate_query( - metric_names=("listings",), + metric_names=("bookings",), where_constraint=PydanticWhereFilter( where_sql_template=string.Template("{{ Metric('$metric_name', ['$entity_name']) }} > 2").substitute( - metric_name=linkable_metric.element_name, entity_name=entity_spec.element_name + metric_name=linkable_metric.element_name, entity_name=entity_spec.qualified_name ), ), ) diff --git a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py index 051c69b372..b5cd77ffe4 100644 --- a/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py +++ b/tests_metricflow/plan_conversion/test_dataflow_to_sql_plan.py @@ -459,7 +459,7 @@ def test_compute_metrics_node( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measure_node, metric_specs=[metric_spec], - is_aggregated_to_elements={entity_spec.reference, dimension_spec.reference}, + aggregated_to_elements={entity_spec, dimension_spec}, ) convert_and_check( @@ -528,7 +528,7 @@ def test_compute_metrics_node_simple_expr( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measures_node, metric_specs=[metric_spec], - is_aggregated_to_elements={entity_spec.reference, dimension_spec.reference}, + aggregated_to_elements={entity_spec, dimension_spec}, ) sink_node = WriteToResultDataframeNode(compute_metrics_node) @@ -592,7 +592,7 @@ def test_join_to_time_spine_node_without_offset( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measures_node, metric_specs=[metric_spec], - is_aggregated_to_elements={entity_spec.reference}, + aggregated_to_elements={entity_spec}, ) join_to_time_spine_node = JoinToTimeSpineNode( parent_node=compute_metrics_node, @@ -663,7 +663,7 @@ def test_join_to_time_spine_node_with_offset_window( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measures_node, metric_specs=[metric_spec], - is_aggregated_to_elements={entity_spec.reference, metric_time_spec.reference}, + aggregated_to_elements={entity_spec, metric_time_spec}, ) join_to_time_spine_node = JoinToTimeSpineNode( parent_node=compute_metrics_node, @@ -736,7 +736,7 @@ def test_join_to_time_spine_node_with_offset_to_grain( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measures_node, metric_specs=[metric_spec], - is_aggregated_to_elements={entity_spec.reference, metric_time_spec.reference}, + aggregated_to_elements={entity_spec, metric_time_spec}, ) join_to_time_spine_node = JoinToTimeSpineNode( parent_node=compute_metrics_node, @@ -838,7 +838,7 @@ def test_compute_metrics_node_ratio_from_single_semantic_model( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measures_node, metric_specs=[metric_spec], - is_aggregated_to_elements={entity_spec.reference, dimension_spec.reference}, + aggregated_to_elements={entity_spec, dimension_spec}, ) convert_and_check( @@ -894,7 +894,7 @@ def test_order_by_node( compute_metrics_node = ComputeMetricsNode( parent_node=aggregated_measure_node, metric_specs=[metric_spec], - is_aggregated_to_elements={dimension_spec.reference, time_dimension_spec.reference}, + aggregated_to_elements={dimension_spec, time_dimension_spec}, ) order_by_node = OrderByLimitNode( 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 baf5a85a3e..3630a0079d 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 @@ -71,7 +71,7 @@ - + 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 7b66adf86f..2eb712ec67 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 @@ -91,7 +91,7 @@ - +