About Factless Queries
A factless query is a query that references one or more dimensions and does not include any measures. Factless queries are sometimes referred to as dimension-only queries.
- An example of a single-dimension factless query is Customer Name, queried from the AtScale-generated Internet Sales Cube.
SELECT `Internet Sales Cube`.`Customer Name` AS `customer_name`
FROM `sales insights`.`internet sales cube` `Internet Sales Cube`
A multi-dimension factless query is a query that references more than one dimension, with a relationship amongst the dimensions to a common fact table. If the dimensions are not directly connected in the model, then the system may join them through a fact table to satisfy the query. For multi-fact models, multiple join queries may be unioned together.
The following is an example of a multi-dimension-only query where all
dimensions are derived from the same fact table, in this case
factinternetsales
from AtScale's Internet Sales Cube.
SELECT `Internet Sales Cube`.`Style` AS `style`,
`Internet Sales Cube`.`Product Line` AS `product_line`
FROM `sales insights`.`internet sales cube` `Internet Sales Cube`
Incidental Filters: Engine Settings for Filtering on Factless Queries
The AtScale engine's default handling of factless queries is to not
apply filters upon them. However, this behavior is configurable and
controlled by the query.factless.ignoreIncidentalFilter
option
(default=TRUE). When query.factless.ignoreIncidentalFilter=TRUE
and
the AtScale engine is faced with an Incidental Filter query - a factless
query that may filter dimensional values by other not strictly related
dimensional values - the filter is ignored by the AtScale engine.
- An example of an Incidental Filter query is as follows:
SELECT `Internet Sales Cube`.`Style` AS `style`
FROM `sales insights`.`internet sales cube` `Internet Sales Cube`
WHERE (`Internet Sales Cube`.`Product Line` = 'T ')
- If
ignoreIncidentalFilter=TRUE
, would have the same outbound query as:
SELECT `Internet Sales Cube`.`Style` AS `style`
FROM `sales insights`.`internet sales cube` `Internet Sales Cube`
Setting query.factless.ignoreIncidentalFilter
to FALSE enables users
to filter on factless queries. This scenario mirrors the common use case
of enabling the "Show Relevant Values" option for a Tableau workbook -
in which Tableau generates queries that only select dimensional values
restricted to those that join to fact data.
In addition to filtering upon factless queries, AtScale 2020.3.0
introduces support for demand-defined aggregation of factless,
incidental filter queries when
query.factless.ignoreIncidentalFilter=false
. System aggregation of
factless queries may occur if:
- There are statistics available and the system handles user-generated dimension-only queries.
- The compression factor is met. The compression factor is a ratio of the fact dataset(s) used to join the data, to the cardinality of the hypothetical instance.
- The aggregate data does not already exist.
- An aggregate exists, but its definition should be superseded by another definition.
- All Aggregate Locality settings for the datasets associated with a hypothetical aggregate definition are satisfied.
The aggregates will only contain records for dimensional combinations that have fact records in the joining fact table.
Note: To enable this functionality in multi-fact models, the user must
also enable the engine setting query.factless.useIncidentalFacts
.
Procedure
- Select Settings > Engine beneath Organization settings.
- Use your browser's search function to search
query.factless.ignoreIncidentalFilter
orquery.factless.useIncidentalFacts
. - Toggle the slider to enable or disable one of the aforementioned engine settings pertaining to Incidental Filters/Queries.