# Guide d’entretien — Data Analyst, Power BI, DAX et Supply Chain

**Candidat :** Abderrahmane Mrabti  
**Profil CV :** Consultant Business Intelligence expérimenté en SQL, ETL, Data Warehouses, Data Marts, reporting et KPI. Power BI et DAX figurent dans ses compétences. Les missions chez Auchan et Renault-Nissan sont les plus proches du contexte retail, industriel et supply chain.

## Objectif

Le guide sépare :

1. les questions techniques directes pour vérifier les connaissances ;
2. cinq scénarios pratiques pour évaluer l’application de ces connaissances.

Le CV démontre une forte expérience BI, SQL et ETL, mais détaille peu les modèles Power BI et les mesures DAX personnellement réalisés. Les premières questions servent donc aussi à confirmer son niveau réel.

## Format recommandé — 80 à 90 minutes

- 10 min : validation du parcours
- 20 min : questions directes Power BI
- 20 min : questions directes DAX
- 10 min : connaissances supply chain
- 20 à 30 min : cinq scénarios pratiques

## 1. Validation directe du parcours

### Q1. Expérience Power BI

**FR :** Dans quelle mission avez-vous utilisé Power BI le plus intensivement et qu’avez-vous personnellement construit ?

**EN:** In which assignment did you use Power BI most extensively, and what did you personally build?

**Réponse attendue :**

- nom du projet ou de l’entreprise ;
- sources, modèle, rapports et mesures réalisés ;
- responsabilités personnelles clairement séparées de celles de l’équipe ;
- utilisateurs et résultat métier.

### Q2. Expérience DAX

**FR :** Citez trois mesures DAX que vous avez réellement développées et expliquez leur objectif métier.

**EN:** Name three DAX measures you actually developed and explain their business purpose.

**Réponse attendue :**

- mesures concrètes et non simples colonnes importées ;
- formule ou logique expliquée ;
- contexte métier et résultat attendu ;
- difficulté éventuelle liée aux filtres, dates ou relations.

### Q3. Expérience la plus proche de la supply chain

**FR :** Entre Auchan et Renault-Nissan, quelle expérience vous a le plus exposé à des données de stock, commande, livraison, coût, qualité ou délai ?

**EN:** Between Auchan and Renault-Nissan, which experience exposed you most to inventory, order, delivery, cost, quality, or lead-time data?

**Réponse attendue :**

- réponse fondée sur une expérience réelle ;
- données et KPI effectivement manipulés ;
- décisions soutenues par l’analyse ;
- aucune exagération d’une responsabilité supply chain absente du CV.

## 2. Questions directes Power BI

### Q4. Power Query et DAX

**FR :** Quelle est la différence entre Power Query et DAX ? Quand utilisez-vous chacun ?

**EN:** What is the difference between Power Query and DAX? When do you use each one?

**Réponse attendue :**

- Power Query prépare et transforme les données avant leur chargement ;
- DAX crée des calculs dans le modèle ;
- transformations stables en amont lorsque possible ;
- mesures dynamiques en DAX selon le contexte du rapport.

### Q5. Schéma en étoile

**FR :** Qu’est-ce qu’un schéma en étoile et pourquoi est-il recommandé dans Power BI ?

**EN:** What is a star schema, and why is it recommended in Power BI?

**Réponse attendue :**

- table de faits entourée de dimensions ;
- granularité clairement définie ;
- relations principalement un-à-plusieurs ;
- modèle plus lisible, performant et prévisible pour DAX.

### Q6. Table de faits et dimension

**FR :** Quelle est la différence entre une table de faits et une table de dimension ?

**EN:** What is the difference between a fact table and a dimension table?

**Réponse attendue :**

- faits : événements ou mesures à une granularité définie ;
- dimensions : axes descriptifs utilisés pour filtrer et regrouper ;
- exemple : lignes de commande comme faits, produits et fournisseurs comme dimensions.

### Q7. Relations et direction de filtre

**FR :** Que signifient la cardinalité et la direction de filtre d’une relation Power BI ? Pourquoi éviter le filtrage bidirectionnel par défaut ?

**EN:** What do relationship cardinality and filter direction mean in Power BI? Why should bidirectional filtering not be the default?

