Содержание: CRM-маркетинг (Customer Relationship Management, с англ. — «система управления взаимоотношениями с клиентами») — это часть маркетинговой стратегии бизнеса, которая отвечает за увеличение ценности клиентской базы с помощью персонализированных коммуникаций и сосредоточенности на потребностях и предпочтениях потребителей. Он нужен компаниям, которые хотят не просто привлечь покупателя, но и удержать его. CRM-маркетологи управляют базами клиентов и выручкой, которую они приносят: разделяют...
🔍 ETL с помощью SQL: Инкрементальная загрузка 🔍 ✨ В отличие от полной перезагрузки (Full Reload), описанного в этом посте, инкрементальная загрузка перемещает только новые или обновленные данные. Это экономит ресурсы и время, особенно при работе с большими объемами данных. Давайте поговорим о ключевых этапах этого процесса: 1️⃣ Определение инкремента данных Инкремент - набор данных, которые нужно загрузить. Он может определяться как набор новых строк в источнике, так и набор строк с обновленными значениями. Для определения инкремента обычно используются поля со смыслом как "дата обновления записи", "дата создания записи" и др. с похожим смыслом, по которым можно сделать выборку нужного инкремента. Пример выделения инкремента из таблицы source по условию, что поле update_date имеет сегодняшнюю дату SELECT * FROM source s WHERE update_date = CURRENT_DATE() 2️⃣ Вставка инкремента в target таблицу Пример запроса может выглядеть так: INSERT INTO target SELECT * FROM source s WHERE update_date = CURRENT_DATE(); Здесь есть нюанс, что в таблицу target попадут все записи инкремента и останутся те, которые были уже в таблице например под одним и тем же id. Таким образом может собираться накопительная историческая таблица, например с продажами. К примеру в таблице target уже была запись по продаже с id = 5 и status = 'buy'. А в новом инкременте из source прилетит обновленная строка с id = 5 и status = 'cancelled'. Таким образом в target будет зафиксирована вся история обновления строк. Если в target таблице нужно оставить только актуальную версию данных без исторического состояния, такой способ я распишу в одном из следующих постов этой серии. Оставляйте реакции, если пост был полезен 😉