Source code for fireant.queries.totals_helper

from fireant.dataset.totals import Rollup
from .finders import find_filters_for_totals


[docs]def adapt_for_totals_query(totals_dimension, dimensions, filters): """ Adapt filters for totals query. This function will select filters for total dimensions depending on the apply_filter_to_totals values for the filters. A total dimension with value None indicates the base query for which all filters will be applied by default. :param totals_dimension: :param dimensions: :param filters: :return: """ is_totals_query = totals_dimension is not None raw_dimensions = [dimension.dimension if isinstance(dimension, Rollup) else dimension for dimension in dimensions] # Get an index to split the dimensions before and after the totals dimension if not is_totals_query: return raw_dimensions, filters index = [i for i, dimension in enumerate(dimensions) if dimension is totals_dimension][0] totals_dims = [Rollup(dimension) if i >= index else dimension for i, dimension in enumerate(raw_dimensions)] totals_filters = find_filters_for_totals(filters) return totals_dims, totals_filters