**Réponse attendue :**

- cardinalité : un-à-plusieurs, un-à-un ou plusieurs-à-plusieurs ;
- direction : propagation des filtres entre tables ;
- filtrage bidirectionnel pouvant créer ambiguïtés et résultats difficiles à prévoir ;
- usage seulement lorsqu’il répond à un besoin maîtrisé.

### Q8. Import et DirectQuery

**FR :** Quelle est la différence entre les modes Import et DirectQuery ?

**EN:** What is the difference between Import and DirectQuery modes?

**Réponse attendue :**

- Import charge les données dans le modèle et offre généralement de meilleures performances ;
- DirectQuery interroge la source lors de l’utilisation du rapport ;
- compromis entre fraîcheur, volume, performance et limitations ;
- choix fondé sur le besoin, pas uniquement sur la taille des données.

### Q9. Rafraîchissement et gateway

**FR :** À quoi sert une gateway Power BI et dans quel cas est-elle nécessaire ?

**EN:** What is a Power BI gateway used for, and when is it required?

**Réponse attendue :**

- connexion sécurisée entre Power BI Service et une source non directement accessible dans le cloud ;
- nécessaire notamment pour certaines sources locales ;
- configuration des sources, identifiants et planification ;
- surveillance des échecs de rafraîchissement.

### Q10. Row-Level Security

**FR :** Qu’est-ce que la Row-Level Security et comment la mettez-vous en place ?

**EN:** What is Row-Level Security, and how do you implement it?

**Réponse attendue :**

- limitation des lignes visibles selon l’utilisateur ou son rôle ;
- rôle statique ou sécurité dynamique avec table d’accès ;
- usage possible de `USERPRINCIPALNAME()` ;
- test des rôles avant publication.

### Q11. Optimisation d’un rapport

**FR :** Quels outils et vérifications utilisez-vous pour identifier la cause d’un rapport Power BI lent ?

**EN:** Which tools and checks do you use to identify the cause of a slow Power BI report?

**Réponse attendue :**

- Performance Analyzer ;
- modèle, cardinalité et relations ;
- volume et colonnes inutiles ;
- mesures DAX coûteuses ;
- query folding dans Power Query ;
- nombre de visuels et mode de stockage.

## 3. Questions directes DAX

### Q12. Mesure et colonne calculée

**FR :** Quelle est la différence entre une mesure et une colonne calculée en DAX ?

**EN:** What is the difference between a DAX measure and a calculated column?

**Réponse attendue :**

- colonne calculée évaluée ligne par ligne au rafraîchissement et stockée ;
- mesure évaluée à la demande selon le contexte de filtre ;
- mesure privilégiée pour les agrégations dynamiques ;
- impact mémoire des colonnes calculées.

### Q13. Contexte de ligne et contexte de filtre

**FR :** Définissez le contexte de ligne et le contexte de filtre.

**EN:** Define row context and filter context.

**Réponse attendue :**

- contexte de ligne : ligne courante dans une colonne calculée ou un itérateur ;
- contexte de filtre : filtres provenant du visuel, des segments, des relations ou de DAX ;
- distinction expliquée avec un exemple simple.

### Q14. `CALCULATE`

**FR :** Quel est le rôle de `CALCULATE` en DAX ?

**EN:** What is the role of `CALCULATE` in DAX?

**Réponse attendue :**

- évalue une expression dans un contexte de filtre modifié ;
- peut ajouter, remplacer ou supprimer des filtres ;
- réalise aussi une transition de contexte lorsque nécessaire ;
- fonction centrale pour construire des mesures.

### Q15. `SUM` et `SUMX`

**FR :** Quelle est la différence entre `SUM` et `SUMX` ?

**EN:** What is the difference between `SUM` and `SUMX`?

**Réponse attendue :**

- `SUM` additionne directement une colonne ;
- `SUMX` parcourt une table et évalue une expression pour chaque ligne ;
- exemple : `SUMX(OrderLines, OrderLines[Quantity] * OrderLines[UnitPrice])`.

### Q16. `ALL`, `REMOVEFILTERS` et `ALLSELECTED`

**FR :** Quelle différence faites-vous entre `ALL`, `REMOVEFILTERS` et `ALLSELECTED` ?

