Skip to main content
Documentation

Selections

Selections are virtual views on the project graph and other data which allow to work with transformed intermediate data structures.
A single selection is basically a dynamic volatile set of key value pairs which doesn't have to reflect any persistent structures.
Selections can be combined and transformed in many ways. They are also the basis for many statistical analyses.
A diagram illustrating selections as virtual views on the project graph

Selecting data

Selecting specific values:

Selecting specific value


Selecting attributes from elements:

Selecting attributes


Selecting rows from tables (rows as selections and columns as keys):

Selecting rows


Selecting columns from tables (columns as selections and rows as keys):

Selecting columns

Joins

Selections can be joined together, corresponding to a join operation in relational algebra.

Cross Join

A Cross Join combines each selection of the left set with each selection of the right set.
Cross Join

Inner Join

An Inner Join combines each selection of the left set with each selection of the right set where the values of the given keys match. Only matching combinations are resulting.
Inner Join

Natural Join

A Natural Join combines each selection of the left set with each selection of the right set where the values of all keys match which are available in both selections.
Natural Join

Left Outer Join

A Left Outer Join combines each selection of the left set with each selection of the right set where the values of the given keys match. Also non-matching selections of the left set are resulting.
Left Outer Join

Right Outer Join

A Right Outer Join combines each selection of the left set with each selection of the right set where the values of the given keys match. Also non-matching selections of the right set are resulting.
Right Outer Join

Mappings

Selections can be mapped to derived selections. Mapping values maps the values for a given key.
Map values for key

Filtering

Selection can be filtered in many ways.
Filtering Selections
Like any bulk, a bulk of selections can also be filtered with a custom predicate — for example by a minimum value for a specific key:
Filtering with a predicate

Sorting

Selections can be sorted in any way.
Sorting Selections
Alternatively, a bulk of selections can be sorted by a custom key extractor:
Sorting with a key extractor

What next?