Categories: Ai

Искусство ETL. Пишем собственный движок SQL на Spark [часть 7]

В предыдущих сериях (FAQ 1 2 3 4 5 6 ) мы весьма подробно рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL поверх Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

В данной части поговорим о том, как добавить в собственный диалект SQL поддержку процедур. Например,

— library.tdl

CREATE PROCEDURE dwellTimeByMode(@signals, @target, @outPrefix,
@modes = [‘pedestrian’, ‘non_pedestrian’, ‘car’, ‘bike’],
@groupid=’cell10′) AS BEGIN
LOOP $mode IN $modes BEGIN
SELECT * FROM $signals INTO “{$signals}/{$mode}” WHERE mode=$mode;

CALL dwellTime(@signals_userid_attr=userid,
@target_userid_attr=userid,
@target_grouping_attr=$groupid
) INPUT signals FROM “{$signals}/{$mode}”, target FROM $target
OUTPUT INTO “{$outPrefix}/{$mode}”;

ANALYZE “{$signals}/{$mode}”;
ANALYZE “{$outPrefix}/{$mode}”;
END;
END;

— … — … — … —

— script.tdl

CALL dwellTimeByMode(@signals=$this_month, @target=$population, @outPrefix=$this_month);

Нафига это надо?

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

Читать дальше →

Share
Published by

Recent Posts

Магия CSS на практике: советы по вёрстке от гика. Часть 4

Хабр, привет! Я снова пришёл к вам со статьёй, где показываю мои любимые техники вёрстки.…

1 неделя ago

JavaScript: структуры данных и алгоритмы. Часть 5

Привет, друзья! В этой серии статей мы разбираем структуры данных и алгоритмы, представленные в этом…

1 неделя ago

Реализация событий через HTTP

Для некоторых задач, связанных с обновлением данных в реальном времени — например, новостные ленты, уведомления…

1 неделя ago

Каннибализм трафика. Нужно ли вести контекст по брендовым запросам?

Со времён появления контекстной рекламы маркетологов не перестаёт мучить вопрос:"А есть ли смысл вести контекст по…

1 неделя ago

Презентация Apple 2024: новая кнопка на iPhone 16, функция слухового аппарата у AirPods, кинокамера в iPhone Pro

Накануне в прямом эфире прошла большая презентация новой техники от компании Apple. Команда Тима Кука…

1 неделя ago

Сразу два аналога Notion, бесплатный сервис аналитики для продавцов на WB – эти и другие российские стартапы

10 новых российских сервисов для нарезки шортсов при помощи ИИ, публикации в цифровых СМИ, авто-ответов…

1 неделя ago