Вы находитесь здесь:
Оптимизация производительности фильтра данных в Salesforce Spiff
Хорошо структурированные фильтры данных являются единственным наиболее эффективным способом повышения производительности вычисления комиссии в Salesforce Spiff. Примените фильтры в правильном порядке, ограничьте объемы записей на раннем этапе и избегайте шаблонов, которые вынуждают механизм комиссии выполнять ненужную работу.
Требуемые версии
| Доступно в версиях: Salesforce Classic (недоступно во всех организациях) и Lightning Experience. |
| Доступно в версиях: Enterprise Edition, Unlimited Edition и Developer Edition. |
| Доступно за дополнительную плату в версиях: Профессиональная версия с включенным API веб-служб |
Фильтрация до достижения Spiff данными
Фильтрация начинается до фильтрации данных в конструкторе. При настройке коннектора Salesforce или загрузки данных используйте условия условия WHERE для ограничения записей, синхронизируемых в Spiff. Чем меньше записей достигает механизма комиссии, тем быстрее выполняются расчеты.
Примените эти методы для уменьшения объемов записей в восходящем направлении.
- Используйте литералы даты. Вместо синхронизации всех архивных записей используйте фильтры, связанные с датами (например,
THIS_YEAR,LAST_90_DAYSили определенное скользящее окно, соответствующее периодам оператора). Например, условие фильтраCloseDate >= THIS_YEARограничивает синхронизацию записями, закрытыми в текущем календарном году, исключая архивные записи, которые больше не влияют на активные расчеты комиссии. - План рекордного роста. Конфигурация с хорошей производительностью 50 000 записей может истечь с 500 000. Просмотрите прогнозируемые объемы данных с рабочей группой и настройте стратегию синхронизации, прежде чем ваши расчеты достигнут этих объемов.
- Определите стратегию архивирования. Совместно с клиентом определите, когда записи устаревают и удалите их из активной синхронизации. Архивирование старых данных уменьшает рабочий набор, сканируемый каждым фильтром.
Операции фильтрации заказа для производительности
Порядок цепочки условий фильтрации влияет на количество записей, оцениваемых механизмом на каждом этапе. Структурируйте фильтры так, чтобы наиболее селективные условия выполнялись первыми и сужали набор записей до того, как механизм оценит менее селективные условия.
В качестве общего подхода структурируйте фильтры в следующем порядке.
- Примените условия WHERE в верхнем направлении посредством коннектора или загрузки данных, чтобы ограничить записи, достигающие Spiff.
- Фильтруйте по диапазону дат и назначению представителя в базовом фильтре данных. Используйте условия
ClosedInPeriodи типаByRepдля работы с наименьшим актуальным набором записей. - Применяйте критерии в качестве инкапсулированных подфильтров, ссылающихся на базовый фильтр, а не упорядочивайте все условия в одном выражении.
- Составьте итоговый фильтр из подфильтров, чтобы выражение верхнего уровня было читаемым и обслуживаемым.
Избежание вычисляемых полей в фильтрах данных для больших объектов
Вычисляемые поля в фильтрах данных требуют, чтобы Spiff оценил формулу для каждой записи в объекте перед применением условия фильтра. Этот метод обычно хорошо работает для объектов с менее 250 000 записей. Для больших объектов это создает значительное давление производительности.
Чтобы отфильтровать по вычисленному значению для большого объекта, рассмотрите данные альтернативы.
- Добавьте предварительно вычисленное поле к исходному объекту вверх по течению в Salesforce, чтобы Spiff получал вычисленное значение напрямую, а не вычислял его во время фильтрации.
- Используйте двойной фильтр для применения вычисления в рабочей таблице, а потом ссылайтесь на результат во втором фильтре, использующем функцию
contains().
Инкапсулированные фильтры для многоразового использования и расширяемости
Вместо написания длинных монолитных выражений фильтра разделите фильтры на именованные подфильтры, которые тестируют одно условие. Этот метод называется инкапсуляция. Инкапсулированные фильтры предоставляют несколько преимуществ.
- Механизм вычисляет подфильтр один раз и повторно использует результат в любом фильтре, который на него ссылается, сокращая повторные вычисления.
- При изменении имени поля или бизнес-правила обновите подфильтр в одном месте, а не редактируйте каждый фильтр, содержащий условие.
- Более короткие именованные условия фильтра легче читать, проверять и отлаживать.
Например, вместо повторения Split_Percent__c != null в нескольких фильтрах создайте SplitPercentNotNull подфильтра и ссылайтесь на него при необходимости.
SplitPercentNotNull = Split_Percent__c != null
SplitARRThreshold = SplitARR >= 20000
ClosedInPeriod AND ByRep AND SplitPercentNotNull AND SplitARRThresholdДополнительные сведения об инкапсуляции см. в разделе Использование инкапсуляции в расчетах Salesforce Spiff.
Понимание схемы данных и взаимосвязей
Выберите объект привязки для фильтра данных, в зависимости от того, где три обязательных компонента (когда платить, кому и сколько платить) доступны напрямую. Начало работы с нужным объектом уменьшает количество проходов взаимосвязей, выполняемых механизмом.
Если поля даты, ответственного и стоимости распределены по нескольким объектам, расставьте приоритеты объекта, содержащего поле даты, и создайте взаимосвязи для извлечения других полей. Работа с полем даты сперва означает, что механизм работает только с записями в соответствующем периоде, а не с полным журналом объекта.
Если в одном объекте есть тысячи записей на представителя за период, подумайте, может ли агрегированный объект более высокого уровня служить привязкой.

