Sobes.tech

Data Engineer

Какой у тебя есть опыт работы с SQL и реляционными БД?

Middle
Леман про
4

Расскажите про задачу с настройкой репликации, которую вы решали.

Senior
ООО Блейз Аналитикс
4

NULL плюс 5 — сколько будет?

Middle
wb
4

Применялся ли метод сравнения хэшей записей для вычисления дельты между источником и целевой таблицей?

Senior
ООО Блейз Аналитикс
4

Как поступать при перекосе (skew) по user_id при JOIN таблиц транзакций и пользователей? Как выбрать оптимальный ключ распределения?

Middle
wb
4

Чем отличается RANK от DENSE_RANK?

Middle
AstonAston
4

Что такое нормализация и ER-модель, зачем они нужны?

Senior
ООО Блейз Аналитикс
4

[имя] рассказал о своем опыте работы с различными СУБД, насколько глубоко приходилось разбираться в оптимизации и внутренностях.

Senior
ООО Блейз Аналитикс
4

def extract_from_s3(**kwargs): df = pd.read_csv("s3://my-bucket/data/transactions_{}.csv".format(datetime.now().strftime("%Y-%m-%d"))) kwargs["ti"].xcom_push(key="df", value=df.to_dict()) def load_to_raw_table(**kwargs): df = pd.DataFrame(kwargs["ti"].xcom_pull(task_ids="extract", key="df")) rows = [tuple(r) for r in df[["transaction_id", "user_id", "amount", "created_at"]].to_numpy()] CLICKHOUSE_CLIENT.execute( "INSERT INTO raw.transactions (transaction_id, user_id, amount, created_at) VALUES", rows ) def build_aggregate_view(): query = """ INSERT INTO datamarts.daily_revenue_per_country SELECT toDate(r.created_at) as event_date, u.country, sum(r.amount) as total_revenue FROM raw.transactions r LEFT JOIN core.userMetadata u ON r.user_id = u.UserId WHERE toDate(r.created_at) = '{}' GROUP BY event_date, u.country """.format(datetime.now().strftime("%Y-%m-%d")) CLICKHOUSE_CLIENT.execute(query) transactions_sensor = S3KeySensor( task_id="transactions_sensor", bucket_key="data/transactions_{}.csv".format(datetime.now().strftime("%Y-%m-%d")), bucket_name="my-bucket", aws_conn_id="aws_default", timeout=600, poke_interval=30, mode="poke" ) extract = PythonOperator( task_id="extract", python_callable=extract_from_s3, provide_context=True ) load = PythonOperator( task_id="load", python_callable=load_to_raw_table, provide_context=True ) aggregate = PythonOperator( task_id="aggregate", python_callable=build_aggregate_view ) transactions_sensor >> extract >> load >> aggregate

Middle
wb
4

Что такое журнал транзакций (WAL) в СУБД и зачем он нужен?

Senior
ООО Блейз Аналитикс
4

Есть ли ещё механизмы управления shuffle кроме coalesce/repartition?

Senior
ООО Блейз Аналитикс
4

Работал ли ты с оконными функциями? Какие виды оконных функций ты знаешь?

Middle
AstonAston
4

from interview.utils import get_clickhouse_client from airflow import DAG from airflow.operators.python import PythonOperator from airflow.sensors.external_task import ExternalTaskSensor from datetime import datetime import pandas as pd import clickhouse_driver import os CLICKHOUSE_CLIENT = get_clickhouse_client() default_args = { "start_date": datetime(2024, 1, 1) } with DAG( dag_id="datamarts.daily_revenue_per_country", default_args=default_args, schedule_interval="@daily", catchup=False ) as dag: transactions_sensor = S3KeySensor( task_id="transactions_sensor", bucket_key="data/transactions_{}.csv".format(datetime.now().strftime("%Y-%m-%d")), bucket_name="my-bucket", aws_conn_id="aws_default", timeout=600, poke_interval=30, mode="poke" ) def extract_from_s3(**kwargs): df = pd.read_csv("s3://my-bucket/data/transactions_{}.csv".format(datetime.now().strftime("%Y-%m-%d"))) kwargs["ti"].xcom_push(key="df", value=df.to_dict()) def load_to_raw_table(**kwargs): df = pd.DataFrame(kwargs["ti"].xcom_pull(task_ids="extract", key="df")) rows = [tuple(r) for r in df[["transaction_id", "user_id", "amount", "created_at"]].to_numpy()] CLICKHOUSE_CLIENT.execute( ... )

Middle
wb
4

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

Senior
ООО Блейз Аналитикс
4

Как работать с партициями через coalesce и repartition?

Senior
ООО Блейз Аналитикс
4

Как связаны сортировка внутри оконной функции и итоговая сортировка ORDER BY в запросе?

Senior
ООО Блейз Аналитикс
4

Как ты понимаешь концепцию ключей в таблицах — для чего это нужно?

Middle
Леман про
4

Какая алгоритмическая сложность получения элемента по ключу из словаря (dict) в Python?

Middle
МТСМТС
4

Знакомы ли с CTE (common table expressions)? Приведите пример использования.

Senior
ООО Блейз Аналитикс
4

Расскажи про реляционные базы данных в целом — что это такое?

Middle
Леман про
4
/24