Optimera datafilterprestanda i Salesforce Spiff
Välstrukturerade datafilter är det enskilt mest effektiva sättet att förbättra prestandan för provisionsberäkning i Salesforce Spiff. Tillämpa filter i rätt ordning, begränsa postvolymer tidigt och undvik mönster som tvingar kommissionsmotorn att göra onödigt arbete.
Versioner som krävs
| Tillgängliga i: både Salesforce Classic (inte tillgängligt i alla organisationer) och Lightning Experience |
| Tillgängliga i: Enterprise, Unlimited, och Developer Editions |
| Tillgängliga mot en tilläggskostnad i: Professional Edition med Web Services API aktiverat |
Filtrera innan data når spiff
Filtrering börjar innan datafilter i Designer. När du konfigurerar din Salesforce-anslutare eller datauppladdning, använd WHERE-klausulvillkor för att begränsa de poster som synkroniseras till Spiff. Ju färre poster som når kommissionsmotorn, desto snabbare körs beräkningarna.
Tillämpa dessa tekniker för att minska postvolymer uppströms.
- Använd datumliteraler. Istället för att synkronisera alla historiska poster, använd datumrelaterade filter som
THIS_YEAR,LAST_90_DAYSeller ett specifikt rullande fönster som matchar dina kontoutdragsperioder. Till exempel begränsar ett filtervillkor förCloseDate >= THIS_YEARsynkroniseringen till poster som avslutats det innevarande kalenderåret, vilket utesluter historiska poster som inte längre påverkar aktiva provisionsberäkningar. - Planera för posttillväxt. En konfiguration som fungerar bra med 50 000 poster kan ta timeout med 500 000. Gå igenom beräknade datavolymer med ditt team och justera din synkroniseringsstrategi innan dina beräkningar når dessa volymer.
- Definiera en arkiveringsstrategi. Arbeta med din kund för att fastställa när poster åldras utanför rätten till provision och ta bort dem från den aktiva synkroniseringen. Arkivering av gamla data minskar den arbetsuppsättning som varje filter skannar.
Orderfilteroperationer för prestanda
Ordningen i vilken du kedjefiltrerar villkor påverkar hur många poster motorn utvärderar i varje steg. Strukturera filter så att de mest selektiva villkoren körs först och begränsa postuppsättningen innan motorn utvärderar mindre selektiva villkor.
Som en allmän metod, strukturera dina filter i denna ordning.
- Tillämpa WHERE-villkor uppströms genom din anslutare eller datauppladdning för att begränsa vilka poster som når Spiff.
- Filtrera efter datumintervall och representanttilldelning i ditt basdatafilter. Använd villkor för
ClosedInPeriodochByRepför att arbeta med den minsta relevanta postuppsättningen. - Tillämpa kriterier som inkapslade underfilter som refererar basfiltret istället för att stapla alla villkor i ett enda uttryck.
- Skapa ditt slutgiltiga filter från underfiltren för att hålla toppnivåuttrycket läsbart och underhållsbart.
Undvik beräknade fält i datafilter för stora objekt
Beräknade fält i datafilter kräver att Spiff utvärderar en formel för varje post i objektet innan filtervillkoret tillämpas. Detta tillvägagångssätt fungerar i allmänhet bra för objekt med färre än 250 000 poster. För större objekt skapar det betydande prestandatryck.
För att filtrera efter ett beräknat värde för ett stort objekt, överväg dessa alternativ.
- Lägg till ett förberäknat fält i källobjektet uppströms i Salesforce, så att Spiff får det beräknade värdet direkt istället för att beräkna det vid filtertid.
- Använd ett dubbelfilter för att tillämpa beräkningen i ett kalkylblad och referera sedan resultatet i ett andra filter som använder funktionen
contains().
Kapsla in filter för återanvändning och utökning
Istället för att skriva långa monolitiska filteruttryck, dela upp filter i namngivna underfilter som vart och ett testar ett enskilt villkor. Detta tillvägagångssätt kallas inkapsling. Inkapslade filter har flera fördelar.
- Motorn beräknar ett underfilter en gång och återanvänder resultatet i alla filter som refererar det, vilket minskar upprepad beräkning.
- Om ett fältnamn eller en verksamhetsregel ändras, uppdatera underfiltret på ett ställe istället för att redigera varje filter som innehåller villkoret.
- Kortare namngivna filtervillkor är enklare att läsa, granska och felsöka.
Till exempel, istället för att upprepa Split_Percent__c != null i flera filter, skapa ett SplitPercentNotNull för underfilter och referera till det där det behövs.
SplitPercentNotNull = Split_Percent__c != null
SplitARRThreshold = SplitARR >= 20000
ClosedInPeriod AND ByRep AND SplitPercentNotNull AND SplitARRThresholdMer information om inkapsling finns i Använd inkapsling i Salesforce Spiffberäkningar.
Förstå ditt dataschema och relationer
Välj ankarobjektet för ett datafilter baserat på var de tre obligatoriska komponenterna—när de ska betala, vem de ska betala och hur mycket de ska betala—är mest direkt tillgängliga. Att starta från rätt objekt minskar antalet relationsgenomgångar som motorn utför.
Om du sprider fälten datum, ägare och belopp över flera objekt, prioritera objektet som innehåller datumfältet och bygg relationer att hämta i de andra fälten. Att arbeta från datumfältet först innebär att motorn endast arbetar på poster inom den relevanta perioden, inte på den fullständiga objekthistoriken.
Om ett enskilt objekt har tusentals poster per säljare per period, överväg om ett aggregerat objekt på högre nivå kan fungera som ankare istället.

