Loading
Sales Performance Management
Sommario
Seleziona filtri

          Nessun risultato
          Nessun risultato
          Ecco alcuni suggerimenti per la ricerca

          Controlla l'ortografia delle parole chiave.
          Usa termini di ricerca più generici.
          Seleziona meno filtri per ampliare la tua ricerca.

          Cerca in tutta la Guida di Salesforce
          Optimize Data Filter Performance in Salesforce Spiff

          Optimize Data Filter Performance in Salesforce Spiff

          Well-structured data filters are the single most effective way to improve commission calculation performance in Salesforce Spiff. Apply filters in the right order, limit record volumes early, and avoid patterns that force the commission engine to do unnecessary work.

          Required Editions

          Available in: both Salesforce Classic (not available in all orgs) and Lightning Experience
          Available in: Enterprise, Unlimited, and Developer Editions
          Available for an additional cost in: Professional Edition with Web Services API Enabled

          Filter Before Data Reaches Spiff

          Filtering begins before data filters in Designer. When you configure your Salesforce connector or data upload, use WHERE clause conditions to limit the records that sync into Spiff. The fewer records that reach the commission engine, the faster calculations run.

          Apply these techniques to reduce upstream record volumes.

          • Use date literals. Rather than syncing all historical records, use date-relative filters such as THIS_YEAR, LAST_90_DAYS, or a specific rolling window that matches your statement periods. For example, a filter condition of CloseDate >= THIS_YEAR limits the sync to records closed in the current calendar year, excluding historical records that no longer affect active commission calculations.
          • Plan for record growth. A configuration that performs well with 50,000 records can time out with 500,000. Review projected data volumes with your team and adjust your sync strategy before your calculations reach those volumes.
          • Define an archival strategy. Work with your customer to establish when records age out of commission eligibility and remove them from the active sync. Archiving old data reduces the working set that every filter scans.

          Order Filter Operations for Performance

          The order in which you chain filter conditions affects how many records the engine evaluates at each step. Structure filters so that the most selective conditions run first and narrow the record set before the engine evaluates less selective conditions.

          As a general approach, structure your filters in this order.

          1. Apply upstream WHERE conditions through your connector or data upload to limit the records that reach Spiff.
          2. Filter by date range and rep assignment in your base data filter. Use ClosedInPeriod and ByRep type conditions to work with the smallest relevant record set.
          3. Apply criteria as encapsulated subfilters that reference the base filter, rather than stacking all conditions in a single expression.
          4. Compose your final filter from the subfilters to keep the top-level expression readable and maintainable.

          Avoid Calculated Fields in Data Filters for Large Objects

          Calculated fields in data filters require Spiff to evaluate a formula for every record in the object before applying the filter condition. This approach generally works well for objects with fewer than 250,000 records. For larger objects, it creates significant performance pressure.

          To filter on a calculated value for a large object, consider these alternatives.

          • Add a pre-calculated field to the source object upstream in Salesforce, so Spiff receives the computed value directly rather than computing it at filter time.
          • Use a double filter to apply the calculation in a worksheet, and then reference the result in a second filter that uses the contains() function.
          Tip
          Tip If you use a calculated field in a data filter, wrap it in an encapsulated subfilter. Encapsulating the calculated field doesn't change how the filter executes — filters always run as a whole — but it makes the calculation easier to identify, turn off, or replace when your logic changes.

          Encapsulate Filters for Reusability and Extensibility

          Rather than writing long, monolithic filter expressions, break filters into named subfilters that each test a single condition. This approach is called encapsulation. Encapsulated filters offer several advantages.

          • The engine calculates a subfilter once and reuses the result across any filter that references it, reducing repeated computation.
          • When a field name or business rule changes, update the subfilter in one place rather than editing every filter that contains the condition.
          • Shorter, named filter conditions are easier to read, audit, and debug.

          For example, instead of repeating Split_Percent__c != null in multiple filters, create a subfilter SplitPercentNotNull and reference that wherever needed.

          SplitPercentNotNull = Split_Percent__c != null
          SplitARRThreshold   = SplitARR >= 20000
          
          ClosedInPeriod AND ByRep AND SplitPercentNotNull AND SplitARRThreshold

          For more information about encapsulation, see Use Encapsulation in Salesforce Spiff Calculations.

          Understand Your Data Schema and Relationships

          Select the anchor object for a data filter based on where the three required components—when to pay, who to pay, and how much to pay—are most directly accessible. Starting from the right object reduces the number of relationship traversals the engine performs.

          If you spread the date, owner, and amount fields across multiple objects, prioritize the object that holds the date field and build relationships to pull in the other fields. Working from the date field first means that the engine operates only on records within the relevant period, not on the full object history.

          If a single object has thousands of records per rep per period, consider whether a higher-level aggregated object can serve as the anchor instead.

           
          Caricamento
          Salesforce Help | Article