Data Engineer
Portal vasitəsilə fayllar və ya məlumatlar əldə etmək üçün FTP ilə işlədinizmi?
Ekspert kimi fərdi işləməyi və ya inkişaf etdirici komandası ilə işləməyi üstün tutursan?
Partitionlama nədir? Sharding nədir? Replikasiya nədir?
Bildirişlər cədvəlində status sahəsi var və onun dəyərləri: 'sent', 'delivered', 'read'. Hansı sorğu düzgündür? select * from notifications where status like '%sent%' order by created_at desc limit 5 select * from notifications where status = 'read' order by created_at desc limit 5 select * from notifications order by status desc limit 5 select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5 select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5
DBT-də buraxılışlar necə orkestrlənir? Airflow istifadə edirsiniz?
Hansı məlumat mənbələri ilə işləyə bildiniz? Mənbələrlə qarşılıqlı əlaqə necə baş verdi?
Vəzifə #3 Müştəriləri tapmaq lazımdır ki, onların sifarişləri arasındakı fərq 60 gündən çoxdur. Bu müştərilər üçün ən böyük fərqi (gap_days) göstərin. Sifarişlər cədvəli: | order_id | customer_id | order_dt | |----------|-------------|------------| | 1 | 1 | [phone] | | 2 | 1 | [phone] | | 3 | 1 | [phone] | | 4 | 1 | [phone] | | 5 | 2 | [phone] | | 6 | 2 | [phone] | | 7 | 3 | [phone] | Nəticə: | customer_id | gap_days | |-------------|----------| | 1 | 123 | | 2 | 120 |
Aşağıdakı sorğunun düzgünlüyü haqqında nə deyə bilərik? select * from sessions where ended_at is null and status != 'pending';
Logistika şirkəti üçün hesabat Siz logistika şirkətində anbarlardakı əməliyyatları qeyd edən analistsiniz. Hər anbarın effektivliyi haqqında hesabat hazırlamalısınız. Hər anbar üçün hesablayın: • ümumi əməliyyatların sayı (count_operations); • anbarın işlənmiş ümumi malların sayı (sum_quantity); • yalnız göstərilən vaxtla (NULL olmayan) əməliyyatlar nəzərə alınaraq, orta işləmə vaxtı (avg_processing_time), tam ədədə yuvarlaqlaşdırılmış; • bir əməliyyatda işlənmiş maksimum və minimum malların sayı (max_quantity, min_quantity); • hər bir növ əməliyyatların sayı («təchizat», «göndərmə», «köçürmə») ayrıca sütunlarda: supply_operations, shipment_operations, transfer_operations. Toplam əməliyyat sayı 2-dən çox olan və orta işləmə vaxtı 60 dəqiqədən çox olmayan anbarları filtrləyin. Nəticəni anbar ID-yə görə artan sırayla sıralayın. Daxil etmə formatı Əməliyyatlar cədvəli: • operation_id (int) — əməliyyatın unikal identifikatoru • warehouse_id (int) — anbar identifikatoru • operation_type (text) — əməliyyat növü: «təchizat», «göndərmə», «köçürmə»
[ad] soruşdu: Klasterin bütün düyünlərində məlumatların aktual qalması üçün cədvəl motoruna nə əlavə edilməlidir?
Oracle-də bölmələmə haqqında danışın: nə üçün istifadə olunur və hansı növləri var?
[ad] soruşdu: 'Uçuşlar tapıldı mı' sahəsi yalnız iki dəyərə malikdir (bəli/xeyr). Bunu ClickHouse-da necə daha yaxşı təmsil etmək olar? Bool üçün daxili olaraq hansı məlumat tipi istifadə olunur?
Məlumatların keyfiyyət hadisələri ilə işlədinizmi?
PostgreSQL-də B-ağac və hash indekslərini hansı hallarda istifadə etmək lazımdır?
Python-da dekoratorlarla işlədinizmi? Bunlar nədir və harada tətbiq olunur?
Sorğu planı nədir? Nəyə görə lazımdır?
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
Airflow-da XCom istifadə xüsusiyyətləri hansılardır?
ROWS BETWEEN və RANGE BETWEEN arasındakı fərq nədir?
İndeks nədir? Klasterləşdirilmiş indeks ilə klasterləşdirilməmiş indeks arasındakı fərq nədir?