class_docstr: When joining data sets, this class helps to figure out the necessary partition specs to join on.
docstr: Figures out which partition time dimensions to join on.
docstr_tok: ["Figures","out","which","partition","time","dimensions","to","join","on","."]
code: def resolve_partition_time_dimension_joins(
      self,
      start_node_spec_set: InstanceSpecSet,
      node_to_join_spec_set: InstanceSpecSet,
  ) -> Tuple[PartitionTimeDimensionJoinDescription, ...]:
      """Figures out which partition time dimensions to join on."""
      start_node_partitions = self._get_partitions(start_node_spec_set)
      join_node_partitions = self._get_partitions(node_to_join_spec_set)
      partition_join_descriptions: List[
          PartitionTimeDimensionJoinDescription
      ] = []
  
      # Get all unique element names
      time_dimension_element_names = tuple(
          OrderedDict.fromkeys(
              x.element_name
              for x in start_node_partitions.time_dimension_specs
          )
      )
      for element_name in time_dimension_element_names:
          start_node_spec = PartitionJoinResolver._get_simplest_time_dimension_spec(
              tuple(
                  x
                  for x in start_node_partitions.time_dimension_specs
                  if x.element_name == element_name
              )
          )
          join_node_time_dimension_element_names = tuple(
              OrderedDict.fromkeys(
                  x.element_name
                  for x in join_node_partitions.time_dimension_specs
              )
          )
          if element_name in join_node_time_dimension_element_names:
              join_node_spec = PartitionJoinResolver._get_simplest_time_dimension_spec(
                  tuple(
                      x
                      for x in join_node_partitions.time_dimension_specs
                      if x.element_name == element_name
                  )
              )
              partition_join_descriptions.append(
                  PartitionTimeDimensionJoinDescription(
                      start_node_time_dimension_spec=start_node_spec,
                      node_to_join_time_dimension_spec=join_node_spec,
                  )
              )
      return tuple(partition_join_descriptions)
  
file_path: metricflow/metricflow/dataflow/builder/partitions.py
imports: from __future__ import annotations
  from collections import OrderedDict
  from dataclasses import dataclass
  from typing import List, Sequence, Tuple
  from metricflow.dataset.dataset import DataSet
  from metricflow.protocols.semantics import SemanticModelAccessor
  from metricflow.specs.specs import DimensionSpec, InstanceSpecSet, PartitionSpecSet, TimeDimensionSpec
label_desc: Use image node_id 6 for calling the PartitionJoinResolver obj's underlying member method code with example usage: obj.resolve_partition_time_dimension_joins(start_node_spec_set, node_to_join_spec_set) and returns: tuple