Data Engineer
Comment peut-on supprimer des données de ClickHouse?
Comparez les approches ETL et ELT : quelle est la différence et quand chacune d'elles est-elle utilisée ?
Quelles sont les chaînes mortes dans la base de données?
Quelle était votre architecture sur le projet ? DWH ou autre chose ?
Quels requêtes SQL écris-tu : des vérifications simples ou des scripts complexes pour les vitrines ?
À quoi servent les index, quels sont leurs avantages et inconvénients?
Une séquence spéciale, appelée even_sequence, a été créée pour générer uniquement des nombres pairs. Que doit-on mettre à la place de [...], pour que si aucune valeur n’est spécifiée pour even_column lors de l’insertion, la valeur provienne de even_sequence? create table some_table( even_column [...] ); integer computed as nextval('even_sequence') integer generated always as identity (start with 2 increment by 2) integer default nextval('even_sequence') integer unique default nextval('even_sequence') integer generated by even_sequence’
Ont-ils utilisé un seul bucket S3 ou plusieurs ? Selon quel principe ?
Avez-vous de l'expérience dans l'optimisation des tâches Spark ? Pouvez-vous donner un exemple concret ?
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 faire une extension vers le haut (remplir NULL avec la valeur non nulle précédente dans la direction inverse) ?
La méthode de comparaison des hachages des enregistrements a-t-elle été utilisée pour calculer la différence entre la source et la table cible?
Analyse de l’activité des utilisateurs dans les campagnes publicitaires L’entreprise tient un registre des événements liés aux campagnes publicitaires. Deux tableaux sont fournis: • campaigns — liste des campagnes publicitaires avec leurs identifiants et noms; • events — événements des utilisateurs par campagne avec des informations sur le type d’événement (par exemple 'click' (clic sur la publicité)) et le temps. Il est nécessaire de générer un rapport pour chaque campagne avec les indicateurs suivants: • Nombre total d’événements. • Nombre d’utilisateurs uniques ayant effectué des événements. • Temps du premier et du dernier événement par campagne. • Rang de la campagne par ordre décroissant du nombre total d’événements. Le rang est un nombre attribué à chaque ligne dans le jeu de résultats basé sur l’ordre des données. Si deux ou plusieurs lignes ont la même valeur, elles reçoivent le même rang, mais le rang suivant est sauté. Le rapport doit inclure uniquement les campagnes ayant eu des événements : les campagnes sans événements ne sont pas prises en compte. Le rapport final doit être trié d’abord par le rang de la campagne en ordre croissant, puis par campaign_name en ordre alphabétique. Format d’entrée • campaign_name (string) — nom de la campagne publicitaire • start_date (timestamp) — date et heure de début de la campagne • end_date (timestamp) — date et heure de fin de la campagne Tableau events: • event_id (int) — identifiant unique de l’événement • user_id (int) — identifiant unique de l’utilisateur ayant effectué l’événement • campaign_id (int) — identifiant unique de la campagne • event_type (string) — type d’événement, par exemple 'click' ou 'conversion' • event_time (timestamp) — date et heure de l’événement Les données ne contiennent pas de valeurs manquantes ou incorrectes. Format de sortie La requête doit retourner un tableau avec les champs dans cet ordre: • campaign_name (string) — nom de la campagne publicitaire • total_events (int) — nombre total d’événements liés à la campagne • unique_users (int) — nombre d’utilisateurs uniques ayant effectué des événements • first_event_time (timestamp) — date et heure du premier événement de la campagne • last_event_time (timestamp) — date et heure du dernier événement de la campagne • campaign_rank (int) — rang de la campagne par ordre décroissant du nombre total d’événements Trier les données par le rang de la campagne en ordre croissant, puis par campaign_name en ordre alphabétique.
Comment ne pas tuer Jupyter ou Pandas par mémoire?
Qu'est-ce que la statistique dans le contexte des SGBD et de l'optimisation des requêtes?
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 ?
Expliquez de manière générale comment l'architecture de Spark est organisée : quels composants existent et comment ils interagissent lors de l'exécution d'une requête SQL.
Comment connaître le plan réel d'exécution d'une requête dans Oracle?
Quels types de jointures physiques de tables existent (Hash Join, Merge Join, Nested Loop) ?
Nous avons besoin d'un moteur de pipeline — un mécanisme qui permet de créer très rapidement des flux en fournissant des contrats et des paramètres en entrée. Comment le réaliserais-tu à un niveau supérieur?