Data Engineer
Ի՞նչ գործընթացներ են սկսվում, երբ մենք հեռացնում կամ փոխում ենք գրառումները ClickHouse-ում:
Ի՞նչ է ռեֆակտորինգի և օպտիմիզացիայի տարբերությունը։
Երբ մեզ տվյալների պահեստավորումը անհրաժեշտ չէ?
Kafka գործը: արտադրողը ուղարկում է ապրանքի գնի փոփոխությունները (200 ռուբլի, ապա 300 ռուբլի), սպառողը կրկնօրինակում է 3 պոդում: Կլինեն արդյոք խնդիրներ նախնական կոնֆիգուրացիայում?
Դու աշխատե՞լ ես պատուհանի ֆունկցիաների հետ: Ի՞նչ տեսակի պատուհանի ֆունկցիաներ գիտես։
Մենք մուտքագրում ենք մետադատությունները որպես մուտք, և նա հիմք ընդունելով այդ մետադատությունները՝ ստեղծում է հոսք — ինչպես դա կօգնի արագ տեղափոխել առկա հոսքերը հին համակարգերից դեպի պլանավորվածները?
Ի՞նչ տիպի տիպավորում է օգտագործվում Python-ում՝ ստատիկ կամ դինամիկ։
Ինչպես վարվել, երբ user_id-ի վրա կա skew (շեղում)՝ երբ միանում եք գործարքների և օգտվողների աղյուսակներին: Ինչպե՞ս ընտրել օպտիմալ բաշխման բանալին:
Անվաճարկների վերլուծություն ապրանքային կատեգորիաներով մանրածախ խանութում Դուք աշխատում եք վերլուծաբանի որպես մանրածախ խանութում։ Ձեր խնդիրն է կազմել վաճառքների հաշվետվություն ապրանքային կատեգորիաներով՝ հաշվարկներով՝ • ընդհանուր վաճառված միավորների քանակը կատեգորիայի մեջ (total_units_sold); • ընդհանուր եկամուտը կատեգորիայի համար՝ հաշվի առնելով զեղչերը, որտեղ զեղչը կիրառվում է որպես unit_price × units_sold × (1 − discount/100): Եթե զեղչը բացակայում է (NULL), հաշվի առեք զեղչը որպես 0%։ Ապահովեք երկու տասնորդական նշանով հստակեցում; • միջին վաճառված միավորների քանակը մեկ վաճառքի համար (avg_units_per_sale), հստակեցված երկու տասնորդական նշանով; • զեղչով չվաճառված վաճառքների մասնաբաժինը (no_discount_share) — NULL կամ 0% զեղչով վաճառքների քանակը բաժանված ընդհանուր վաճառքների քանակին կատեգորիայի մեջ, հստակեցված երեք տասնորդական նշանով: Նախ արդյունքը դասավորեք նվազման կարգով total_revenue-ի, ապա աճման կարգով միջին միավորների քանակի (avg_units_per_sale), և վերջում՝ կատեգորիայի անվան ըստ ալֆավիթի: Ներմուծման ձևաչափ Վաճառքների աղյուսակ՝ sales: • sale_id (int) — վաճառքի եզակի նույնականացուցիչ • product_id (int) — ապրանքի նույնականացուցիչ • category (text) — ապրանքի կատեգորիա • sale_date (timestamp) — վաճառքի ամսաթիվ և ժամանակ • units_sold (int) — վաճառված միավորների քանակ • unit_price (numeric) — մեկ միավորի գին • discount (numeric) — ապրանքի զեղչը տոկոսներով, կարող է լինել NULL Զեղչի սյունակը կարող է պարունակել բացթողումներ: Ելքային ձևաչափ Հարցը պետք է վերադարձնի աղյուսակ՝ հետևյալ դաշտերով՝ • category (text) — ապրանքի կատեգորիա • total_units_sold (int) — ընդհանուր վաճառված միավորների քանակը • total_revenue (numeric) — ընդհանուր եկամուտը՝ հաշվի առնելով զեղչերը, հստակեցված երկու տասնորդական նշանով • avg_units_per_sale (numeric) — միջին միավորների քանակը մեկ պատվերի մեջ, հստակեցված երկու տասնորդական նշանով • no_discount_share (numeric) — զեղչով չվաճառված վաճառքների մասնաբաժինը, հստակեցված երեք տասնորդական նշանով Արդյունքը դասավորեք սկզբում՝ նվազման կարգով total_revenue-ի, հետո՝ աճման կարգով միջին միավորների քանակի, և վերջում՝ կատեգորիայի անվան ըստ ալֆավիթի։
Պահոցը կառուցվել է Data Vault սխեմայի համաձայն — դու էլ զարգացար, պահպանում էիր? Հավաքածու, հղումներ ձեռքով ավելացնո՞ւմ էիր։
Ինչպես ընտրել ճիշտ շարդինգի բանալի՝ տվյալների հավասար բաշխման համար։
Ինչպե՞ս կվարվեիք Materialized View շղթայի հետ՝ միջնորդական ReplacingMergeTree աղյուսակի միջոցով՝ ճիշտ կերպով լրացնելու համար տվյալները, որոնք արդեն գոյություն ունեն նախքան նոր MV-ի գործարկումը։
Ինչպե՞ս եք հասկանում բանալիների հասկացությունը աղյուսակներում — ինչու է դա անհրաժեշտ?
Ինչպես բեռնել տվյալները Kafka-ից ClickHouse՝ ռեալ ժամանակի հաշվետվությունների համար՝ streaming-ի միջոցով:
Ի՞նչ է ClickHouse-ում հիմնական բանալի և ինչպե՞ս է այն տարբերվում սովորական տվյալների բազաների հիմնական բանալուց։
Ի՞նչն է տարբերությունը docker run և docker exec հրամանների միջև։
Ի՞նչ SQL օպերատորների խմբեր գիտեք: Դրանք ինչին են պատկանում?
Ի՞նչ է Catalyst օպտիմիզատորը Spark-ում և ինչ կոնկրետ օպտիմիզացիաներ է իրականացնում (օրինակ, predicate pushdown):
Ի՞նչ է ալգորիթմական բարդությունը Python-ում բառարանի (dict) միջոցով տարր ստանալու համար։
Ինչպե՞ս համեմատել սկզբնական («կենդանի») և նպատակային աղյուսակը, եթե աղբյուրը մշտապես փոխվում է։