Skip to content

Filters

Filters restrict the data shown by a page or a visual. They can target a specific column, apply a platform expression, or group multiple sub-filters with a logical operator.


Filter

public class Filter
{
    public string? Id { get; set; }
    public string? IdColumn { get; set; }
    public FilterFunctionType Function { get; set; }
    public string? FunctionName { get; set; }
    public string? LogicalOperator { get; set; }
    public Expression? Expression { get; set; }
    public List<string> Values { get; set; }
    public bool IsGroup { get; set; }
    public List<Filter>? Children { get; set; }
    public ICollection<AdditionalMetadata>? AdditionalMetadata { get; set; }
}
Property Type Description
Id string? Unique filter identifier
IdColumn string? Column this filter targets (format: TableName.ColumnName). Null for group filters.
Function FilterFunctionType How the filter matches values
FunctionName string? Platform-native function name (when Function = Expression)
LogicalOperator string? For group filters: "AND" or "OR"
Expression Expression? Formula expression for expression-based filters
Values List<string> Explicit values for OnlySelectedValues / ExceptSelectedValues
IsGroup bool Whether this is a logical grouping node (has Children, no direct column)
Children List<Filter>? Sub-filters nested inside a group
AdditionalMetadata ICollection<AdditionalMetadata>? Platform-specific extras

FilterFunctionType

public enum FilterFunctionType
{
    OnlySelectedValues,
    ExceptSelectedValues,
    Expression
}
Value Meaning
OnlySelectedValues Include only rows where the column value is in Values
ExceptSelectedValues Exclude rows where the column value is in Values
Expression Apply the formula in Expression (platform native language or SQL)

Scope

Filters exist at two scopes:

Scope Location Effect
Page-level Page.PageLevelFilters Applied to every visual on the page
Visual-level Visual.VisualLevelFilters Applied only to a specific visual

Nesting example

{
  "isGroup": true,
  "logicalOperator": "OR",
  "children": [
    {
      "idColumn": "Sales.Region",
      "function": "OnlySelectedValues",
      "values": ["North", "South"]
    },
    {
      "idColumn": "Sales.Channel",
      "function": "OnlySelectedValues",
      "values": ["Online"]
    }
  ]
}

This reads as: show data where Region IN ('North', 'South') OR Channel IN ('Online').