Data Engineer
რა არის HDFS-ში მონაცემების ბლოკებად დაყოფის აზრი?
შეკვეთის საკითხში ჩვენ შეგვიძლია ვნახოთ, რა ხდება მონაცემებთან, მათ შორის რა ტიპის ჯოინები — რა ტიპის ჯოინებს ჩვენ შეგვიძლია იქ დავინახოთ?
მომხმარებელთა აქტივობის ანალიზი რეკლამების კამპანიებში კომპანია აკონტროლებს მოვლენებს, რომლებიც დაკავშირებულია რეკლამების კამპანიებთან. შესასვლელი ცხრილები: • campaigns — რეკლამების კამპანიების სია, მათ იდენტიფიკატორებთან და სახელწოდებებთან; • events — მომხმარებლების მოვლენები კამპანიების მიხედვით, მათ შორის მოვლენების ტიპი (მაგალითად, 'click' (კლიკი რეკლამაზე)) და დრო. საჭიროა თითოეული რეკლამების კამპანიისთვის ანგარიშის შექმნა შემდეგი მაჩვენებლებით: • საერთო მოვლენების რაოდენობა. • უნიკალური მომხმარებლების რაოდენობა, რომლებმაც განახორციელეს მოვლენები. • კამპანიის პირველი და ბოლო მოვლენების დრო. • კამპანიის რეიტინგი საერთო მოვლენების რაოდენობის მიხედვით კლებადობით. რეიტინგი — რიცხვი, რომელიც მიენიჭება თითოეულ ხაზს შედეგების ნაკრებში მონაცემების მითითებულ წესზე დაყრდნობით. თუ ორი ან მეტი ხაზი აქვს ერთნაირი მნიშვნელობა, მათ მიენიჭებათ ერთნაირი რეიტინგი, მაგრამ შემდეგი რეიტინგი გამოტოვებულია. შესაბამისი კამპანიები, რომელთაც ჰქონდათ მოვლენები, ანგარიშში შედიან: მოვლენების გარეშე კამპანიები არ განიხილება. საბოლოო ანგარიში უნდა იყოს პირველ რიგში რეიტინგით ზრდადობით, შემდეგ კი campaign_name-ის მიხედვით ალფავიტურად. შესასვლელი ფორმატი • campaign_name (string) — რეკლამების კამპანიის სახელი • start_date (timestamp) — კამპანიის დაწყების დრო • end_date (timestamp) — კამპანიის დასრულების დრო მონაცემთა ცხრილი: • event_id (int) — უნიკალური იდენტიფიკატორი • user_id (int) — უნიკალური მომხმარებლის იდენტიფიკატორი, რომელმაც განახორციელა მოვლენა • campaign_id (int) — კამპანიის უნიკალური იდენტიფიკატორი • event_type (string) — მოვლენის ტიპი, მაგალითად 'click' (კლიკი) ან 'conversion' (გადამოწმება — წარმატებული მოქმედება, მაგალითად, შეძენა) • event_time (timestamp) — მოვლენის შესრულების დრო მონაცემები არ შეიცავს გამოტოვებებს ან არასწორ მნიშვნელობებს. გამოსავლის ფორმატი საკითხი უნდა დააბრუნოს ცხრილი შემდეგ ველებით: • campaign_name (string) — რეკლამების სახელი • total_events (int) — საერთო მოვლენების რაოდენობა • unique_users (int) — უნიკალური მომხმარებლების რაოდენობა, რომლებმაც განახორციელეს მოვლენები • first_event_time (timestamp) — პირველი მოვლენის დრო • last_event_time (timestamp) — ბოლო მოვლენის დრო • campaign_rank (int) — კამპანიის რეიტინგი საერთო მოვლენების რაოდენობის მიხედვით კლებადობით მონაცემები უნდა იყოს რეიტინგით ზრდადობით, შემდეგ კი campaign_name-ის მიხედვით ალფავიტურად.
რა მეთოდები არსებობს მონაცემების წაშლისთვის ClickHouse-ში?
Python-ში გენერატორებსა და სიაებს შორის რა განსხვავებაა?
რატომ არ გამოიყენებს შემდეგი შეკითხვა ინდექსს, თუ records ცხრილში (id) შექმნილია ჩვეულებრივი B-Tree ინდექსი? select * from records where id % 2 = 0 - Id-ისთვის საჭიროა GIN ტიპის ინდექსი - ინდექსები არ მუშაობენ WHERE-ში გამოთვლებთან - % არის შედარების ოპერაცია, არა ფილტრაცია - limit და offset აუცილებელია ინდექსით ოპტიმიზაციისთვის - შეკითხვა მიმართავს რიცხვობრივ ველს, არა ტექსტს
საფასური ბუქინგების სია შექმენით შეკითხვა როგორ შეგიძლიათ შექმნათ სია [ტელეფონი] დღის ბუქინგების, რომლებიც წევრის (ან სტუმრის)თვის 30 დოლარზე მეტია? გახსოვდეთ, რომ სტუმრებს აქვთ განსხვავებული ხარჯები წევრებთან შედარებით (ჩაწერილი ხარჯები არის ნახევარ საათზე 'სლოტი'), და სტუმრის მომხმარებელი ყოველთვის არის ID 0. ჩართეთ თქვენს გამოყვანაში დაწესებულების სახელი, წევრის სახელი ერთ სვეტად ფორმატირებული და ხარჯი. დაალაგეთ კლებადობით ხარჯის მიხედვით და არ გამოიყენოთ ქვესაკვანძო სია.
რას გსურთ ჩვენი გუნდში გაკეთება?
მოცემულია ნულებისა და ერთების სტრიქონი. გთხოვთ დაწეროთ ფუნქცია func(), რომელიც დააბრუნებს ერთების მაქსიმალურ რაოდენობას. მაგალითად: func("010111011") -> 3
რა არის მკვდარი ხაზები მონაცემთა ბაზაში?
-- საწყისი stretch ცხრილი -- აუცილებელია NULL მნიშვნელობების შევსება წინამორბედ (არ NULL) მნიშვნელობით id-ის მიხედვით - ქვემოთ გადაფარვა 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 სვეტით, რათა მიიღოთ სასურველი ცხრილი SELECT id, ttime, COALESCE(val, LAST_VALUE(val) OVER(PARTITION BY id ORDER BY ttime)) as val FROM stretch
Iceberg — ეს არის ძრავა, რომელიც საშუალებას აძლევს S3-ს გახდეს მონაცემთა ბაზა, ის אפילו აკმაყოფილებს ACID-ს. რა არის მისი ნაკლი?
Greenplum-ში ACID დაცულია?
რა ხდება, როდესაც ერთ ნოდში Postgres-ის შეკითხვები პარალელურად მიმდინარეობს?
როგორ შევხედოთ Oracle-ში სარეკლამო გეგმის შესრულების გეგმას? რა განსხვავებაა EXPLAIN PLAN-ისა და EXPLAIN ANALYZE-ის შორის?
რა სახის ფიზიკური კავშირი არსებობს ცხრილებს შორის (Hash Join, Merge Join, Nested Loop)?
რომელ ფიზიკურ JOIN-ებს იცნობთ?
რამდენად კარგად იცნობ Python-ს?
როგორ ხედავთ თქვენს მონაწილეობას პროექტში აღწერილი გუნდის შემადგენლობის გათვალისწინებით?
GIL (Global Interpreter Lock) რა არის და როგორ მუშაობს Python-ში?