**EN:** What is the difference between `ALL`, `REMOVEFILTERS`, and `ALLSELECTED`?

**Réponse attendue :**

- `REMOVEFILTERS` supprime explicitement des filtres ;
- `ALL` peut supprimer des filtres et retourner une table selon son usage ;
- `ALLSELECTED` conserve le contexte de sélection externe pour des totaux visuels ;
- choix adapté au dénominateur recherché.

### Q17. Division sûre

**FR :** Pourquoi utiliser `DIVIDE` plutôt que l’opérateur `/` ?

**EN:** Why use `DIVIDE` instead of the `/` operator?

**Réponse attendue :**

- gestion sûre d’un dénominateur nul ou vide ;
- résultat alternatif facultatif ;
- mesure plus lisible ;
- exemple : `DIVIDE([Delivered Orders], [Total Orders])`.

### Q18. Time intelligence

**FR :** Que faut-il préparer dans le modèle avant d’utiliser correctement les fonctions de time intelligence ?

**EN:** What must be prepared in the model before correctly using time-intelligence functions?

**Réponse attendue :**

- table calendrier continue ;
- colonne de date unique ;
- table marquée comme table de dates lorsque nécessaire ;
- relation correcte avec la table de faits ;
- choix explicite de la date métier analysée.

### Q19. Mesure DAX directe

**FR :** Écrivez une mesure calculant le pourcentage de commandes livrées à l’heure parmi les commandes déjà livrées.

**EN:** Write a measure that calculates the percentage of orders delivered on time among orders already delivered.

**Réponse attendue :**

```DAX
On Time Delivery % =
VAR DeliveredOrders =
    FILTER(
        Orders,
        NOT ISBLANK(Orders[ActualDeliveryDate])
    )
VAR OnTimeOrders =
    FILTER(
        DeliveredOrders,
        Orders[ActualDeliveryDate] <= Orders[PromisedDeliveryDate]
    )
RETURN
    DIVIDE(
        COUNTROWS(OnTimeOrders),
        COUNTROWS(DeliveredOrders)
    )
```

- accepte une variante correcte selon la granularité du modèle ;
- utilise `DISTINCTCOUNT(Orders[OrderID])` si plusieurs lignes représentent une commande ;
- exclut les commandes non livrées du numérateur et du dénominateur.

## 4. Questions directes Supply Chain

### Q20. OTIF

**FR :** Que signifie OTIF et comment le calculez-vous ?

**EN:** What does OTIF mean, and how do you calculate it?

**Réponse attendue :**

- On Time In Full ;
- commandes livrées à la date promise et avec la quantité complète ;
- nombre de commandes OTIF divisé par le nombre de commandes éligibles ;
- règles précises pour tolérance, livraisons partielles et commandes annulées.

### Q21. Lead time et Fill Rate

**FR :** Définissez le lead time et le Fill Rate.

**EN:** Define lead time and Fill Rate.

**Réponse attendue :**

- lead time : durée entre deux événements métier clairement définis, par exemple commande et réception ;
- Fill Rate : quantité satisfaite divisée par quantité demandée ;
- unité, période et exclusions documentées.

### Q22. Rotation et couverture de stock

**FR :** Quelle différence existe-t-il entre la rotation du stock et la couverture de stock ?

**EN:** What is the difference between inventory turnover and inventory coverage?

**Réponse attendue :**

- rotation : fréquence de renouvellement du stock sur une période ;
- couverture : durée pendant laquelle le stock peut répondre à la demande prévue ;
- l’une mesure la vitesse d’écoulement, l’autre l’autonomie ;
- attention à la saisonnalité et à la méthode de valorisation.

## 5. Cinq scénarios pratiques

### Scénario 1. Construire un dashboard fournisseurs

**FR :** Vous recevez les tables Commandes, Lignes de commande, Livraisons et Fournisseurs. Comment construisez-vous dans Power BI un dashboard affichant montant commandé, montant livré, OTIF, retard moyen et les cinq fournisseurs les moins performants ?

**EN:** You receive Orders, Order Lines, Deliveries, and Suppliers tables. How would you build a Power BI dashboard showing ordered amount, delivered amount, OTIF, average delay, and the five worst-performing suppliers?

