Primary Use-Case

The user needs to find data that matches specific criteria within a large dataset.‍ Filtering, in its simplest form, takes the shape of…

attribute “x” + logic “y” + value “z” = resulting subset of data.

Note of clarification

Filtering is the process of narrowing down a homogenous dataset by locating matching values within a defined attribute(s).

Search attempts to locate a search string amongst a heterogeneous set of data, usually without limiting the attributes searched.

Design Challenges

  • Datasets can be presented in a number of formats: tables/grids, cards, cascading columns, topologies, dashboards, etc. The method of filtering should remain consistent regardless of the data’s format.

  • Tables often allow users to filter directly in the column header, unfortunately this introduces inconsistency in how a user performs filtering. If this filtering method is allowed, consideration must be given to how it aligns with the primary filtering pattern.

  • Attributes that are available to filter on may be limited technically, due to lack of access or excessive fetch times.

  • The number of attributes in a dataset may be large.

  • Applicable logic (e.g. contains, is not, greater than, etc.) and value format (strings, integers, binaries, etc.) varies between attributes.

  • The user may need to create complex filtering queries to return the results they seek.

Design Considerations

  • The user must be kept informed of the state of the dataset they are looking at.

  • Filters should be visually prominent without overshadowing content.

  • Spatially, filters should imply they “own” the content being returned.

  • The user will likely want to save filtered states they return to often as “saved views”.

  • Context set by the filter state may need to be retained as the user moves from one screen of the application to another.

  • Filtering should be easy for novices to use, but have accelerators and allow for complex filtering to satisfy expert users.