Data Engineer
Bize çok hızlı akışlar oluşturmayı sağlayan sözleşmeler ve parametreler giriş olarak verildiğinde çalışan bir mekanizma olan pipeline motoruna ihtiyacımız var. Bunu üst seviyede nasıl gerçekleştirirdin?
Greenplum'ta ACID uyuluyor mu?
Okuma hızı dışında ACID'in hangi artı ve eksileri sayılabilir?
Bu gerçek zamanlı, Kafka ve ClickHouse Spark arasında nasıl entegre edilir?
Sıfır ve birlerden oluşan bir dize verildiğinde. max ardışık birleri döndürecek bir fonksiyon func() yazmak gerekiyor. Örneğin: func("010111011") -> 3
Iceberg, S3'ü bir veritabanına dönüştürmenizi sağlayan bir motor, hatta ACID kurallarına da uyuyor. Eksisi nedir?
ClickHouse'da veri silmenin hangi yöntemleri vardır?
Langchain kütüphanesi ile çalışma deneyiminiz var mı? Onun yardımıyla hangi görevleri çözdünüz?
HDFS'de verileri bloklara ayırmanın amacı nedir?
Spark hakkında daha detaylı anlat: ne tam olarak gerçekleştirildi, hangi yöntemler kullanıldı
Veritabanında ölü satırlar nedir?
Tanımlanan ekip yapısını dikkate alarak projedeki katılımınızı nasıl görüyorsunuz?
Reklam kampanyalarında kullanıcı etkinliği analizi Şirket, reklam kampanyalarıyla ilgili olayların kaydını tutmaktadır. İki tablo sağlanmıştır: • campaigns — reklam kampanyalarının listesi, kimlikleri ve isimleri ile; • events — kampanyalara göre kullanıcı olayları, olay türü (örneğin 'click' (tıklama)) ve zaman bilgisi ile. Her kampanya için aşağıdaki göstergelerle bir rapor oluşturulması gerekmektedir: • Toplam olay sayısı. • Olayları gerçekleştiren benzersiz kullanıcı sayısı. • Kampanya başına ilk ve son olay zamanı. • Toplam olay sayısına göre azalan sırayla kampanya sıralaması. Sıralama, sonuç kümesinde her satıra verilen bir sayıdır. Eğer iki veya daha fazla satır aynı değere sahipse, aynı sıralamayı alırlar, ancak sonraki sıralama atlanır. Sadece olayları olan kampanyalar rapora dahil edilmelidir: olay olmayan kampanyalar dikkate alınmaz. Son rapor, önce kampanya sıralamasına göre artan sırayla, ardından campaign_name'e göre alfabetik sırayla sıralanmalıdır. Giriş formatı • campaign_name (string) — reklam kampanyasının adı • start_date (timestamp) — kampanyanın başlama tarihi ve saati • end_date (timestamp) — kampanyanın bitiş tarihi ve saati events tablosu: • event_id (int) — olayın benzersiz kimliği • user_id (int) — olayı gerçekleştiren kullanıcının benzersiz kimliği • campaign_id (int) — kampanyanın benzersiz kimliği • event_type (string) — olay türü, örneğin 'click' veya 'conversion' • event_time (timestamp) — olayın tarihi ve saati Veriler eksik veya yanlış değer içermemektedir. Çıktı formatı Sorgu, aşağıdaki alanları sırasıyla içeren bir tablo döndürmelidir: • campaign_name (string) — reklam kampanyasının adı • total_events (int) — kampanyayla ilişkili toplam olay sayısı • unique_users (int) — olayları gerçekleştiren benzersiz kullanıcı sayısı • first_event_time (timestamp) — kampanyanın ilk olayı tarihi ve saati • last_event_time (timestamp) — kampanyanın son olayı tarihi ve saati • campaign_rank (int) — toplam olay sayısına göre kampanya sıralaması Verileri, kampanya sıralamasına göre artan sırayla ve ardından campaign_name'e göre alfabetik sırayla sıralayın.
Neden sonraki sorgu, records tablosunda id üzerinde normal bir B-Tree indeksi oluşturulmuşsa indeks kullanmayacaktır? select * from records where id % 2 = 0 - id için GIN tipi bir indeks gerekir - İndeksler WHERE'deki ifadelerle çalışmaz - % karşılaştırma işlemi, filtreleme değil - limit ve offset indeks optimizasyonu için zorunludur - Sorgu sayısal bir alana, metin değil
Airflow'da hangi operatörleri kullandınız? Airflow üzerinden dbt ile nasıl etkileşim kurdunuz?
Sorgu açısından, verilerle ne olduğunu görebiliriz, hangi tür join'lar — orada hangi tür join'lar görebileceğimizi?
-- Orijinal stretch tablosu -- id bazında NULL olmayan önceki değerle NULL'leri doldurmak gerekiyor - aşağı doğru doldurma işlemi id | ttime | val ---|-------|----- 1 | 07:30 | NULL 1 | 09:21 | 10 1 | 13:53 | NULL 1 | 16:12 | NULL 2 | 09:42 | 133 2 | 15:20 | NULL 2 | 21:33 | NULL 3 | 08:01 | NULL 3 | 11:41 | 8 3 | 14:23 | NULL 3 | 16:17 | NULL 3 | 19:54 | 2 4 | 13:10 | 312 4 | 14:42 | NULL 4 | 16:31 | 7 4 | 17:44 | NULL id | ttime | val ---|-------|----- 1 | 07:30 | NULL 1 | 09:21 | 10 1 | 13:53 | 10 1 | 16:12 | 10 2 | 09:42 | 133 2 | 15:20 | 133 2 | 21:33 | 133 3 | 08:01 | NULL 3 | 11:41 | 8 3 | 14:23 | 8 3 | 16:17 | 8 3 | 19:54 | 2 4 | 13:10 | 312 4 | 14:42 | 312 4 | 16:31 | 7 4 | 17:44 | 7 -- SQL sorgusu ile istenilen tabloyu almak SELECT id, ttime, COALESCE(val, LAST_VALUE(val) OVER(PARTITION BY id ORDER BY ttime)) as val FROM stretch
GIL (Global Interpreter Lock) nedir?
Python hakkında ne kadar bilginiz var?
Oracle'da sorgu yürütme planını nasıl görebilirim? EXPLAIN PLAN ile EXPLAIN ANALYZE arasındaki fark nedir?