Skip to main content

Как сплитовать на основе user id?

Объект userData#

Сплитование (разделение пользователей по вариантам эксперимента) осуществляется с помощью userId в объекте userData. Объект может быть представлен следующим образом:

userData = {    userId: <YOUR_USER_ID>}

Этот объект необходимо передать в метод init экземпляра класса Sigma вместе с токеном вашего проекта:

const token = <YOUR_TOKEN>;const sigma = new Sigma();    sigma.init({ token, userData });

Стоит заметить, что userId может быть абсолютно любым. Это могут быть Google Analytics ClientId, Yandex.Metrika ClientId, id личного кабинета и т.д.

Несколько id пользователя#

Sigma позволяет сплитовать разные эксперименты на основе нескольких идентификаторов пользователя.

К примеру, вы можете параллельно запускать эксперименты на авторизованных и на не авторизованных пользователей. Для этого логично использовать какой-либо анонимный идентификатор (например, GA ClientId) на не авторизованных и id личного кабинета для авторизованных.

Есть два сценария использования Sigma для этого кейса:

  1. Создать два экземпляра класса, где первый отвечает за авт., а второй за не авт. пользователей
  2. Создать один экземпляр, но контролировать вызов init с разными userData

Реализация с помощью двух экземпляров класса#

const token = <YOUR_TOKEN>;const sigma_non_auth = new Sigma();const sigma_auth = new Sigma();
sigma_non_auth.init({ token, {userId: clientid} }); // Сплит на основе GA Clientidsigma_auth.init({ token, {userId: profileid} }); // Сплит на основе id личного кабинета

Далее в зависимости от того, с каким экспериментом вы имете дело, необходимо вызывать методы от 1-го или 2-го экземпляров

Реализация с помощью одного экземпляра класса и двух userData#

В отличие от предыдущего подхода, здесь придется вызывать init каждый раз, когда необходимо получить id по тому или иному эксперименту:

const token = <YOUR_TOKEN>;const sigma = new Sigma();    // Получаем вариант по 1-му эксперименту для не авт. пользователейsigma.init({ token, {userId: clientid} }); // Сплит на основе GA Clientidconst exp_1 = await sigma.getExperiment('exp_1').then(res => res.getParamValue('param'));    // Получаем вариант по 2-му эксперименту для авт. пользователейsigma.init({ token, {userId: profileid} }); // Сплит на основе id личного кабинетаconst exp_2 = await sigma.getExperiment('exp_2').then(res => res.getParamValue('param'));

Смотрите также#