From 9cc7d44e2c18fd582f91d7a3596626c4a48b32b3 Mon Sep 17 00:00:00 2001 From: Courtney Holcomb Date: Fri, 26 Jul 2024 15:33:58 -0700 Subject: [PATCH] Use time spines to determine metric_time grain in no-metric queries --- .../model/semantics/linkable_spec_resolver.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py index 7da7d635a5..00baa34b34 100644 --- a/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py +++ b/metricflow-semantics/metricflow_semantics/model/semantics/linkable_spec_resolver.py @@ -40,6 +40,7 @@ from metricflow_semantics.model.semantics.linkable_element_set import LinkableElementSet from metricflow_semantics.model.semantics.semantic_model_join_evaluator import SemanticModelJoinEvaluator from metricflow_semantics.specs.time_dimension_spec import DEFAULT_TIME_GRANULARITY +from metricflow_semantics.time.time_spine_source import TimeSpineSource if TYPE_CHECKING: from metricflow_semantics.model.semantics.semantic_model_lookup import SemanticModelLookup @@ -124,6 +125,7 @@ def __init__( # Sort semantic models by name for consistency in building derived objects. self._semantic_models = sorted(self._semantic_manifest.semantic_models, key=lambda x: x.name) self._join_evaluator = SemanticModelJoinEvaluator(semantic_model_lookup) + self._time_spine_sources = TimeSpineSource.create_from_manifest(self._semantic_manifest) assert max_entity_links >= 0 self._max_entity_links = max_entity_links @@ -464,7 +466,8 @@ def _get_metric_time_elements(self, measure_reference: Optional[MeasureReference time_dimension_reference=measure_agg_time_dimension_reference, ) else: - defined_granularity = DEFAULT_TIME_GRANULARITY + # If querying metric_time without metrics, will query from time spines. + defined_granularity = min(self._time_spine_sources.keys()) # It's possible to aggregate measures to coarser time granularities (except with cumulative metrics). possible_metric_time_granularities = tuple(