Data Engineer
Quels processus sont lancés lorsque nous supprimons ou modifions des enregistrements dans ClickHouse?
Quelle est la différence entre refactoring et optimisation?
Quand n'avons-nous pas besoin de stockage de données?
Tâche Kafka : le producteur envoie des modifications de prix du produit (200 roubles, puis 300 roubles), le consommateur est répliqué dans 3 pods. Y aura-t-il des problèmes avec la configuration par défaut ?
As-tu travaillé avec des fonctions de fenêtre ? Quels types de fonctions de fenêtre connais-tu ?
Nous fournissons les métadonnées en entrée, et il crée un flux basé sur ces métadonnées — comment cela facilitera-t-il le transfert rapide des flux existants depuis d'anciens systèmes vers le système prévu?
Quel type de typage est utilisé en Python : statique ou dynamique ?
Comment gérer le déséquilibre (skew) sur user_id lors d'un JOIN entre les tables de transactions et d'utilisateurs ? Comment choisir la clé de distribution optimale ?
Analyse des ventes par catégories de produits dans un magasin de détail Vous travaillez en tant qu'analyste dans un magasin de détail. Votre tâche est de créer un rapport de ventes par catégories de produits avec les calculs suivants : • nombre total d'unités vendues dans la catégorie (total_units_sold); • chiffre d'affaires total par catégorie, en tenant compte des remises, où la remise est calculée comme unit_price × units_sold × (1 − discount/100). Si aucune remise (NULL), considérer 0%. Arrondir à deux décimales; • moyenne des unités vendues par vente (avg_units_per_sale), arrondie à deux décimales; • part des ventes sans remise (no_discount_share) — nombre de ventes avec NULL ou 0% de remise, divisé par le nombre total de ventes dans la catégorie, arrondi à trois décimales. Triez d'abord par revenu total (total_revenue) décroissant, puis par moyenne d'unités par vente (avg_units_per_sale) croissant, et enfin par nom de catégorie en ordre alphabétique. Format d'entrée Table sales: • sale_id (int) — identifiant unique de la vente • product_id (int) — identifiant du produit • category (text) — catégorie du produit • sale_date (timestamp) — date et heure de la vente • units_sold (int) — unités vendues • unit_price (numeric) — prix par unité • discount (numeric) — remise en pourcentage, peut être NULL La colonne discount peut contenir des valeurs nulles. Format de sortie La requête doit retourner une table avec les champs dans cet ordre : • category (text) — catégorie du produit • total_units_sold (int) — nombre total d'unités vendues dans la catégorie • total_revenue (numeric) — revenus totaux par catégorie, arrondis à deux décimales • avg_units_per_sale (numeric) — moyenne d'unités par vente, arrondie à deux décimales • no_discount_share (numeric) — part des ventes sans remise (valeur entre 0 et 1), arrondée à trois décimales Les résultats doivent être triés d'abord par total_revenue décroissant, puis par avg_units_per_sale croissant, et enfin par catégorie en ordre alphabétique.
Le stockage a été construit selon le schéma Data Vault — tu l'as également développé, maintenu ? Ajoutais-tu manuellement des hubs, des liens ?
Comment choisir la bonne clé de partition pour une répartition uniforme des données?
Comment procéderiez-vous avec la chaîne de Materialized View via une table intermédiaire ReplacingMergeTree pour remplir correctement les données existantes avant le lancement de la nouvelle MV?
Comment comprends-tu le concept de clés dans les tableaux — à quoi cela sert-il?
Comment charger des données de Kafka vers ClickHouse via streaming pour des rapports en temps réel?
Qu'est-ce qu'une clé primaire dans ClickHouse et en quoi diffère-t-elle d'une clé primaire dans une base de données classique?
Quelle est la différence entre les commandes docker run et docker exec?
Quels groupes d'opérateurs SQL connaissez-vous ? À quoi appartiennent-ils ?
Qu'est-ce que l'optimiseur Catalyst dans Spark et quels exemples spécifiques d'optimisations effectue-t-il (par exemple, predicate pushdown) ?
Quelle est la complexité algorithmique pour obtenir un élément par clé dans un dictionnaire (dict) en Python?
Comment comparer la table source ("live") et la table cible si la source change constamment?