Prestaties van gegevensfilters optimaliseren in Salesforce Spiff
Goed gestructureerde gegevensfilters zijn de meest effectieve manier om de prestaties van commissieberekeningen in Salesforce Spiff te verbeteren. Pas filters in de juiste volgorde toe, beperk recordvolumes in een vroeg stadium en vermijd patronen die de commissie-engine tot onnodig werk dwingen.
Vereiste editions
| Beschikbaar in: Salesforce Classic (niet in alle organisaties beschikbaar) en Lightning Experience |
| Beschikbaar in: Enterprise, Unlimited en Developer Edition |
| Tegen bijbetaling beschikbaar in: Professional Edition met Web Services-API ingeschakeld |
Filteren voordat gegevens worden verspreid
Filteren begint vóór gegevensfilters in Designer. Wanneer u uw Salesforce-connector of gegevensupload configureert, gebruikt u WHERE-clausulevoorwaarden om de records te beperken die naar Spiff worden gesynchroniseerd. Hoe minder records de commissie-engine bereiken, hoe sneller berekeningen worden uitgevoerd.
Pas deze technieken toe om recordvolumes verderop in de stroom te reduceren.
- Gebruik datumconstanten. In plaats van alle historische records te synchroniseren, gebruikt u datumrelatieve filters zoals
THIS_YEAR,LAST_90_DAYSof een specifiek voortschrijdend venster dat overeenkomt met uw afschriftperioden. Zo beperkt een filtervoorwaarde vanCloseDate >= THIS_YEARde synchronisatie tot records die zijn gesloten in het huidige kalenderjaar, met uitzondering van historische records die geen invloed meer hebben op actieve commissieberekeningen. - Plan voor recordgroei. Een configuratie die goed presteert met 50.000 records, kan een time-out hebben met 500.000. Bekijk geprojecteerde gegevensvolumes met uw team en pas uw synchronisatiestrategie aan voordat uw berekeningen deze volumes bereiken.
- Definieer een archiveringsstrategie. Werk samen met uw klant om vast te stellen wanneer records buiten de commissie vallen en verwijder ze uit de actieve synchronisatie. Het archiveren van oude gegevens vermindert de werkset die elk filter scant.
Orderfilterbewerkingen voor prestaties
De volgorde waarin u filtervoorwaarden in een keten opneemt, is van invloed op het aantal records dat de engine bij elke stap evalueert. Structureer filters zodat de meest selectieve voorwaarden het eerst worden uitgevoerd en beperk de recordset voordat de engine minder selectieve voorwaarden evalueert.
Structureer uw filters in deze volgorde als algemene benadering.
- Pas WHERE-voorwaarden eerder in de stroom toe via uw connector of gegevensupload om de records te beperken die Spiff bereiken.
- Filter op datumbereik en toewijzing van vertegenwoordiger in uw basisgegevensfilter. Gebruik voorwaarden voor
ClosedInPeriodenByRepom met de kleinste relevante recordset te werken. - Pas criteria toe als ingekapselde subfilters die verwijzen naar het basisfilter, in plaats van alle voorwaarden in één expressie te stapelen.
- Stel uw definitieve filter samen uit de subfilters om de expressie op het hoogste niveau leesbaar en onderhoudbaar te houden.
Berekende velden vermijden in gegevensfilters voor grote objecten
Voor berekende velden in gegevensfilters moet Spiff een formule evalueren voor elke record in het object voordat de filtervoorwaarde wordt toegepast. Deze benadering werkt over het algemeen goed voor objecten met minder dan 250.000 records. Voor grotere objecten leidt dit tot aanzienlijke prestatiedruk.
Denk voor filteren op een berekende waarde voor een groot object aan de volgende alternatieven.
- Voeg een vooraf berekend veld toe aan het bronobject upstream in Salesforce, zodat Spiff de berekende waarde rechtstreeks ontvangt in plaats van deze te berekenen op filtertijd.
- Gebruik een dubbelfilter om de berekening toe te passen in een werkblad en verwijs vervolgens naar het resultaat in een tweede filter dat de functie
contains()gebruikt.
Filters inkapselen voor herbruikbaarheid en uitbreidbaarheid
In plaats van lange, monolithische filterexpressies te schrijven, splitst u filters op in benoemde subfilters die elk één voorwaarde testen. Deze benadering wordt inkapseling genoemd. Ingekapselde filters bieden verschillende voordelen.
- De engine berekent een subfilter eenmaal en hergebruikt het resultaat voor elk filter dat ernaar verwijst, waardoor herhaalde berekeningen worden verminderd.
- Wanneer een veldnaam of bedrijfsregel verandert, werkt u het subfilter op één plaats bij in plaats van elk filter te bewerken dat de voorwaarde bevat.
- Kortere, benoemde filtervoorwaarden zijn gemakkelijker te lezen, te controleren en fouten op te sporen.
In plaats van Split_Percent__c != null in meerdere filters te herhalen, maakt u bijvoorbeeld een SplitPercentNotNull voor een subfilter en verwijst u daar waar nodig naar.
SplitPercentNotNull = Split_Percent__c != null
SplitARRThreshold = SplitARR >= 20000
ClosedInPeriod AND ByRep AND SplitPercentNotNull AND SplitARRThresholdZie Inkapseling gebruiken in Salesforce Spiff-berekeningen voor meer informatie over inkapseling.
Inzicht in uw gegevensschema en relaties
Selecteer het ankerobject voor een gegevensfilter op basis van waar de drie verplichte componenten—wanneer te betalen, wie te betalen en hoeveel te betalen—het meest direct toegankelijk zijn. Beginnen vanaf het rechterobject vermindert het aantal relatiedoorgangen dat de engine uitvoert.
Als u de velden voor datum, eigenaar en bedrag over meerdere objecten spreidt, prioriteert u het object dat het datumveld bevat en bouwt u relaties op om de andere velden op te halen. Werken vanaf het datumveld betekent dat de engine alleen werkt voor records binnen de relevante periode, niet voor de volledige objecthistorie.
Als één object duizenden records per vertegenwoordiger per periode heeft, overweeg dan of een geaggregeerd object op een hoger niveau in plaats daarvan als anker kan dienen.

