Рубрики
Без рубрики

Упрощение фильтрации событий и агрегации стоимости с помощью Rudderstack

Работа с данными о событиях – грязная работа временами. Разработчики могут передавать события с ошибками из -за … с меткой EventFiltering, Rudderstack, JavaScript, Valueaggregation.

Работа с данными о событиях – грязная работа временами. Разработчики могут передавать события с ошибками из -за изменений, сделанных разработчиком. Кроме того, иногда могут быть введены ошибки, если команда по разработке данных решит что -то изменить на схеме хранилища данных. Из -за этих изменений в схеме может возникнуть конфликт типа данных. Как кто -то может справиться со всеми различными проблемами данных о событиях, которые могут возникнуть в производственной среде? В этом блоге обсуждается, как Rudderstack Обрабатывает фильтрацию событий и агрегацию стоимости без введения ручных ошибок.

Решение Rudderstack – сложный механизм. Здесь вы можете реализовать пользовательскую логику, используя JavaScript для определения преобразований. Вы можете применить эти преобразования к входящим событиям.

Наличие выразительной среды, такой как Rudderstack, предлагает бесконечные возможности того, как команда по разработке данных может взаимодействовать с данными. В этом сообщении мы рассмотрим только два наиболее распространенных вариантов использования, с которыми мы столкнулись среди сообщества Rudderstack. Фильтрация событий и агрегация стоимости универсальны, просты в реализации, но очень мощные.

Преобразование пользователя для фильтрации событий и агрегации стоимости

Вы можете определить преобразования пользователей в плоскости конфигурации вашей настройки Rudderstack. Немногие примеры пользовательских преобразований доступны на нашем GitHub Анкет Этот блог дает представление об одном таком примере преобразования, которое вы можете использовать для:

  • Фильтрация событий: Это мешает событиям проходить в пункт назначения. Возможно, вам потребуется отфильтровать события, где организация использует несколько инструментов/платформ для решения различных бизнес -требований. Кроме того, вы можете направить только конкретные события в конкретные направления инструмента/платформы.
  • Агрегация стоимости: Это позволяет агрегировать значения по конкретным атрибутам конкретных типов событий. Возможно, вам потребуется объединить ценности, когда организация не хочет использовать инструмент/платформу для выполнения записей на уровне транзакций и/или анализа. Вместо этого они хотят консолидированных записей/аналитики. Таким образом, этот вид преобразования помогает уменьшить сетевой трафик и объем запроса/сообщения. Это связано с тем, что система может заменить несколько событий конкретного типа одним событием одного типа с помощью агрегированного значения. Это преобразование также помогает в снижении затрат, когда платформа назначения взимает объем событий/сообщений.

Вы можете просмотреть образец преобразования на нашем GitHub страница.

Реализация

Вам нужно содержать всю логику в Преобразование Функция, которая принимает множество событий в качестве ввода и возвращает массив преобразованных событий. Преобразование Функция-это функция входной точки для всех пользовательских преобразований.

function transform(events) {
    const filterEventNames = [
            // Add list of event names that you want to filter out
     "game_load_time",
         "lobby_fps"
    ];

 //remove events whose name match those in above list
    const filteredEvents = events.filter(event => {
        const eventName = event.event;
            return !(eventName && filterEventNames.includes(eventName));
    });

Приведенный выше код показывает, как вы можете использовать фильтр Функция массивов JavaScript для фильтрации событий на основе имени события.

Изменение этого кода также возможна. Здесь значения в массиве имен событий – это те, которые вы хочу сохранить, и вы удаляете условие Not ( ! ) из возвращаться Заявление в предпоследней линии.

Ниже код показан удаление событий на основе простого соответствия имени событий, но более сложная логика, включающая проверку наличия значения для связанного атрибута.

//remove events of a certain type if related property value does not satisfy the pre-defined condition
//in this example, if 'total_payment' for a 'spin' event is null or 0, then it would be removed.
        //Only non-null, non-zero 'spin' events would be considered
    const nonSpinAndSpinPayerEvents = filteredEvents.filter( event => {
            const eventName = event.event;
        // spin events
            if(eventName.toLowerCase().indexOf('spin') >= 0) {
                if(event.userProperties && event.userProperties.total_payments 
&& event.userProperties.total_payments > 0) {
                    return true;
            } else {
                        return false;
                }
            } else {
                    return true;
        }
    });

Как вы можете видеть из приведенных выше примеров, вы можете использовать отфильтрованный массив, доступный в качестве вывода с одного шага в качестве входа в другой. В результате вы можете цепь DAISY, условия трансформации.

Наконец, в следующем коде показано, как вы можете подготовить агрегаты для конкретных атрибутов по событиям конкретного типа, присутствующего в партии. После этого код возвращает одно событие соответствующего типа. Кроме того, код возвращает агрегированные значения для соответствующих атрибутов.

//remove events of a certain type if related property value does not satisfy the pre-defined condition
//in this example, if 'total_payment' for a 'spin' event is null or 0, then it would be removed.
        //Only non-null, non-zero 'spin' events would be considered
    const nonSpinAndSpinPayerEvents = filteredEvents.filter( event => {
            const eventName = event.event;
        // spin events
            if(eventName.toLowerCase().indexOf('spin') >= 0) {
                if(event.userProperties && event.userProperties.total_payments 
&& event.userProperties.total_payments > 0) {
                    return true;
            } else {
                        return false;
                }
            } else {
                    return true;
        }
    });

Вывод

В приведенном выше фрагменте:

  • Во -первых, код собирает spin_result События в массив.
  • Затем код объединяет значения для трех атрибутов – bet_amount В win_amount и no_of_spin итерация над элементами вышеуказанного массива.
  • После этого система назначает агрегированные значения соответствующим атрибутам первого spin_result событие в массиве.
  • Теперь код отделяет события, которые не имеют целевого типа ( spin_result в данном случае) на другой массив. Если таких событий не было, создается пустой массив.
  • Наконец, система добавляет Single Spin_Result Событие на массив, созданный на предыдущем шаге, и результат возвращается.

Зарегистрируйтесь бесплатно и начните отправлять данные

Проверьте наш потоки событий, ELT и обратный ETL. Используйте наш источник HTTP для отправки данных менее чем за 5 минут, или установите один из наших 12 SDK на вашем веб -сайте или в приложении. Начните Анкет

Оригинал: “https://dev.to/rudderstack/simplifying-event-filtering-and-value-aggregation-with-rudderstack-54b8”