**Réponse attendue :**

- clarification des définitions métier et de la granularité ;
- schéma en étoile avec dimensions Date et Fournisseur ;
- contrôle des relations et livraisons partielles ;
- mesures explicites ;
- vue globale puis détail par fournisseur, site, produit et période ;
- classement fondé sur une règle métier claire.

### Scénario 2. Montant doublé après une jointure

**FR :** Après avoir relié les commandes aux livraisons, le montant total commandé est doublé dans Power BI. Comment trouvez-vous et corrigez-vous la cause ?

**EN:** After relating orders to deliveries, the total ordered amount is doubled in Power BI. How do you find and fix the cause?

**Réponse attendue :**

- vérification de la granularité de chaque table ;
- détection d’une relation plusieurs-à-plusieurs ou de plusieurs livraisons par ligne ;
- création d’une clé correcte ou agrégation à la bonne granularité ;
- séparation éventuelle des faits Commandes et Livraisons ;
- validation des totaux avec la source.

### Scénario 3. Total DAX incorrect

**FR :** Une mesure donne un résultat correct pour chaque produit, mais le total général semble faux. Que vérifiez-vous ?

**EN:** A measure returns the correct result for each product, but the grand total appears wrong. What do you check?

**Réponse attendue :**

- le total réévalue la mesure dans son propre contexte ;
- vérification de la formule et du résultat métier attendu ;
- distinction entre ratio global et somme des ratios ;
- usage éventuel de `SUMX(VALUES(Product[ProductID]), [Measure])` seulement si le besoin exige la somme des résultats par produit.

### Scénario 4. Échec du rafraîchissement

**FR :** Le rapport fonctionne dans Power BI Desktop, mais son rafraîchissement échoue dans Power BI Service. Quelle est votre démarche ?

**EN:** The report works in Power BI Desktop, but refresh fails in Power BI Service. What is your troubleshooting process?

**Réponse attendue :**

- lecture du message et de l’historique de rafraîchissement ;
- vérification des identifiants et autorisations ;
- vérification de la gateway et de la disponibilité de la source ;
- contrôle des chemins locaux, paramètres et niveaux de confidentialité ;
- test de la requête fautive et nouvelle publication si nécessaire.

### Scénario 5. Stock en hausse et ruptures plus fréquentes

**FR :** Le stock total augmente alors que les ruptures deviennent plus fréquentes. Comment analysez-vous la situation et que présentez-vous au métier ?

**EN:** Total inventory is increasing while stockouts are becoming more frequent. How do you analyze the situation, and what do you present to the business?

**Réponse attendue :**

- segmentation par produit, site, fournisseur et période ;
- identification du surstock lent et du manque sur les références critiques ;
- analyse ABC/XYZ, rotation, couverture, prévisions et délais ;
- contrôle des paramètres de stock de sécurité ;
- causes étayées, limites de l’analyse et recommandations ciblées.

## Grille de notation par partie

Noter chaque partie de 0 à 4 :

- **0 :** aucune maîtrise
- **1 :** notions faibles ou réponses uniquement théoriques
- **2 :** niveau correct avec peu d’exemples concrets
- **3 :** bonne maîtrise et exemples pratiques
- **4 :** très bonne maîtrise, raisonnement structuré et impact métier clair

| Partie | Note /4 | Observation |
| --- | ---: | --- |
| Crédibilité de l’expérience annoncée | ____ / 4 | ______________________________ |
| Power BI et modélisation | ____ / 4 | ______________________________ |
| DAX | ____ / 4 | ______________________________ |
| Supply chain | ____ / 4 | ______________________________ |
| Résolution des scénarios | ____ / 4 | ______________________________ |
| Communication et orientation métier | ____ / 4 | ______________________________ |

## Synthèse finale

| Critère | Observation |
| --- | --- |
| Points forts | ______________________________ |
| Lacunes ou risques | ______________________________ |
| Niveau Power BI | Débutant / Intermédiaire / Avancé |
| Niveau DAX | Débutant / Intermédiaire / Avancé |
| Niveau supply chain | Notions / Opérationnel / Solide |
| Adéquation au poste de Data Analyst | Faible / Moyenne / Forte |
| Décision finale | Favorable / À discuter / Défavorable |
