Contextual Filtering
Advanced data filtering with expression engine integration. Filter your data using conditions and mathematical functions.
Overview
Contextual filtering allows you to:
- Filter data based on field conditions
- Use expressions with built-in mathematical and logical functions
- Create multiple filters with different criteria
- Rename filtered datasets for further processing
- Apply sequential filtering for complex logic
Basic Filtering
Simple Conditions
Filter data with basic conditions:
processing:
contextual_filtering:
users:
- field: age
condition: "age > 18"
new_name: "adults"
- field: status
condition: "status == 'active'"
new_name: "active_users"
Multiple Field Filtering
Apply multiple filters to the same dataset:
processing:
contextual_filtering:
customers:
- field: segment
condition: "== 'Premium'"
new_name: "premium_customers"
- field: lifetime_value
condition: "> 1000"
new_name: "high_value_customers"
Advanced Conditions
Mathematical Functions
Use mathematical functions in conditions:
processing:
contextual_filtering:
transactions:
- field: amount
condition: "> 1000"
new_name: "high_value_transactions"
- field: category
condition: "== 'premium'"
new_name: "premium_transactions"
- field: status
condition: "== 'completed'"
new_name: "completed_transactions"
Date Filtering
Filter based on date fields:
processing:
contextual_filtering:
orders:
- field: order_date
condition: ">= '2024-01-01'"
new_name: "recent_orders"
- field: status
condition: "== 'shipped'"
new_name: "shipped_orders"
- field: priority
condition: "== 'high'"
new_name: "priority_orders"
String Filtering
Filter using string comparisons:
processing:
contextual_filtering:
products:
- field: category
condition: "== 'electronics'"
new_name: "electronics_products"
- field: name
condition: "== 'Premium Widget'"
new_name: "premium_products"
- field: sku
condition: "!= ''"
new_name: "products_with_sku"
Multiple Filters for Complex Logic
Sequential Filtering
To achieve complex logic, use multiple filters in sequence:
processing:
contextual_filtering:
# Step 1: Filter by segment
premium_customers:
customers:
- field: segment
condition: "== 'Premium'"
new_name: "premium_segment"
# Step 2: Filter premium customers by value
high_value_premium:
premium_segment:
- field: lifetime_value
condition: "> 5000"
new_name: "high_value_customers"
Multiple Criteria
Apply multiple filters to the same dataset:
processing:
contextual_filtering:
customer_analysis:
customers:
- field: segment
condition: "== 'Premium'"
new_name: "premium_customers"
- field: status
condition: "== 'active'"
new_name: "active_customers"
- field: lifetime_value
condition: "> 1000"
new_name: "valuable_customers"
Mathematical Expressions
Use basic mathematical expressions:
processing:
contextual_filtering:
financial_data:
- field: amount
condition: "> 1000"
new_name: "high_value_items"
- field: profit_margin
condition: "> 0.15"
new_name: "profitable_items"
- field: score
condition: ">= 8.0"
new_name: "high_scores"
Advanced Examples
Numeric Range Filtering
Filter based on numeric ranges:
processing:
contextual_filtering:
employees:
- field: performance_score
condition: ">= 9.0"
new_name: "top_performers"
- field: salary
condition: "> 75000"
new_name: "high_earners"
- field: age
condition: ">= 25"
new_name: "experienced_employees"
Category Filtering
Filter by specific categories:
processing:
contextual_filtering:
customer_segments:
customers:
- field: segment
condition: "== 'Premium'"
new_name: "premium_customers"
- field: region
condition: "== 'North America'"
new_name: "na_customers"
- field: status
condition: "!= 'inactive'"
new_name: "active_customers"
Field-Specific Filtering
Numeric Range Filtering
Filter numeric fields with ranges:
processing:
contextual_filtering:
products:
- field: price_range
condition: "price >= 10.00 && price <= 100.00"
new_name: "mid_range_products"
- field: rating_filter
condition: "rating >= 4.0 && review_count >= 10"
new_name: "well_rated_products"
- field: inventory_level
condition: "stock_quantity > reorder_point * 2"
new_name: "well_stocked_products"
Status-Based Filtering
Filter by status and category fields:
processing:
contextual_filtering:
orders:
- field: priority
condition: "== 'High'"
new_name: "high_priority_orders"
- field: payment_status
condition: "== 'Completed'"
new_name: "completed_payments"
- field: shipping_cost
condition: "< 50"
new_name: "affordable_shipping"
Performance Tips
Simple Conditions First
Use simple equality checks for better performance:
processing:
contextual_filtering:
optimized_filter:
large_dataset:
- field: status
condition: "== 'active'"
new_name: "active_records"
- field: priority
condition: "== 'high'"
new_name: "priority_records"
Sequential Filtering
Apply filters in stages to reduce dataset size:
processing:
contextual_filtering:
# Stage 1: Basic filtering
stage_1:
raw_data:
- field: status
condition: "== 'active'"
new_name: "recent_active"
# Stage 2: Further filtering on reduced dataset
stage_2:
recent_active:
- field: score
condition: "> 8.0"
new_name: "high_performers"
Basic Error Handling
Simple Validation
Use basic conditions to validate data:
processing:
contextual_filtering:
data_validation:
data:
- field: age
condition: "> 0"
new_name: "valid_ages"
- field: email
condition: "!= ''"
new_name: "non_empty_emails"
- field: value
condition: ">= 0"
new_name: "positive_values"
Real-World Examples
E-commerce Customer Segmentation
processing:
contextual_filtering:
# Step 1: High-value customers
high_value:
customers:
- field: lifetime_value
condition: "> 10000"
new_name: "vip_customers"
# Step 2: Active customers
active_customers:
customers:
- field: status
condition: "== 'active'"
new_name: "active_customers"
# Step 3: Recent customers
new_customers:
customers:
- field: registration_date
condition: ">= '2024-01-01'"
new_name: "new_customers"
Transaction Analysis
processing:
contextual_filtering:
transaction_filtering:
transactions:
# High-value transactions
- field: amount
condition: ">= 1000"
new_name: "high_value_transactions"
# Completed transactions
- field: status
condition: "== 'completed'"
new_name: "completed_transactions"
# Recent transactions
- field: date
condition: ">= '2024-01-01'"
new_name: "recent_transactions"
Content Filtering
processing:
contextual_filtering:
content_analysis:
articles:
# Popular content
- field: views
condition: "> 1000"
new_name: "popular_articles"
# High engagement
- field: engagement_rate
condition: "> 0.15"
new_name: "engaging_content"
# Recent content
- field: published_date
condition: ">= '2024-01-01'"
new_name: "recent_articles"
Available Expression Functions
Mathematical Functions
abs(x)
- Absolute valueround(x, digits)
- Round to decimal placesmin(collection)
- Minimum valuemax(collection)
- Maximum valueavg(collection)
- Average valuesum(collection)
- Sum of values
String Functions
upper(string)
- Convert to uppercaselower(string)
- Convert to lowercaselength(string)
- String lengthtrim(string)
- Remove whitespaceconcat(...)
- Concatenate stringssubstring(string, start, end)
- Extract substringreplace(string, old, new)
- Replace text
Date Functions
today()
- Current datenow()
- Current timestampyear(date)
- Extract yearmonth(date)
- Extract monthday(date)
- Extract day
Collection Functions
count(collection)
- Count itemsmap(collection, field)
- Extract field valuesfilter(collection, field, value)
- Filter by fieldfirst(collection)
- First itemlast(collection)
- Last item
Logical Functions
and(...)
- Logical ANDor(...)
- Logical ORnot(condition)
- Logical NOTif(condition, true_value, false_value)
- Conditional
Type Conversion
to_string(value)
- Convert to stringto_number(value)
- Convert to numberto_int(value)
- Convert to integerto_bool(value)
- Convert to boolean
Best Practices
Performance
- Put simple conditions before complex ones
- Use statistical functions sparingly on large datasets
- Consider staged filtering for complex conditions
- Index frequently filtered fields when possible
Readability
- Use descriptive field names for filtered results
- Break complex conditions into multiple stages
- Add comments for complex expressions
- Use consistent naming conventions
Maintainability
- Avoid hardcoded values; use variables when possible
- Test filter conditions with sample data
- Document business rules behind complex filters
- Use safe functions to handle missing data
Next Steps
- Format Conversion - Transform filtered data
- Advanced Operations - Aggregate and analyze filtered results
- Relationship Highlighting - Link filtered data with other sources
- Expression Engine - Complete expression reference