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, “TractSkyPixJoin” summarizes “PatchSkyPixJoin”, 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 TractSkyPixJoin AS
SELECT DISTINCT skymap, tract, skypix FROM PatchSkyPixJoin;
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.