Data Engineer
Има ли случаи на взаимодействие с релационни бази данни?
Разкажете за партиционирането в Oracle: за какво се използва и какви видове има?
[име] попита: Полето 'намериха ли полети' има само две стойности (да/не). Как е по-добре да го представим в ClickHouse? Какъв тип данни се използва вътрешно за Bool?
Работили ли сте с функции на прозорец? Какви видове функции на прозорец знаете?
Как организирате проектите си? Пишете README или нещо друго?
С Kafka няма нищо трудно, важното е да обработите данните — какви нюанси трябва да имате предвид?
В кои случаи да използвате B-дерево и hash индекси в PostgreSQL?
Създадена е специална последователност с името even_sequence, която генерира само четни числа. Какво трябва да се постави на мястото на [...], така че ако стойността на even_column не е указана при вмъкване, да се взема от even_sequence? create table some_table( even_column [...] ); integer computed as nextval('even_sequence') integer generated always as identity (start with 2 increment by 2) integer default nextval('even_sequence') integer unique default nextval('even_sequence') integer generated by even_sequence’
от interview.utils импортирайте get_clickhouse_client от airflow импортирайте DAG от airflow.operators.python импортирайте PythonOperator от airflow.sensors.external_task импортирайте ExternalTaskSensor от datetime импортирайте datetime импортирайте pandas като pd импортирайте clickhouse_driver импортирайте os CLICKHOUSE_CLIENT = get_clickhouse_client() default_args = { "start_date": datetime(2024, 1, 1) } с DAG( dag_id="datamarts.daily_revenue_per_country", default_args=default_args, schedule_interval="@daily", catchup=False ) като 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( ... )
Избройте последователността на изпълнение на операциите в SQL заявка с SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT от първата до последната.
Как оптимизираха таблиците и заявките: партиции, индекси, логика на избор?
Какво е план за заявки? За какво са нужни?
Споменахте процесите Docker, можете ли да разкажете повече за това как е организирано при вас?
Какви са характеристиките на използването на XCom в Airflow?
Складът беше построен по схемата Data Vault — ти също го развиваше, поддържаше ли? Ръчно добавяше хъбове, линкове?
Какви проверки за качество на данните бяха извършени в Data Vault?
В PostgreSQL е необходимо да се оптимизира производителността на транзакциите чрез минимално ниво на изолация, при което: • паралелните транзакции могат да виждат незавършени промени една на друга; • възможни са "мръсни четения" (dirty read). Кой ниво на изолация трябва да се посочи за транзакцията, за да се постигне тази цел? мръсно четене не е възможно в PostgreSQL repeatable read read uncommitted read committed serializable
Използвали ли сте Bridge и PIT таблици в Data Vault? Дайте пример и обяснете предназначението.
Работили ли сте с FTP за получаване на файлове или данни чрез портала?
Как Spark определя дали една таблица е достатъчно 'малка' за broadcast join (горна граница)?