Перейти к основному содержимому
Kira Furuichi
Technical Writer at dbt Labs
View All Authors

Инженеры данных + dbt v1.5: Эволюция мастерства для масштабирования

· 11 мин. чтения
Sung Won Chung
Solutions Architect at dbt Labs
Kira Furuichi
Technical Writer at dbt Labs

Я, Сунг, случайно попал в индустрию данных осенью 2014 года. Я использовал нечто под названием язык команд аудита (ACL) для автоматизации дебетов, равных кредитам, для аналитики бухгалтерского учета (да, это так же утомительно, как звучит). Я помню, как усердно работал в гостиничном номере в Де-Мойне, штат Айова, где самым интересным местом был Panda Express. Было поздно ночью, около 2 часов утра. Я сделал шаг назад и подумал: «Почему я так усердно работаю над чем-то, что мне неинтересно, с инструментами, которые больше вредят, чем помогают?»

Функция SQL DATE_TRUNC: Почему мы её любим

· 5 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

В общем, люди, работающие с данными, предпочитают более детализированные данные менее детализированным. Метки времени > даты, ежедневные данные > еженедельные данные и т.д.; наличие данных на более детализированном уровне всегда позволяет вам приблизиться. Однако, скорее всего, вы смотрите на свои данные на несколько отдаленном уровне — еженедельно, ежемесячно или даже ежегодно. Для этого вам понадобится удобная функция, которая поможет округлить поля даты или времени.

Функция DATE_TRUNC усечет дату или время до первой единицы заданной части даты. Многословно, многословно, многословно! Что это на самом деле значит? Если вы усечете 2021-12-13 до месяца, она вернет 2021-12-01 (первый день месяца).

С помощью функции DATE_TRUNC вы можете усекать до недель, месяцев, лет или других частей даты для поля даты или времени. Это может сделать поля даты/времени более удобочитаемыми, а также помочь в проведении более чистого анализа, основанного на времени.

Функция DATEDIFF в SQL: Почему мы её любим

· 4 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

«Сколько времени прошло с тех пор, как этот клиент последний раз делал у нас заказ?»

«Какое среднее количество дней до конверсии?»

Бизнес-пользователи будут задавать эти вопросы, а специалисты по данным должны будут на них ответить, и единственный способ решить их — это вычислить время между двумя разными датами. К счастью, есть удобная функция DATEDIFF, которая может это сделать за вас.

Функция DATEDIFF возвращает разницу в указанных единицах (например, дни, недели, годы) между начальной и конечной датой/временем. Это простая и широко используемая функция, которую вы будете использовать чаще, чем ожидаете.

Рождение звезды (генератора)

· 3 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

Мы все, вероятно, были в такой ситуации: Таблица A содержит 56 столбцов, и мы хотим выбрать все, кроме одного из них (column_56). Итак, начнем...

select
column_1,
column_2,
column_3,
please_save_me…
from {{ ref('table_a') }}

В этот момент вы понимаете, что ваше желание продолжать набирать оставшиеся 52 столбца практически исчезло, и вы, вероятно, начинаете сомневаться в жизненных решениях, которые привели вас сюда.

Но что, если бы был способ сократить эти 56+ строк кода до нескольких? Вот тут-то и приходит на помощь удобный макрос dbt.

Функция SQL EXTRACT: Почему мы её любим

· 4 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

Существует множество различных функций для работы с датами в SQL — например, DATEDIFF, DATEADD, DATE_PART и DATE_TRUNC. У каждой из них свои случаи использования, и понимание того, как и когда их использовать, является основой работы с SQL. Является ли какая-либо из них такой же простой в использовании, как функция EXTRACT? Ну, это тема для другого обсуждения...

В этом посте мы подробно рассмотрим функцию EXTRACT, как она работает и почему мы её используем.

Функция LOWER в SQL: Почему мы её любим

· 4 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

Мы все были в такой ситуации:

  • В форме регистрации пользователь A ввел своё имя как Kira Furuichi, пользователь B ввел его как john blust, а пользователь C написал DAvid KrevitT (что это было, Дэвид??)
  • Ваши инженеры бэкенда настаивают, чтобы электронные адреса клиентов были написаны заглавными буквами
  • Все ваши имена для отслеживания событий написаны строчными буквами

В реальном мире человеческих несовершенств, мнений и ошибок строковые значения, вероятно, будут иметь непоследовательное написание заглавными и строчными буквами в разных источниках данных (или даже в одном и том же источнике данных). Всегда есть немного хаоса в том, почему некоторые значения передаются в верхнем или нижнем регистре, и не стоит ломать голову, чтобы это выяснить.

Итак, как создать единообразие для строковых значений, которые вы собираете из всех ваших источников данных? Функция LOWER!

Функция COALESCE в SQL: Почему мы её любим

· 4 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

В области аналитической инженерии неизбежно столкновение с моментами, когда в ваших данных появляются загадочные или бесполезные пустые значения. Null-значения, безусловно, имеют своё время и место, но когда вам нужно, чтобы эти null-значения были заполнены более значимыми данными, на помощь приходит COALESCE.

COALESCE — это невероятно полезная функция, которая позволяет заполнить бесполезные пустые значения, которые могут появиться в ваших данных. Как говорит аналитический инженер Лорен Бенезра, вы, вероятно, почти никогда не увидите модель данных, которая не использует COALESCE где-то.

Из архивов Slack: Когда бэкенд-разработчики приносят радость аналитикам

· 4 мин. чтения
Kira Furuichi
Technical Writer at dbt Labs

"Я забыл упомянуть, что мы удалили этот столбец и создали новый для него!"

“Хм, я на самом деле не совсем уверен, почему customer_id передается как int, а не как строка.”

primary key для этой table на самом деле order_id, а не поле id.”

Думаю, многие аналитики, включая меня, получали подобные комментарии от своих бэкенд-разработчиков.

Бэкенд-разработчики работают невероятно усердно. Они создают базы данных и таблицы, которые являются сердцем многих бизнесов. В своих усилиях они иногда могут упустить из виду, забыть или не понять, как их работа влияет на аналитику. Однако, когда бэкенд-разработчики понимают и реализуют технические и логистические требования от аналитических команд, они могут приносить радость.

Так что же делает возможным сильное сотрудничество между аналитиками и бэкенд-разработчиками?