DimensionJoin

class lsst.daf.butler.DimensionJoin(universe, name, config)

Bases: lsst.daf.butler.DimensionElement

A join that relates two or more Dimensions.

DimensionJoins usually map to many-to-many join tables or views that relate Dimension tables.

DimensionJoin objects are not directly constructable; they can only be obtained from a DimensionGraph.

Attributes Summary

asNeeded Whether this join only be included in a query when required, as opposed to whenever its dependencies are included (bool).
doc Documentation for this dimension (str).
hasRegion Whether this dimension is associated with a region on the sky (bool).
lhs The Dimensions on the left hand side of the join (DimensionSet).
name Name of this dimension (str, read-only).
rhs The Dimensions on the right hand side of the join (DimensionSet).
summarizes A set of other DimensionJoins that provide more fine-grained relationships than this one (DimensionJoinSet).
universe The graph of all dimensions compatible with self (DimensionGraph).

Methods Summary

dependencies([required, implied]) Return the set of dimensions this dimension depends on.
graph([implied]) Return the minimal DimensionGraph that contains self.
links([expand, implied]) Return the names of fields that uniquely identify this dimension in a data ID dict.

Attributes Documentation

asNeeded

Whether this join only be included in a query when required, as opposed to whenever its dependencies are included (bool).

doc

Documentation for this dimension (str).

hasRegion

Whether this dimension is associated with a region on the sky (bool).

lhs

The Dimensions on the left hand side of the join (DimensionSet).

Left vs. right is completely arbitrary; the terminology simply provides an easy way to distinguish between the two sides.

name

Name of this dimension (str, read-only).

Also assumed to be the name of any associated table or view.

rhs

The Dimensions on the right hand side of the join (DimensionSet).

Left vs. right is completely arbitrary; the terminology simply provides an easy way to distinguish between the two sides.

summarizes

A set of other DimensionJoins that provide more fine-grained relationships than this one (DimensionJoinSet).

When a join “summarizes” another, it means the table for that join could (at least conceptually) be defined as an aggregate view on the summarized join table. For example, “tract_skypix_join” summarizes “patch_skypix_join”, because the set of skypix rows associated with a tract row is just the set of skypix rows associated with all patches associated with that tract. Or, in SQL:

CREATE VIEW tract_skypix_join AS
SELECT DISTINCT skymap, tract, skypix FROM patch_skypix_join;
universe

The graph of all dimensions compatible with self (DimensionGraph).

Methods Documentation

dependencies(required=True, implied=False)

Return the set of dimensions this dimension depends on.

Parameters:
required : bool

If True (default), include required dependencies. Required dependences are always expanded recursively.

implied : bool

If True, return implied dependencies.

Returns:
dependencies : DimensionSet
graph(implied=False)

Return the minimal DimensionGraph that contains self.

Parameters:
implied : bool

If True, include implied as well as required dependencies.

Returns:
graph : DimensionGraph

Return the names of fields that uniquely identify this dimension in a data ID dict.

Parameters:
expand: `bool`

If True (default) include links associated with required dependencies.

implied: `bool`

If True, expand to include the links of implied dpendencies as well. Ignored if expand is False.

Returns:
links : frozenset of str

Set of field names.