AutomaticFilters: Simple filtering¶
The AutomaticFilters extension provides a simpler approach to building filters using Ingredient.build_filter.
-
class
recipe.
AutomaticFilters
(*args, **kwargs)[source] Automatic generation and addition of Filters to a recipe.
Automatic filters take a dictionary of keys and values. For each key in the dictionary, if the key is the id of a
Dimension
on the shelf, a filter will be added to the recipe containing the values.-
apply_automatic_filters
(value)[source] Toggles whether automatic filters are applied to a recipe. The following will disable automatic filters for this recipe:
recipe.apply_automatic_filters(False)
-
automatic_filters
(value)[source] Sets a dictionary of automatic filters to apply to this recipe. If your recipe uses a shelf that has dimensions ‘state’ and ‘gender’ you could filter the data to Men in California and New Hampshire with:
shelf = Shelf({ 'state': Dimension(Census.state), 'gender': Dimension(Census.gender), 'population': Metric(func.sum(Census.population)), }) recipe = Recipe(shelf=shelf) recipe.dimensions('state').metrics('population').automatic_filters({ 'state': ['California', 'New Hampshire'], 'gender': 'M' })
Automatic filter keys can optionally include an
operator
.List operators
If the value provided in the automatic_filter dictionary is a list, the following operators are available. The default operator is
in
:in (default) notin quickselect (applies multiple conditions matching the named quickselect, quickselects are ORed together) between (requires a list of two items)
Scalar operators
If the value provided in the automatic_filter dictionary is a scalar (a string, integer, or number), the following operators are available. The default operator is
eq
:eq (equal) (the default) ne (not equal) lt (less than) lte (less than or equal) gt (greater than) gte (greater than or equal) like (SQL LIKE) ilike (Case insensitive LIKE) quickselect (applies the condition matching the named quickselect)
An example using operators
Here’s an example that filters to states that start with the letters A-C:
shelf = Shelf({ 'state': Dimension(Census.state), 'gender': Dimension(Census.gender), 'population': Metric(func.sum(Census.population)), }) recipe = Recipe(shelf=shelf) recipe.dimensions('state').metrics('population').automatic_filters({ 'state__lt': 'D' })
-
exclude_automatic_filter_keys
(*keys)[source] A “blacklist” of automatic filter keys to exclude. The following will cause
'state'
to be ignored if it is present in theautomatic_filters
dictionary:recipe.exclude_automatic_filter_keys('state')
-
include_automatic_filter_keys
(*keys)[source] A “whitelist” of automatic filter keys to use. The following will only use
'state'
for automatic filters regardless of what is provided in the automatic_filters dictionary:recipe.include_automatic_filter_keys('state')
-
The AutomaticFilters extension.