Cliquez sur une proposition pour révéler la bonne réponse et son explication.
Score : 0 / 75Répondu : 0 / 75Réussite : –
Question 1 / 75
Vous disposez d'un job Azure Databricks qui utilise Spark SQL et des opérations DataFrame pour effectuer des jointures et des agrégations sur de grandes tables Delta. La charge de travail a été validée sur Databricks Runtime 14.3 LTS. Le job n'utilise pas de bibliothèques de machine learning. Quelle configuration devez-vous utiliser pour maintenir la compatibilité et améliorer les performances des transformations ?
Propositions de réponse :
A. Databricks Runtime 14.3 LTS avec Photon désactivé
B. Databricks Runtime 14.3 LTS ML avec Photon activé
C. La dernière version majeure de Databricks Runtime (Current DBR) avec Photon activé
D. Databricks Runtime 14.3 LTS avec Photon activé (Réponse correcte)
Justification :
Le maintien de la version 14.3 LTS garantit la compatibilité avec l'environnement validé. L'activation du moteur vectorisé Photon apporte des accélérations significatives sur les opérations d'agrégation et de jointure SQL/DataFrame sur les tables Delta.
Pourquoi les autres options sont incorrectes :
Option A : Désactiver Photon prive la charge de travail des optimisations de performances vectorisées.
Option B : L'image DBR ML ajoute un surcoût inutile de dépendances de ML qui ne sont pas utilisées.
Option C : Changer de version majeure de Databricks Runtime risque d'introduire des ruptures de compatibilité.
Module Microsoft Learn : Optimize compute in Azure Databricks
Question 2 / 75
Vous disposez d'un catalogue Unity Catalog nommé Catalog1. Un pipeline ingère des fichiers bruts, crée des tables Delta nettoyées et publie des vues de reporting. Comment devez-vous organiser les objets dans Catalog1 pour permettre aux analystes de lire uniquement le reporting et aux ingénieurs de gérer le brut et le nettoyé séparément ?
Propositions de réponse :
A. Créer trois catalogues distincts nommés Catalog_Raw, Catalog_Cleansed et Catalog_Reporting
B. Créer des schémas nommés raw_data, cleansed_data et reporting_views dans Catalog1 (Réponse correcte)
C. Créer des schémas nommés selon les départements métiers (ex: marketing_data, finance_data) dans Catalog1
D. Utiliser un seul schéma et ajouter des préfixes de noms aux objets (ex: raw_table1, reporting_view1)
Justification :
La création de trois schémas au sein du même catalogue permet d'appliquer une politique de gouvernance fine. On peut attribuer le privilège GRANT SELECT sur le schéma reporting_views aux analystes tout en isolant la gestion des données brutes et nettoyées.
Pourquoi les autres options sont incorrectes :
Option A : Ne respecte pas la consigne qui impose d'organiser les objets à l'intérieur du catalogue existant Catalog1.
Option C : La séparation par département métier ne résout pas la séparation des étapes techniques du pipeline.
Option D : L'utilisation de préfixes dans un schéma unique empêche d'appliquer des droits globaux d'accès par niveau de schéma.
Module Microsoft Learn : Manage database objects with Unity Catalog
Question 3 / 75
Vous devez créer un catalogue externe (foreign catalog) dans Unity Catalog pour fournir un accès gouverné en lecture seule à une base de données PostgreSQL externe. Quel objet Unity Catalog devez-vous configurer en premier ?
Propositions de réponse :
A. An external location (Un emplacement externe)
B. A connection (Une connexion) (Réponse correcte)
C. A storage credential (Un identifiant de stockage)
D. A schema (Un schéma)
Justification :
Dans Lakehouse Federation, l'objet Connection contient le chemin d'accès, l'hôte et les identifiants requis pour joindre le serveur de base de données externe. Il constitue le prérequis obligatoire avant de pouvoir créer un Foreign Catalog.
Pourquoi les autres options sont incorrectes :
Option A : Les External Locations s'appliquent au stockage objet (ADLS Gen2, AWS S3), pas aux bases de données relationnelles SQL.
Option C : Les Storage Credentials s'associent aux emplacements externes pour l'authentification cloud, pas pour les bases PostgreSQL.
Option D : Un schéma est un objet enfant créé au sein d'un catalogue, il ne peut pas précéder la création du catalogue.
Module Microsoft Learn : Connect to external data sources with Lakehouse Federation
Question 4 / 75
Vous disposez de tables Delta gérées Unity Catalog nommées Catalog1.Schema1.Table1 et Catalog1.Schema1.Table2 avec le suivi des lignes activé. Une requête de tableau de bord joint ces tables par order_id et groupe par order_date, mais elle dépasse la durée autorisée. Vous devez créer un objet Unity Catalog pour stocker les résultats précalculés, utiliser les données modifiées pour les rafraîchissements et éviter tout recalcul complet lors des rafraîchissements normaux. Quelle configuration créer ?
Propositions de réponse :
A. Une vue matérialisée utilisant REFRESH POLICY INCREMENTAL STRICT (Réponse correcte)
B. Une vue matérialisée utilisant REFRESH POLICY INCREMENTAL
C. Une table de streaming (Streaming table)
D. Une vue standard (Standard view)
Justification :
Les vues matérialisées permettent de stocker physiquement sur disque les résultats précalculés de requêtes complexes. L'utilisation de la politique INCREMENTAL STRICT force un rafraîchissement incrémentiel et garantit qu'aucun recalcul complet (*full recompute*) ne sera exécuté lors des rafraîchissements ordinaires.
Pourquoi les autres options sont incorrectes :
Option B : La politique INCREMENTAL autorise un repli (*fallback*) vers un recalcul complet si le traitement incrémentiel échoue.
Option C : Les tables de streaming sont conçues pour des pipelines d'ingestion append-only, pas pour agréger des requêtes complexes avec jointures sur des tables existantes.
Option D : Une vue standard ne persiste pas les résultats précalculés et réexécute la requête complexe à chaque consultation.
Module Microsoft Learn : Build data pipelines using Delta Live Tables and Materialized Views
Question 5 / 75
Vous disposez d'un espace de travail Azure Databricks pour le développement de notebooks interactifs. Une équipe crée quotidiennement des ressources de calcul multi-usages. Les charges de travail alternent entre exploration rapide et transformations volumineuses, et la majeure partie du calcul est inactive après les heures de bureau. Quelle configuration adopter pour améliorer la disponibilité lors de la création répétée de calculs, éviter de dimensionner pour la demande maximale et réduire les frais ?
Propositions de réponse :
A. Utiliser des instances à la demande (on-demand), activer le dimensionnement automatique (autoscaling), et configurer l'arrêt automatique (auto-termination)
B. Assigner le calcul à un pool d'instances, activer l'autoscaling, et désactiver l'arrêt automatique
C. Assigner le calcul à un pool d'instances, fixer le nombre de workers, et configurer l'arrêt automatique
D. Assigner le calcul à un pool d'instances, activer l'autoscaling, et configurer l'arrêt automatique (Réponse correcte)
Justification :
1. **Pool d'instances :** Maintient des VM prêtes à l'emploi et accélère le temps de démarrage du calcul.
2. **Autoscaling :** Adapte dynamiquement le nombre de nœuds pour absorber les transformations volumineuses sans surdimensionner inutilement lors des phases d'exploration.
3. **Auto-termination :** Éteint automatiquement les clusters inactifs en dehors des heures de travail afin d'éliminer les coûts de calcul inutiles.
Pourquoi les autres options sont incorrectes :
Option A : L'absence de pool d'instances entraîne des délais d'attente importants lors des créations répétées.
Option B : Désactiver l'arrêt automatique laisse tourner les ressources inactives la nuit, générant d'importants surcoûts.
Option C : Utiliser un nombre fixe de workers empêche d'adapter dynamiquement les ressources selon la taille des tâches.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 6 / 75
Vous disposez d'une table Delta externe Unity Catalog nommée catalog1.schema1.table1 avec la compatibilité de lecture Apache Iceberg activée via UniForm. Les vues et autorisations existantes font référence à la table par son nom. Vous devez la migrer vers le stockage géré Unity Catalog via SQL serverless tout en conservant l'historique, les autorisations et les vues. Comment compléter le script SQL ?
Propositions de réponse :
A. Menu 1 : DESCRIBE DETAIL | Menu 2 : SET MANAGED
B. Menu 1 : CREATE TABLE | Menu 2 : AS SELECT * FROM
C. Menu 1 : ALTER TABLE | Menu 2 : SET MANAGED TRUNCATE UNIFORM HISTORY (Réponse correcte)
D. Menu 1 : SHOW TABLES IN | Menu 2 : SET MANAGED
Justification :
La commande ALTER TABLE catalog1.schema1.table1 SET MANAGED convertit la table externe en table gérée sur place sans changer l'objet, ce qui préserve les vues dépendantes, l'historique et les autorisations accordées. La clause TRUNCATE UNIFORM HISTORY est obligatoire pour réinitialiser les métadonnées UniForm/Iceberg lors de la transition.
Pourquoi les autres options sont incorrectes :
Option A & D : DESCRIBE et SHOW sont des commandes de consultation, pas des instructions DDL de conversion.
Option B : CREATE TABLE ... AS SELECT crée un nouvel objet et perd le raccordement automatique des autorisations et vues d'origine.
Module Microsoft Learn : Manage tables and data layouts in Delta Lake
Question 7 / 75
Un job de production nommé Job1 contient deux tâches : IngestOrders (utilisant PySpark DataFrames/SQL sans exigence de bibliothèques personnalisées ou type de VM) et TrainLegacy (utilisant des API Spark RDD, un JAR personnalisé et un type de VM spécifique). Quels types de calcul devez-vous attribuer à chaque tâche pour minimiser la gestion et les coûts d'inactivité ?
Propositions de réponse :
A. IngestOrders: Classic all-purpose compute | TrainLegacy: Classic jobs compute
B. IngestOrders: Serverless job compute | TrainLegacy: Classic jobs compute (Réponse correcte)
C. IngestOrders: Serverless SQL warehouse | TrainLegacy: Serverless job compute
D. IngestOrders: Serverless job compute | TrainLegacy: Serverless SQL warehouse
Justification :
1. **IngestOrders :** Le calcul Serverless job compute supprime les coûts d'inactivité et l'administration de clusters tout en prenant parfaitement en charge le code PySpark DataFrame et SQL standard.
2. **TrainLegacy :** Le calcul Classic jobs compute permet la configuration fine du type d'instance VM, le support des API Spark RDD legacy et le chargement de bibliothèques JAR personnalisées.
Pourquoi les autres options sont incorrectes :
Option A : Classic all-purpose compute est destiné au développement interactif et s'avère plus coûteux pour des tâches automatisées de production.
Option C & D : Serverless SQL Warehouse est optimisé pour les requêtes SQL analytiques pures et ne supporte pas l'exécution de code Python DataFrame ou RDD personnalisé.
Module Microsoft Learn : Run automated workloads with Azure Databricks Jobs
Question 8 / 75
Vous devez accorder les privilèges les plus restrictifs à un groupe d'analystes nommé `analytics_team` pour qu'il puisse exécuter des requêtes sur un SQL Warehouse nommé `Reporting_Warehouse` sans pouvoir modifier sa configuration ni le supprimer. Quelle commande privilégier ?
Propositions de réponse :
A. GRANT USE WAREHOUSE ON WAREHOUSE Reporting_Warehouse TO analytics_team (Réponse correcte)
B. GRANT MANAGE ON WAREHOUSE Reporting_Warehouse TO analytics_team
C. GRANT SELECT ON WAREHOUSE Reporting_Warehouse TO analytics_team
D. GRANT MODIFY ON WAREHOUSE Reporting_Warehouse TO analytics_team
Justification :
Le privilège `CAN USE` (exprimé en SQL par `GRANT USE WAREHOUSE`) permet aux utilisateurs d'attacher leurs sessions et d'exécuter des requêtes SQL sur cet entrepôt sans disposer des droits d'administration.
Pourquoi les autres options sont incorrectes :
Option B : Le privilège MANAGE donne des droits d'administration complets (modification, suppression).
Option C & D : Les privilèges `SELECT` et `MODIFY` s'appliquent aux objets de données (tables, vues) et non au composant de calcul Warehouse.
Module Microsoft Learn : Manage access control in Unity Catalog
Question 9 / 75
Un système source dépose en continu des fichiers JSON de structure légèrement évolutive dans un conteneur ADLS Gen2. Quel composant d'ingestion Azure Databricks devez-vous utiliser pour détecter automatiquement les nouveaux fichiers et faire évoluer le schéma sans interruption ?
Propositions de réponse :
A. `spark.read.format("json").load(...)` exécuté dans un job planifié toutes les 5 minutes
B. La commande `COPY INTO` exécutée en boucle dans un notebook
C. Une requête fédérée Lakehouse Federation direct sur le stockage
D. Auto Loader (`spark.readStream.format("cloudFiles")`) (Réponse correcte)
Justification :
Auto Loader (`cloudFiles`) est optimisé pour l'ingestion incrémentielle de millions de fichiers. Il inclut un suivi efficace des fichiers arrivants via notifications et gère nativement le *schema inference* et *schema evolution*.
Pourquoi les autres options sont incorrectes :
Option A : Réévalue l'ensemble du répertoire à chaque fois, ce qui devient extrêmement lent au fur et à mesure que le nombre de fichiers augmente.
Option B : `COPY INTO` est adapté au traitement batch/micro-batch, mais est moins flexible qu'Auto Loader pour la détection fine des schémas évolutifs complexes en flux continu.
Option C : Lakehouse Federation concerne le requêtage de bases de données distantes, pas l'ingestion de fichiers répertoires.
Module Microsoft Learn : Ingest data into Azure Databricks with Auto Loader
Question 10 / 75
Vous avez une table Delta volumineuse qui subit fréquemment des requêtes filtrant sur une colonne de haute cardinalité (ex: `customer_id`). Le partitionnement traditionnel sur cette colonne a créé un problème grave de "petits fichiers". Quelle technique devez-vous utiliser ?
Propositions de réponse :
A. Repartitionner la table avec `df.repartition(100)` avant chaque écriture
B. Appliquer la commande `OPTIMIZE` avec l'indexation multidimensionnelle `ZORDER BY (customer_id)` ou activer le Liquid Clustering (Réponse correcte)
C. Convertir la table en format Parquet standard
D. Créer un index secondaire SQL classique sur la colonne `customer_id`
Justification :
L'organisation `Z-Order` (ou le `Liquid Clustering` moderne) regroupe les données connexes dans les mêmes fichiers sans diviser physiquement la table en répertoires distincts, éliminant le problème des petits fichiers tout en permettant au Data Skipping d'éliminer les fichiers non pertinents.
Pourquoi les autres options sont incorrectes :
Option A : `repartition()` réorganise le nombre de fichiers en mémoire lors de l'écriture mais ne réordonne pas logiquement les données par valeur de colonne.
Option C : Parquet standard ne gère ni le Z-Ordering ni les fonctionnalités d'optimisation avancées de Delta Lake.
Option D : Les tables Spark/Delta ne supportent pas les index secondaires SQL traditionnels des SGBD relationnels.
Module Microsoft Learn : Optimize Delta Lake performance with Z-Order and Liquid Clustering
Question 11 / 75
Vous devez effectuer un audit et consulter l'état exact de la table Delta `sales` telle qu'elle existait le 15 janvier 2026 à 10:00:00 UTC. Quelle syntaxe SQL est exacte ?
Propositions de réponse :
A. `SELECT * FROM sales AT DATE '2026-01-15 10:00:00'`
B. `SELECT * FROM sales RESTORE TO '2026-01-15 10:00:00'`
C. `SELECT * FROM sales WITH HISTORY (timestamp = '2026-01-15 10:00:00')`
D. `SELECT * FROM sales TIMESTAMP AS OF '2026-01-15 10:00:00'` (Réponse correcte)
Justification :
Delta Lake prend en charge le voyagement dans le temps (*Time Travel*). La clause `TIMESTAMP AS OF` (ou `VERSION AS OF`) permet de consulter les données dans un état historique précis conservé par le journal de transactions `_delta_log`.
Pourquoi les autres options sont incorrectes :
Option A, B & C : Ce sont des syntaxes SQL incorrectes ou inexistantes dans le dialecte Databricks SQL / Delta Lake.
Module Microsoft Learn : Work with Delta Lake table history
Question 12 / 75
Pour réduire les coûts de stockage, vous décidez de supprimer définitivement les anciens fichiers de données Parquet obsolètes qui ne sont plus référencés par les transactions actuelles de la table Delta `orders` depuis plus de 7 jours (168 heures). Quelle commande exécuter ?
Propositions de réponse :
A. `DELETE FROM orders WHERE commit_time < CURRENT_DATE() - 7`
B. `PURGE TABLE orders RETAIN 7 DAYS`
C. `VACUUM orders RETAIN 168 HOURS` (Réponse correcte)
D. `OPTIMIZE orders CLEANUP OLD FILES`
Justification :
La commande `VACUUM` nettoie physiquement du stockage objet les fichiers de données qui ne sont plus référencés dans l'état actuel ou les états plus récents que le seuil de rétention spécifié (7 jours par défaut).
Pourquoi les autres options sont incorrectes :
Option A : `DELETE` supprime des enregistrements logiques de données, mais crée de nouveaux commits sans purger les anciens fichiers physiques.
Option B & D : Syntaxes SQL invalides sur Databricks.
Module Microsoft Learn : Maintain Delta Lake tables
Question 13 / 75
Dans la hiérarchie de nommage et de gouvernance d'objets introduite par Unity Catalog, quelle est la structure complète obligatoire pour faire référence à une table ?
Propositions de réponse :
A. `catalog.schema.table` (Réponse correcte)
B. `workspace.database.table`
C. `storage_account.container.table`
D. `group.schema.table`
Justification :
Unity Catalog applique un espace de nommage à trois niveaux : `catalog_name.schema_name.table_name`, ce qui permet d'isoler clairement les environnements et domaines fonctionnels.
Pourquoi les autres options sont incorrectes :
Option B, C & D : Ne correspondent pas aux trois niveaux de métadonnées d'Unity Catalog.
Module Microsoft Learn : Manage database objects with Unity Catalog
Question 14 / 75
Vous devez configurer l'accès à un conteneur ADLS Gen2 nommé `raw-data` situé sur un compte de stockage Azure. Dans Unity Catalog, quel objet lie un *Storage Credential* (identifiant d'accès managé) à un chemin d'accès d'URI de stockage externe (`abfss://...`) ?
Propositions de réponse :
A. An External Location (Un emplacement externe) (Réponse correcte)
B. A Foreign Catalog
C. A Delta Share
D. A Managed Volume
Justification :
L'objet `External Location` associe un chemin de stockage Cloud sécurisé avec une identité d'accès (`Storage Credential`), permettant d'accorder des privilèges de lecture/écriture sur ce sous-ensemble de stockage.
Pourquoi les autres options sont incorrectes :
Option B : Sert à connecter des bases de données relationnelles externes via Lakehouse Federation.
Option C : Sert au partage sécurisé de données multi-entreprises via Delta Sharing.
Option D : Un Managed Volume utilise le stockage géré par défaut du schéma, pas un emplacement externe sur-mesure.
Module Microsoft Learn : Manage external locations and storage credentials
Question 15 / 75
Vous construisez un pipeline Delta Live Tables (DLT). Vous souhaitez ajouter une règle de contrôle de qualité imposant que le champ `timestamp` ne soit jamais nul. Quelle syntaxe DLT utiliser ?
Propositions de réponse :
A. `CHECK (timestamp IS NOT NULL)`
B. `@dlt.expect("valid_timestamp", "timestamp IS NOT NULL")` (Réponse correcte)
C. `ASSERT timestamp IS NOT NULL`
D. `WHERE timestamp IS NOT NULL`
Justification :
En Python DLT, le décorateur `@dlt.expect` (ou en SQL la clause `CONSTRAINT ... EXPECT`) définit des métriques de qualité (*expectations*) suivies dans les journaux d'événement DLT.
Pourquoi les autres options sont incorrectes :
Option A & C : Ce ne sont pas des décorateurs d'expectations spécifiques à l'API Delta Live Tables.
Option D : Filtrerait les lignes dans la transformation sans enregistrer de métriques de qualité ni d'alertes DLT.
Module Microsoft Learn : Manage data quality with Delta Live Tables
Question 16 / 75
Dans un pipeline Delta Live Tables, quelle action d'expectation devez-vous spécifier si vous voulez que les lignes qui échouent au test de validation soient immédiatement éliminées de la table cible sans stopper l'exécution du pipeline ?
Propositions de réponse :
A. `ON VIOLATION FAIL UPDATE`
B. `ON VIOLATION IGNORE`
C. `ON VIOLATION DROP ROW` (Réponse correcte)
D. `ON VIOLATION LOG ONLY`
Justification :
L'instruction `ON VIOLATION DROP ROW` ordonne au moteur DLT de jeter les enregistrements invalides tout en enregistrant le nombre de lignes supprimées dans la télémétrie de pipeline.
Pourquoi les autres options sont incorrectes :
Option A : Bloque et fait échouer l'exécution du pipeline.
Option B & D : Le comportement par défaut conserve la ligne invalide et se contente d'enregistrer l'anomalie dans les métriques.
Module Microsoft Learn : Manage data quality with Delta Live Tables
Question 17 / 75
Dans un pipeline DLT critique pour la conformité financière, la présence de transactions avec un montant négatif est inacceptable. Quel comportement d'expectation DLT devez-vous configurer pour stopper net le traitement si une seule donnée invalide survient ?
Propositions de réponse :
A. `ON VIOLATION DROP ROW`
B. `ON VIOLATION FAIL UPDATE` (Réponse correcte)
C. `ON VIOLATION STOP PIPELINE`
D. `ON VIOLATION RAISE ERROR`
Justification :
L'instruction `ON VIOLATION FAIL UPDATE` interrompt immédiatement la mise à jour du pipeline dès qu'un enregistrement ne respecte pas la contrainte énoncée.
Pourquoi les autres options sont incorrectes :
Option A : Continuerait le traitement en supprimant silencieusement les mauvaises lignes.
Option C & D : Mots-clés fictifs non reconnus par la syntaxe DLT.
Module Microsoft Learn : Manage data quality with Delta Live Tables
Question 18 / 75
Vous exécutez une requête Spark Structured Streaming qui lit des événements depuis Event Hubs et les écrit dans Delta Lake. Pour garantir que le flux puisse reprendre exactement là où il s'est arrêté après un redémarrage du cluster, quel paramètre d'écriture est indispensable ?
Propositions de réponse :
A. `.option("resumeFrom", "latest")`
B. `.option("enableStateStore", "true")`
C. `.option("checkpointLocation", "abfss://...")` (Réponse correcte)
D. `.option("autoRecovery", "enabled")`
Justification :
Le répertoire de *checkpointing* (`checkpointLocation`) persiste l'état du flux (offsets, métadonnées de progression) sur du stockage durable, garantissant un traitement *exactly-once* lors des redémarrages.
Pourquoi les autres options sont incorrectes :
Option A, B & D : Ne sont pas des options valides de gestion d'état de reprise Structured Streaming.
Module Microsoft Learn : Process streaming data with Structured Streaming
Question 19 / 75
Vous souhaitez capturer et propager les modifications de lignes (insertions, mises à jour, suppressions) sur une table Delta `customers` afin de les consommer sous forme de flux incrémentiel. Quelle propriété de table devez-vous activer ?
Propositions de réponse :
A. `ALTER TABLE customers SET TBLPROPERTIES (delta.enableChangeDataFeed = true)` (Réponse correcte)
B. `ALTER TABLE customers SET TBLPROPERTIES (delta.enableCDC = true)`
C. `ALTER TABLE customers ENABLE ROW LOGGING`
D. `ALTER TABLE customers TRACK CHANGES`
Justification :
La fonctionnalité Change Data Feed (CDF) s'active avec la propriété `delta.enableChangeDataFeed = true`. Elle enregistre les métadonnées de modification de ligne permettant la lecture via `readStream` avec la fonction `readChangeDataFeed`.
Pourquoi les autres options sont incorrectes :
Option B, C & D : Syntaxes et noms de propriétés erronés.
Module Microsoft Learn : Use Delta Lake Change Data Feed
Question 20 / 75
Vous devez synchroniser une table de dimension `dim_product` en exécutant une mise à jour des prix pour les produits existants et une insertion pour les nouveaux produits en une seule opération atomique. Quelle instruction SQL utiliser ?
Propositions de réponse :
A. `UPDATE OR INSERT INTO dim_product ...`
B. `UPSERT INTO dim_product SELECT * FROM new_products`
C. `COPY INTO dim_product FROM new_products`
D. `MERGE INTO dim_product target USING new_products source ON target.product_id = source.product_id WHEN MATCHED THEN UPDATE SET * WHEN NOT MATCHED THEN INSERT *` (Réponse correcte)
Justification :
L'instruction ANSI SQL `MERGE INTO` est la commande standard sur Delta Lake pour exécuter des opérations d'*Upsert* complexes (combinaison de `WHEN MATCHED` et `WHEN NOT MATCHED`).
Pourquoi les autres options sont incorrectes :
Option A & B : `UPSERT` et `UPDATE OR INSERT` ne sont pas des commandes SQL valides.
Option C : `COPY INTO` est utilisé pour l'ingestion de fichiers bruts depuis un stockage cloud, pas pour faire une jointure/fusion de deux tables.
Module Microsoft Learn : Upsert data into Delta Lake tables
Question 21 / 75
Vous créez une table de faits `fact_transactions`. Vous voulez qu'un identifiant numérique unique s'incrémente automatiquement à chaque nouvelle ligne insérée. Quelle définition de colonne utiliser ?
Propositions de réponse :
A. `transaction_id BIGINT AUTO_INCREMENT`
B. `transaction_id BIGINT GENERATED ALWAYS AS IDENTITY` (Réponse correcte)
C. `transaction_id BIGINT DEFAULT NEXTVAL()`
D. `transaction_id BIGINT SERIAL`
Justification :
Delta Lake supporte la norme SQL `GENERATED ALWAYS AS IDENTITY` (ou `GENERATED BY DEFAULT AS IDENTITY`) pour la génération automatique de clés d'incrémentation.
Pourquoi les autres options sont incorrectes :
Option A, C & D : Sont des syntaxes propres à MySQL, PostgreSQL ou Oracle, non supportées par Delta Lake.
Module Microsoft Learn : Manage tables and data layouts in Delta Lake
Question 22 / 75
Afin de ne pas inscrire de jeton d'accès ou de mot de passe en texte clair dans vos notebooks Python, quel utilitaire Databricks devez-vous appeler pour récupérer un secret stocké dans un *Secret Scope* configuré ?
Propositions de réponse :
A. `mssparkutils.credentials.getSecret(...)`
B. `spark.conf.get("secret.my_key")`
C. `os.getenv("MY_SECRET")`
D. `dbutils.secrets.get(scope = "my_scope", key = "my_key")` (Réponse correcte)
Justification :
`dbutils.secrets.get()` est l'API native Databricks pour extraire de manière sécurisée les clés d'API et secrets stockés dans les coffres de secrets (Azure Key Vault ou Databricks Secret Scope).
Pourquoi les autres options sont incorrectes :
Option A : Est une bibliothèque propre à Azure Synapse Analytics, pas Databricks.
Option B & C : Ne permettent pas d'extraire des clés sécurisées masquées depuis la gestion centralisée des secrets Databricks.
Module Microsoft Learn : Manage secrets in Azure Databricks
Question 23 / 75
Vous devez configurer un cluster partagé entre plusieurs Data Analysts. Le cluster doit appliquer le contrôle d'accès fin Unity Catalog (sécurité au niveau des lignes/colonnes) et empêcher un utilisateur d'accéder au système de fichiers sous-jacent du nœud driver. Quel mode d'accès au calcul choisir ?
Propositions de réponse :
A. Shared Access Mode (Réponse correcte)
B. Single User Access Mode
C. No Isolation Shared Access Mode
D. Custom Access Mode
Justification :
Le mode d'accès `Shared` (partagé) isole les sessions des utilisateurs, interdit le mode privilège administrateur local et applique les politiques de gouvernance et règles de sécurité Unity Catalog.
Pourquoi les autres options sont incorrectes :
Option B : Dédié à un utilisateur unique, ne prend pas en charge l'isolation multi-utilisateurs.
Option C : Désactive les verrous de sécurité et ne peut pas garantir le filtrage Unity Catalog.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 24 / 75
Vous créez une vue dynamique pour masquer les numéros de carte de crédit aux utilisateurs qui ne font pas partie du groupe `finance_hr`. Quelle fonction de sécurité utiliser dans la clause `CASE WHEN` ?
Propositions de réponse :
A. `user_in_role('finance_hr')`
B. `check_group('finance_hr')`
C. `is_account_group_member('finance_hr')` (Réponse correcte)
D. `current_user_has_grant('finance_hr')`
Justification :
La fonction `is_account_group_member()` évalue si l'utilisateur qui exécute la requête fait partie du groupe spécifié dans Unity Catalog pour appliquer le masquage dynamique.
Pourquoi les autres options sont incorrectes :
Option A, B & D : Noms de fonctions inexistants dans Spark SQL / Unity Catalog.
Module Microsoft Learn : Manage access control in Unity Catalog
Question 25 / 75
Vous voulez restreindre la lecture des lignes de la table `patients` de sorte que les médecins ne voient que les patients de leur région respective. Quelle fonctionnalité native d'Unity Catalog devez-vous attacher à la table ?
Propositions de réponse :
A. Une fonction de Row Filter (`ALTER TABLE patients SET ROW FILTER region_filter ON (region)`) (Réponse correcte)
B. Un Dynamic Schema Filter
C. Un déclencheur d'audit
D. Une vue matérialisée partitionnée
Justification :
Les `Row Filters` permettent de lier une fonction SQL personnalisée à une table Unity Catalog pour intercepter et filtrer de façon transparente les lignes retournées selon l'identité de l'exécutant.
Pourquoi les autres options sont incorrectes :
Option B & C : Concepts non existants dans Unity Catalog.
Option D : Multiplierait la donnée sous forme de vues sans garantir le verrouillage de la table source d'origine.
Module Microsoft Learn : Filter sensitive data using Row Filters and Column Masks
Question 26 / 75
Vous devez anonymiser une colonne `ssn` (sécurité sociale) directement dans la table de base Unity Catalog en remplaçant la valeur par `'XXX-XX-'` pour les non-administrateurs. Quelle fonctionnalité utiliser ?
Propositions de réponse :
A. Un Column Mask (`ALTER TABLE customers ALTER COLUMN ssn SET MASK ssn_mask_fn`) (Réponse correcte)
B. Une clé d'encodage SHA2
C. Un trigger d'anonymisation sur écriture
D. Une contrainte CHECK de masque
Justification :
Les `Column Masks` s'appliquent sur des colonnes spécifiques pour transformer dynamiquement les valeurs retournées en fonction de l'utilisateur qui effectue le `SELECT`.
Pourquoi les autres options sont incorrectes :
Option B : Le hachage altère la donnée de manière irréversible lors de l'écriture sans possibilité de démasquer pour les administrateurs légitimes.
Option C & D : Syntaxes non applicables pour la gouvernance de masquage de colonne.
Module Microsoft Learn : Filter sensitive data using Row Filters and Column Masks
Question 27 / 75
Quelle fonctionnalité de l'espace de travail Azure Databricks permet aux développeurs de synchroniser leurs notebooks, fichiers de code Python et configurations avec des dépôts Git distants (Azure DevOps, GitHub, GitLab) ?
Propositions de réponse :
A. Databricks Connect
B. Databricks Sync Engine
C. Databricks Repos (Workspace Git Integration) (Réponse correcte)
D. Delta Sharing
Justification :
Databricks Repos offre une intégration Git directe dans l'UI pour cloner, pusher, puller et gérer les branches sur des dépôts distants.
Pourquoi les autres options sont incorrectes :
Option A : Databricks Connect permet de connecter son IDE local (ex: VS Code) à un cluster Databricks à distance.
Option D : Delta Sharing est un protocole de partage de données entre organisations.
Module Microsoft Learn : Use Git integration in Azure Databricks Repos
Question 28 / 75
Un job Databricks doit être déclenché automatiquement dès qu'un nouveau fichier d'extrayant bancaire arrive dans un dossier spécifique d'un volume Unity Catalog. Quel type de déclencheur (*trigger*) devez-vous associer au job ?
Propositions de réponse :
A. Scheduled (CRON) Trigger
B. File arrival trigger (Réponse correcte)
C. Continuous Execution Trigger
D. Webhook Event Trigger
Justification :
Le déclencheur `File arrival` surveille un emplacement de stockage ou un volume et démarre l'exécution du job immédiatement après la détection d'un nouveau fichier.
Pourquoi les autres options sont incorrectes :
Option A : Planifie des exécutions à des heures fixes (ex: tous les jours à 8h).
Option C : Relance immédiatement le job en boucle dés sa terminaison.
Module Microsoft Learn : Run automated workloads with Azure Databricks Jobs
Question 29 / 75
Une tâche au sein d'un Job Databricks échoue occasionnellement en raison d'un problème d'instabilité réseau temporaire lors du téléchargement d'un fichier web. Comment rendre le job plus résilient sans modification de code ?
Propositions de réponse :
A. Augmenter le nombre de workers du cluster
B. Passer le cluster en mode Single User
C. Augmenter le nombre de tentatives de réexécution de tâche (`Retries`) dans la configuration de la tâche (Réponse correcte)
D. Activer le suivi du Change Data Feed
Justification :
Configurer la politique de `Retries` (réessais) permet à Databricks Jobs de relancer automatiquement la tâche en cas d'échec transitoire avant de déclarer la tâche définitivement en erreur.
Pourquoi les autres options sont incorrectes :
Option A & B : Modifier le nombre de nœuds ou le mode d'accès n'a pas d'effet sur les pannes d'appels réseau externes transitoires.
Module Microsoft Learn : Run automated workloads with Azure Databricks Jobs
Question 30 / 75
Où pouvez-vous configurer la destination de livraison permanente des journaux de logs d'exécuteurs et du driver Spark (*Cluster Log Delivery*) afin d'analyser les erreurs *Out Of Memory* même après la suppression d'un cluster ?
Propositions de réponse :
A. Dans les paramètres avancés du cluster (Advanced Options -> Logging) vers un emplacement ADLS Gen2 ou Volume (Réponse correcte)
B. Dans les options de notebook
C. Dans la table system.access uniquement
D. Dans le fichier de configuration de l'espace de travail Azure Key Vault
Justification :
Dans la section *Advanced Options* de la configuration du cluster, vous pouvez définir un chemin de stockage persistant pour sauvegarder automatiquement les logs `stdout` et `stderr` de l'application Spark.
Pourquoi les autres options sont incorrectes :
Option B & D : Les notebooks et Key Vault ne gèrent pas la persistance des fichiers logs systèmes Spark.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 31 / 75
Vous devez créer une copie instantanée d'une table Delta de production de 10 To pour effectuer des tests rapides en environnement de développement, sans dupliquer les fichiers de données physiques pour réduire les coûts. Quelle commande exécuter ?
Propositions de réponse :
A. `CREATE TABLE dev_table DEEP CLONE prod_table`
B. `CREATE TABLE dev_table AS SELECT * FROM prod_table`
C. `CREATE TABLE dev_table SHALLOW CLONE prod_table` (Réponse correcte)
D. `COPY TABLE prod_table TO dev_table`
Justification :
Un `SHALLOW CLONE` (clonage léger) ne copie que les métadonnées et le journal de transaction. Il pointe vers les mêmes fichiers de données d'origine, rendant la création quasi instantanée et sans surcoût de stockage.
Pourquoi les autres options sont incorrectes :
Option A & B : Copient physiquement l'intégralité des 10 To de données sur disque.
Module Microsoft Learn : Clone tables on Delta Lake
Question 32 / 75
Vous devez créer une sauvegarde isolée d'une table Delta de production dans un autre catalogue avant d'effectuer des opérations destructrices. Vous voulez que cette nouvelle table possède ses propres fichiers de données totalement indépendants. Quelle commande exécuter ?
Propositions de réponse :
A. `CREATE TABLE backup_table SHALLOW CLONE prod_table`
B. `CREATE TABLE backup_table DEEP CLONE prod_table` (Réponse correcte)
C. `EXPORT TABLE prod_table TO backup_table`
D. `SYNC TABLE prod_table TO backup_table`
Justification :
Un `DEEP CLONE` (clonage profond) recopie intégralement la structure de métadonnées ainsi que tous les fichiers de données physiques, rendant la table cible indépendante de la source.
Pourquoi les autres options sont incorrectes :
Option A : Un clonage léger dépend toujours des fichiers sources d'origine.
Option C & D : Syntaxes SQL invalides.
Module Microsoft Learn : Clone tables on Delta Lake
Question 33 / 75
Comment un responsable Sécurité peut-il identifier visuellement toutes les vues, tables et colonnes d'un compte Azure Databricks alimentées par une colonne source spécifique contenant un code PII ?
Propositions de réponse :
A. En consultant le graphe de traçabilité des données (Unity Catalog Data Lineage) au niveau colonne (Réponse correcte)
B. En analysant le Spark UI DAG
C. En inspectant les logs du driver Spark
D. En lisant la table `system.billing.usage`
Justification :
Unity Catalog capture automatiquement la traçabilité (*lineage*) au niveau table et colonne pour toutes les exécutions SQL, Python et DLT, affichant une représentation graphique des flux de données.
Pourquoi les autres options sont incorrectes :
Option B : Le DAG Spark montre les étapes d'exécution d'un job ponctuel, pas la traçabilité globale persistée du catalogue.
Option D : Concerne les coûts et la consommation de DBUs.
Module Microsoft Learn : Capture and view data lineage with Unity Catalog
Question 34 / 75
Vous devez construire un tableau de bord de FinOps pour suivre la consommation des unités Databricks (DBU) par utilisateur et par cluster. Quel schéma système Unity Catalog contient ces tables d'audit ?
Propositions de réponse :
A. `system.security`
B. `default.dbu_logs`
C. `system.billing` (Réponse correcte)
D. `catalog1.system_logs`
Justification :
Le schéma `system.billing` met à disposition des vues telles que `system.billing.usage` qui recensent la consommation détaillée des DBUs pour l'ensemble du compte Azure Databricks.
Pourquoi les autres options sont incorrectes :
Option A, B & D : Noms de schémas ou d'emplacements inexacts pour les données de facturation.
Module Microsoft Learn : Monitor usage with system tables
Question 35 / 75
Pour minimiser les coûts liés à l'exécution de pipelines de traitement par lots nocturnes non critiques, quelle option de machines virtuelles et de type de calcul est recommandée ?
Propositions de réponse :
A. Clusters All-Purpose avec instances à la demande
B. SQL Warehouses Classic de taille XL
C. Calcul Single User avec arrêt automatique désactivé
D. Clusters de Jobs (Jobs compute) ou Serverless avec des instances Spot Azure (Réponse correcte)
Justification :
Les clusters de Jobs bénéficient d'un tarif DBU réduit par rapport aux clusters All-Purpose, et l'utilisation d'instances Spot Azure permet d'obtenir des rabais importants sur le coût des machines virtuelles cloud.
Pourquoi les autres options sont incorrectes :
Option A & C : Sont des choix nettement plus coûteux adaptés au développement interactif.
Module Microsoft Learn : Optimize Azure Databricks costs
Question 36 / 75
Quelle fonctionnalité d'organisation physique des données dans Delta Lake remplace le partitionnement traditionnel et évite les problèmes de découpage trop fin (*over-partitioning*) sur les tables à forte croissance ?
Propositions de réponse :
A. Auto-Indexing
B. Dynamic Bucketing
C. Liquid Clustering (`CLUSTER BY`) (Réponse correcte)
D. Delta Caching
Justification :
Liquid Clustering adapte de manière dynamique l'agencement des données en fonction des clés définies sans créer de sous-répertoires physiques rigides, éliminant les défauts du partitionnement classique.
Pourquoi les autres options sont incorrectes :
Option A & B : Fonctionnalités non existantes sous ces noms dans Delta Lake.
Option D : Le Delta Cache accélère les lectures répétées en mémoire/SSD local sur les workers, mais n'organise pas le stockage physique de la table.
Module Microsoft Learn : Use Liquid Clustering for Delta tables
Question 37 / 75
Vous avez une table configurée avec Liquid Clustering sur la colonne `region`. Vous constatez que les modèles de requêtes ont changé et filtrent désormais sur `customer_segment`. Comment adapter la table ?
Propositions de réponse :
A. Supprimer et recréer la table avec la nouvelle clé
B. Exécuter `REPARTITION TABLE table_name BY (customer_segment)`
C. Exécuter un `VACUUM FULL`
D. Exécuter `ALTER TABLE table_name CLUSTER BY (customer_segment)` puis un `OPTIMIZE` (Réponse correcte)
Justification :
Liquid Clustering permet de modifier les colonnes de clustering à n'importe quel moment via `ALTER TABLE ... CLUSTER BY`. Les écriture futures et les prochains `OPTIMIZE` appliqueront le nouveau regroupement sans réécriture complète forcée immediate.
Pourquoi les autres options sont incorrectes :
Option A : Réinvalide les données et interrompt la disponibilité de la table.
Module Microsoft Learn : Use Liquid Clustering for Delta tables
Question 38 / 75
Dans Spark UI, lors de l'analyse d'une étape de traitement (*stage*) anormalement lente, vous remarquez que 199 de vos 200 tâches se terminent en quelques secondes, mais qu'une seule tâche prend plus de 45 minutes. De quel problème s'agit-il ?
Propositions de réponse :
A. Spark Memory Leak
B. Small File Problem
C. Data Skew (Déséquilibre/Asymétrie des données) (Réponse correcte)
D. Deadlock réseau
Justification :
Le *Data Skew* survient lorsqu'une clé de regroupement ou de jointure concentre une quantité disproportionnée de données sur une seule partition, saturant un seul exécuteur Spark pendant que les autres restent inactifs.
Pourquoi les autres options sont incorrectes :
Option B : Ralentirait uniformément la phase de lecture globale de toutes les tâches.
Module Microsoft Learn : Troubleshoot and debug Spark applications
Question 39 / 75
Vous devez joindre une table de faits de 500 Go avec une table de dimension d'a peine 2 Mo. Quelle technique Spark permet d'éliminer totalement la phase coûteuse d'échange de données sur le réseau (*shuffle*) ?
Propositions de réponse :
A. Sort-Merge Join avec repartitionnement
B. Broadcast Join via `df_fact.join(broadcast(df_dim), "key")` (Réponse correcte)
C. Cross Join
D. Outer Join avec Z-Ordering
Justification :
La jointure par diffusion (*Broadcast Join*) envoie une copie intégrale de la petite table sur chaque nœud exécuteur, réalisant la jointure localement sans réorganiser la grande table sur le réseau.
Pourquoi les autres options sont incorrectes :
Option A : Sort-Merge Join implique un tirage/échange réseau complet (*shuffle*) des deux côtés.
Module Microsoft Learn : Optimize query execution in Apache Spark
Question 40 / 75
Quelle fonctionnalité du moteur d'exécution Apache Spark réévalue dynamiquement le plan d'exécution à chaud en cours de traitement (par exemple en convertissant une Sort-Merge Join en Broadcast Join si la taille réelle des données filtrées s'avère inférieure au seuil) ?
Propositions de réponse :
A. Catalyst Optimizer Statique
B. Adaptive Query Execution (AQE) (Réponse correcte)
C. Auto-Scaling Engine
D. Dynamic Partition Pruning (DPP) statique
Justification :
AQE (Adaptive Query Execution) analyse les statistiques réelles obtenues aux étapes d'exécution pour réoptimiser le plan physique à la volée (coalescence de partitions, gestion du skew, conversion de jointures).
Pourquoi les autres options sont incorrectes :
Option A : Le Catalyst Optimizer classique pré-calcule le plan avant l'exécution sur la base d'estimations.
Module Microsoft Learn : Optimize query execution in Apache Spark
Question 41 / 75
Vous avez configuré Lakehouse Federation pour interroger des tables hébergées dans une base de données externe (Snowflake, PostgreSQL, SQL Server). Comment devez-vous contrôler l'accès de vos utilisateurs à ces tables découvertes ?
Propositions de réponse :
A. Appliquer les privilèges GRANT directement sur le catalogue externe (foreign catalog) dans Unity Catalog (Réponse correcte)
B. Créer une connexion (Connection) distincte par groupe d'utilisateurs
C. Exporter les tables distantes vers ADLS Gen2 puis n'accorder l'accès qu'aux copies
D. Créer un identifiant de stockage (storage credential) par groupe d'utilisateurs
Justification :
Un catalogue externe (foreign catalog) est un objet Unity Catalog à part entière. La gouvernance reste donc centralisée : on applique les mêmes privilèges que sur n'importe quel objet Unity Catalog (`GRANT USE CATALOG`, `USE SCHEMA`, `SELECT`) sur le catalogue externe et ses schémas. Les identifiants de connexion à la source sont stockés dans l'objet *Connection* et ne sont jamais exposés aux utilisateurs.
Pourquoi les autres options sont incorrectes :
Option B : Une connexion décrit *comment* joindre la source (hôte, port, identifiants), pas *qui* peut lire quoi. Multiplier les connexions ne réalise aucun contrôle d'accès et complexifie la maintenance.
Option C : Copier les données contredit l'intérêt même de Lakehouse Federation (interroger sans déplacer les données) et fait perdre la fraîcheur.
Option D : Un storage credential sert à authentifier l'accès au *stockage objet* cloud (ADLS Gen2, S3), et non à gouverner l'accès aux tables fédérées.
Module Microsoft Learn : Connect to external data sources with Lakehouse Federation
Question 42 / 75
Un script a corrompu accidentellement une table Delta de production en écrasant son contenu. Vous devez annuler cette modification et revenir à une version antérieure de la table. Quelle commande SQL devez-vous exécuter ?
Propositions de réponse :
A. `RESTORE TABLE sales TO VERSION AS OF 5` (Réponse correcte)
B. `VACUUM sales RETAIN 168 HOURS`
C. `ALTER TABLE sales SET TBLPROPERTIES ('version' = '5')`
D. `CREATE TABLE sales AS SELECT * FROM sales VERSION AS OF 5`
Justification :
Delta Lake conserve un journal de transactions (*transaction log*) qui permet le voyage dans le temps (*time travel*). `RESTORE TABLE ... TO VERSION AS OF n` (ou `TO TIMESTAMP AS OF '...'`) recrée l'état exact de la table à la version indiquée, *dans la même table* : le nom, les autorisations et les vues qui pointent vers elle restent valides.
Pourquoi les autres options sont incorrectes :
Option B : `VACUUM` supprime définitivement les fichiers de données obsolètes ; c'est une opération de maintenance irréversible qui, au contraire, détruit l'historique nécessaire à une restauration.
Option C : Une propriété de table n'a aucun effet sur les données ; elle ne restaure rien.
Option D : `CREATE TABLE AS SELECT` crée une *nouvelle* table (et échoue de toute façon si le nom existe déjà) : on perd les autorisations, les contraintes, l'historique et les vues rattachées.
Module Microsoft Learn : Work with Delta Lake table history
Question 43 / 75
Vous devez garantir qu'aucune valeur négative ne puisse être écrite dans la colonne `price` de la table Delta `Catalog1.Schema1.products`. La solution doit rejeter les écritures invalides sans modifier le code d'ingestion. Que devez-vous faire ?
Propositions de réponse :
A. `ALTER TABLE ... ALTER COLUMN price SET NOT NULL`
B. `ALTER TABLE ... ALTER COLUMN price SET DEFAULT 0`
C. Modifier le type de données de `price` en `DECIMAL(10,2)`
Une contrainte `CHECK` appliquée au schéma de la table Delta via `ALTER TABLE ... ADD CONSTRAINT ... CHECK (...)` valide une condition booléenne *au moment de l'écriture*. Toute transaction qui insère une valeur violant la condition est rejetée, et cela sans toucher au code d'ingestion : la contrainte est appliquée par le moteur, quel que soit le client (notebook, job, SQL).
Pourquoi les autres options sont incorrectes :
Option A : `SET NOT NULL` interdit uniquement les valeurs `NULL` ; une valeur négative comme -99.99 reste parfaitement acceptée.
Option B : Une valeur par défaut ne s'applique que lorsqu'aucune valeur n'est fournie : elle ne rejette rien et remplace silencieusement les valeurs manquantes au lieu de faire échouer l'écriture.
Option C : `DECIMAL(10,2)` contraint la précision mais autorise toujours des valeurs négatives (par exemple -99.99).
Module Microsoft Learn : Manage tables and data layouts in Delta Lake
Question 44 / 75
Votre équipe souhaite décrire l'ensemble des ressources d'un projet (jobs, pipelines, notebooks, configurations) sous forme de code déclaratif versionné dans Git, afin d'automatiser les déploiements CI/CD vers plusieurs environnements. Quel outil devez-vous utiliser ?
Propositions de réponse :
A. Databricks Repos
B. Delta Live Tables
C. Unity Catalog
D. Databricks Asset Bundles (DABs) (Réponse correcte)
Justification :
Databricks Asset Bundles est l'approche « infrastructure as code » de Databricks. Un fichier `databricks.yml` décrit de façon déclarative les jobs, pipelines, notebooks et leurs paramètres, avec une notion de *targets* (dev, staging, production). Le bundle est versionné dans Git et déployé via la CLI, ce qui rend les promotions d'environnement reproductibles et auditables.
Pourquoi les autres options sont incorrectes :
Option A : Databricks Repos synchronise notebooks et fichiers avec un dépôt Git distant, mais ne décrit pas un projet complet ni ne gère le cycle de vie des jobs et pipelines par environnement.
Option B : Delta Live Tables est un framework de construction de pipelines de données, pas un outil de packaging ni de déploiement CI/CD.
Option C : Unity Catalog est la couche de gouvernance des données (catalogues, schémas, tables, autorisations), sans rapport avec le déploiement d'applications.
Module Microsoft Learn : Develop Azure Databricks automation using Databricks Asset Bundles
Question 45 / 75
Votre projet est configuré avec Databricks Asset Bundles et définit une cible (*target*) nommée `production` dans `databricks.yml`. Quelle commande Databricks CLI devez-vous exécuter pour déployer le bundle dans cet environnement ?
Propositions de réponse :
A. `databricks workspace import -e production`
B. `databricks bundle deploy -e production` (Réponse correcte)
C. `databricks jobs submit -e production`
D. `databricks bundle validate -e production`
Justification :
`databricks bundle deploy -e production` déploie le contenu du bundle vers la cible indiquée par l'option `-e` (*environment*), en résolvant les variables et les surcharges définies pour cette cible dans `databricks.yml`. C'est cette commande qui crée ou met à jour les ressources (jobs, pipelines, fichiers) dans l'espace de travail cible.
Pourquoi les autres options sont incorrectes :
Option A : `workspace import` ne copie que des fichiers dans l'espace de travail ; il ignore la notion de bundle et de cible.
Option C : `jobs submit` déclenche l'exécution d'un run, il ne déploie pas la définition des ressources.
Option D : `bundle validate` vérifie la syntaxe et la cohérence de la configuration sans rien déployer — utile en pré-étape de CI, mais insuffisant pour mettre en production.
Module Microsoft Learn : Develop Azure Databricks automation using Databricks Asset Bundles
Question 46 / 75
Vous exécutez une agrégation avec état (*stateful aggregation*) dans un flux Spark Structured Streaming et vous devez définir le seuil de tolérance au-delà duquel les données arrivant en retard sont ignorées, afin de borner la mémoire consommée par l'état. Quelle fonction devez-vous utiliser ?
Propositions de réponse :
A. `.option("lateData", "10 minutes")`
B. `.trigger(processingTime="10 minutes")`
C. `.groupBy(window("event_time", "10 minutes"))`
D. `.withWatermark("event_time", "10 minutes")` (Réponse correcte)
Justification :
Le filigrane (*watermark*) définit jusqu'à quel retard une donnée est encore prise en compte dans les calculs avec état. `withWatermark("event_time", "10 minutes")` indique au moteur que les événements dont l'horodatage est antérieur de plus de 10 minutes au maximum observé peuvent être écartés, ce qui lui permet de purger l'état correspondant. C'est la fonction dédiée à la fois à la gestion des données tardives et à la maîtrise de la mémoire de l'état.
Pourquoi les autres options sont incorrectes :
Option A : Il n'existe pas d'option `lateData` pour Structured Streaming ; les données tardives se pilotent par le filigrane.
Option B : `trigger` règle la *fréquence* de déclenchement des micro-lots, pas la tolérance au retard des événements.
Option C : `window(...)` découpe les événements en fenêtres temporelles, mais ne définit aucun seuil de tolérance : sans `withWatermark`, l'état croît indéfiniment.
Module Microsoft Learn : Process streaming data with Structured Streaming
Question 47 / 75
Vous devez regrouper les événements d'un flux en intervalles de temps de taille fixe (fenêtres tumblantes) ou se chevauchant (fenêtres glissantes), afin de calculer des agrégats par période. Quelle fonction devez-vous utiliser ?
Propositions de réponse :
A. `partitionBy()`
B. `groupByKey()`
C. `withWatermark()`
D. `window(timeColumn, windowDuration, slideDuration)` (Réponse correcte)
Justification :
La fonction `window(timeColumn, windowDuration, slideDuration)` transforme une colonne d'horodatage en fenêtres temporelles utilisables dans un `groupBy`. Sans `slideDuration`, on obtient des fenêtres tumblantes (fixes, sans chevauchement) ; en fournissant un `slideDuration` inférieur à `windowDuration`, on obtient des fenêtres glissantes qui se chevauchent et dont les événements peuvent appartenir à plusieurs fenêtres.
Pourquoi les autres options sont incorrectes :
Option A : `partitionBy` organise le partitionnement physique des données écrites sur disque, sans notion de fenêtre temporelle.
Option B : `groupByKey` regroupe par clé métier, pas par intervalle de temps.
Option C : `withWatermark` gère le retard toléré des données ; elle complète le fenêtrage mais ne crée aucune fenêtre.
Module Microsoft Learn : Process streaming data with Structured Streaming
Question 48 / 75
Vous exécutez un pipeline Lakeflow Spark Declarative Pipelines (Delta Live Tables) qui alimente des tables de reporting. Le pipeline doit traiter les nouvelles données disponibles, puis s'arrêter et libérer le calcul afin de réduire les coûts. Quel mode d'exécution devez-vous configurer ?
Propositions de réponse :
A. Un pipeline déclenché (Triggered pipeline) (Réponse correcte)
B. Un pipeline continu (Continuous pipeline)
C. Une table de streaming (Streaming table)
D. Une vue matérialisée (Materialized view)
Justification :
Un pipeline déclenché (*Triggered*) ingère et transforme les nouvelles données disponibles dès que possible, met à jour les tables cibles, puis arrête le calcul une fois le travail terminé : les ressources ne sont facturées que pendant l'exécution. C'est le mode recommandé pour les traitements planifiés ou par lots. Le mode continu, lui, maintient le cluster actif en permanence pour servir une faible latence, au prix d'un coût nettement supérieur.
Pourquoi les autres options sont incorrectes :
Option B : Le mode continu garde les ressources allumées en permanence pour traiter les données en flux quasi continu, ce qui va à l'encontre de l'objectif de réduction des coûts.
Option C : Une table de streaming est un *type d'objet* du pipeline (traitement append-only), pas un mode d'exécution.
Option D : Une vue matérialisée est également un type d'objet (résultats précalculés et rafraîchis), pas un mode d'exécution.
Module Microsoft Learn : Build data pipelines using Delta Live Tables
Question 49 / 75
Une application métier dépose des PDF, des images et des fichiers audio dans un répertoire ADLS Gen2. Vous devez rendre ces fichiers accessibles aux utilisateurs d'Azure Databricks tout en les gouvernant avec Unity Catalog et sans les déplacer. Quel objet Unity Catalog devez-vous créer ?
Propositions de réponse :
A. Une table externe (External table)
B. Un volume Unity Catalog (Volume) (Réponse correcte)
C. Un emplacement externe (External location)
D. Un identifiant de stockage (Storage credential)
Justification :
Les volumes Unity Catalog sont conçus pour les données *non structurées et semi-structurées* (PDF, images, audio, JSON brut). Un volume se crée dans un schéma (`Catalog1.Schema1.Volume1`), donc tout le modèle de privilèges Unity Catalog (GRANT sur le volume, audit, lignée) s'applique aux fichiers, exactement comme pour une table. Les fichiers restent à leur emplacement : aucune copie n'est nécessaire.
Pourquoi les autres options sont incorrectes :
Option A : Une table (même externe) est faite pour des données tabulaires structurées ; elle est inadaptée à des PDF ou à des images.
Option C : Un emplacement externe est un objet d'*administration du stockage* : il associe un storage credential à un chemin. Il ne fournit pas aux utilisateurs finaux un point d'accès gouverné aux fichiers.
Option D : Un storage credential ne contient que l'identité d'accès au compte de stockage ; il ne référence aucun chemin ni aucun répertoire.
Module Microsoft Learn : Manage non-tabular data with Unity Catalog Volumes
Question 50 / 75
Vous créez un volume Unity Catalog dans un schéma en utilisant la commande `CREATE VOLUME Catalog1.Schema1.Volume1`. Quel type de volume obtenez-vous, et quel est le comportement des fichiers si le volume est supprimé avec `DROP VOLUME` ?
Propositions de réponse :
A. Un volume externe, dont les fichiers sont préservés sur le stockage lors d'un `DROP VOLUME`
B. Un volume géré, dont les fichiers sont supprimés du stockage lors d'un `DROP VOLUME` (Réponse correcte)
C. Un volume géré, dont les fichiers sont préservés sur le stockage lors d'un `DROP VOLUME`
D. Un volume externe, dont les fichiers sont supprimés du stockage lors d'un `DROP VOLUME`
Justification :
Sans clause `LOCATION`, le volume est *géré* : Unity Catalog utilise l'emplacement de stockage par défaut associé au schéma. Comme pour une table gérée, l'objet Unity Catalog porte le cycle de vie des données — un `DROP VOLUME` supprime donc les fichiers sous-jacents. À l'inverse, un volume *externe* est créé avec une clause `LOCATION` pointant vers un chemin ADLS Gen2 : ses fichiers survivent à un `DROP VOLUME`, puisque Unity Catalog n'en gère que la référence.
Pourquoi les autres options sont incorrectes :
Option A : Elle décrit correctement le comportement d'un volume externe, mais ce n'est pas le volume créé ici : l'absence de clause `LOCATION` en fait un volume géré.
Option C : Un volume géré ne préserve pas les fichiers lors de sa suppression — c'est précisément la différence avec un volume externe.
Option D : Elle inverse le comportement réel : un volume externe préserve les fichiers sur le stockage.
Module Microsoft Learn : Manage non-tabular data with Unity Catalog Volumes
Question 51 / 75
Votre entreprise doit unifier la gouvernance des données structurées et non structurées sur Azure Databricks. Vous devez appliquer des règles de sécurité au niveau des lignes et des colonnes tout en assurant la traçabilité (lineage) globale au niveau de l'entreprise. Quel composant Azure Databricks est directement responsable de la gouvernance au niveau des objets de données, et quel service Microsoft complète cette vision au niveau de l'entreprise ?
Propositions de réponse :
A. Azure Active Directory ACLs et Azure Monitor
B. Databricks Repos et Azure Data Factory
C. Unity Catalog et Microsoft Purview (Réponse correcte)
D. DBFS Access Controls et Log Analytics
Justification :
Unity Catalog gère la gouvernance fine (sécurité au niveau des lignes et des colonnes, contrôle d'accès) directement dans le Lakehouse Databricks. Microsoft Purview s'intègre à Unity Catalog pour offrir un catalogue d'entreprise global et un suivi de la lignée de données à travers tous les services cloud.
Pourquoi les autres options sont incorrectes :
Option A : Les ACL Azure AD s'appliquent au niveau du workspace et non aux objets de données ; Azure Monitor est un service de supervision, pas de gouvernance de données.
Option B : Databricks Repos gère le versionnement du code et Azure Data Factory l'orchestration : aucun des deux ne catalogue les données ni n'applique de sécurité au niveau ligne et colonne.
Option D : Les contrôles d'accès DBFS sont un mécanisme de système de fichiers hérité, incompatible avec la gouvernance Unity Catalog par ligne et par colonne ; Log Analytics est un outil de journalisation.
Module Microsoft Learn : Explore Azure Databricks
Question 52 / 75
Dans le cadre d'un projet d'ingénierie de données sur Azure Databricks, vous devez identifier le type de charge de travail (workload) approprié pour exécuter des transformations ETL récurrentes de manière automatisée. Quelle fonctionnalité devez-vous privilégier ?
Propositions de réponse :
A. Databricks SQL Warehouse Serverless
B. Databricks Interactive Notebooks
C. Databricks AutoML
D. Lakeflow Jobs (Workflows) (Réponse correcte)
Justification :
Lakeflow Jobs (Workflows) est l'orchestrateur natif d'Azure Databricks, conçu pour planifier, exécuter et surveiller des pipelines de données automatisés et récurrents (ETL/ELT), avec gestion des dépendances, des reprises sur échec et des notifications.
Pourquoi les autres options sont incorrectes :
Option A : Les SQL Warehouses Serverless sont optimisés pour les requêtes SQL et BI interactives, pas pour l'orchestration planifiée de transformations.
Option B : Les notebooks interactifs s'exécutent manuellement, cellule par cellule : ils ne fournissent ni planification ni automatisation fiable.
Option C : AutoML génère et entraîne des modèles de machine learning ; il ne produit pas de pipelines ETL.
Module Microsoft Learn : Explore Azure Databricks
Question 53 / 75
Une équipe d'analystes souhaite effectuer des requêtes ad-hoc rapides sur des tables Delta avec un temps de démarrage minimal et une gestion automatique de la capacité sans gérer de clusters. Quel type de charge de travail devez-vous leur attribuer ?
Propositions de réponse :
A. Classic All-Purpose Cluster
B. Automated Job Cluster
C. Single-node Compute
D. Databricks SQL Warehouse (Serverless) (Réponse correcte)
Justification :
Les SQL Warehouses Serverless sont optimisés pour les requêtes BI et SQL interactives. Ils démarrent en quelques secondes et ajustent automatiquement leur capacité (mise à l'échelle) sans aucune gestion manuelle de clusters.
Pourquoi les autres options sont incorrectes :
Option A : Un cluster Classic All-Purpose met plusieurs minutes à démarrer et exige une gestion manuelle du dimensionnement et de la mise à l'échelle.
Option B : Un cluster de job automatisé est conçu pour exécuter des traitements planifiés ; il n'est pas destiné aux requêtes ad-hoc interactives et ne se prête pas au partage entre analystes.
Option C : Un calcul mono-nœud n'apporte ni la gestion automatique de capacité ni les optimisations SQL/BI attendues pour ce cas d'usage.
Module Microsoft Learn : Explore Azure Databricks
Question 54 / 75
Vous configurez un nouvel espace de travail Azure Databricks. Pour activer la gouvernance centralisée basée sur Unity Catalog, quelle étape préalable est absolument obligatoire au niveau de la structure d'administration ?
Propositions de réponse :
A. Créer un cluster All-Purpose avec la version Databricks Runtime Light.
B. Monter un compte de stockage Azure Blob avec DBFS (Databricks File System).
C. Associer le workspace à un Metastore Unity Catalog créé au niveau du compte (Account level). (Réponse correcte)
D. Activer le mode Single-User sur tous les clusters du workspace.
Justification :
Unity Catalog nécessite qu'un Metastore soit créé au niveau du compte Azure Databricks (Account Level), puis associé aux différents Workspaces concernés. C'est cette association qui rattache le workspace au catalogue central et rend la gouvernance transversale possible.
Pourquoi les autres options sont incorrectes :
Option A : Le choix de la version de Databricks Runtime est sans rapport avec l'activation de la gouvernance ; l'édition "Light" n'existe plus.
Option B : Le montage d'un stockage via DBFS est une approche héritée qui ne fournit ni catalogue central ni contrôle d'accès gouverné.
Option D : Le mode d'accès Single-User concerne l'isolation d'un cluster, pas le rattachement du workspace à un metastore Unity Catalog.
Module Microsoft Learn : Explore Azure Databricks
Question 55 / 75
Lors de l'exploration des fonctionnalités d'Azure Databricks, quelle est la méthode recommandée pour ingérer de gros volumes de fichiers CSV ou JSON stockés dans Azure Data Lake Storage Gen2 avec un minimum de code personnalisé et de façon idempotente ?
Propositions de réponse :
A. Utiliser la commande SQL COPY INTO. (Réponse correcte)
B. Exécuter une boucle spark.read personnalisée en Python.
C. Exporter les fichiers via Azure Data Factory en format Parquet puis les importer.
D. Téléverser manuellement les fichiers via l'interface graphique du workspace.
Justification :
La commande SQL COPY INTO permet d'ingérer efficacement et de manière idempotente des fichiers depuis un stockage objet vers une table Delta Lake : les fichiers déjà traités sont suivis et ne sont pas dupliqués lors des exécutions suivantes, avec un minimum de code.
Pourquoi les autres options sont incorrectes :
Option B : Une boucle spark.read maison ne tient aucun registre des fichiers déjà ingérés : elle n'est pas idempotente sans développement supplémentaire de suivi d'état.
Option C : Le passage intermédiaire par Azure Data Factory et une conversion Parquet ajoute une copie et une étape inutiles.
Option D : Le téléversement manuel n'est ni automatisable, ni industrialisable, ni idempotent.
Module Microsoft Learn : Explore Azure Databricks
Question 56 / 75
L'architecture d'Azure Databricks repose sur la séparation entre le Plan de Contrôle (Control Plane) et le Plan de Calcul (Compute Plane). Laquelle des affirmations suivantes décrit correctement l'emplacement et la responsabilité de ces deux plans dans un déploiement classique ?
Propositions de réponse :
A. Le plan de contrôle (hébergé par Microsoft) gère l'interface, les notebooks et la gestion des jobs, tandis que le plan de calcul (exécuté dans le VNet client ou dans un plan géré) exécute les clusters Spark. (Réponse correcte)
B. Le plan de contrôle s'exécute dans le sous-réseau virtuel (VNet) du client, tandis que le plan de calcul est hébergé dans le sous-réseau géré par Microsoft.
C. Les deux plans s'exécutent entièrement dans le compte de stockage Azure Data Lake du client.
D. Le plan de calcul gère uniquement les métadonnées et les clés de chiffrement, tandis que le plan de contrôle exécute les exécuteurs Spark.
Justification :
Le Control Plane est hébergé dans l'abonnement Microsoft/Databricks et prend en charge l'interface web, la gestion des utilisateurs, les notebooks et l'orchestration des jobs. Le Compute Plane exécute les traitements Spark dans l'infrastructure du client (VNet injecté) ou dans un plan de calcul géré.
Pourquoi les autres options sont incorrectes :
Option B : Elle inverse les deux plans : le plan de contrôle n'est pas hébergé dans le VNet du client.
Option C : Aucun des deux plans ne s'exécute dans le compte de stockage du client ; celui-ci héberge uniquement les données.
Option D : Elle inverse les responsabilités : c'est le plan de contrôle qui gère les métadonnées, et le plan de calcul qui exécute Spark.
Module Microsoft Learn : Understand Azure Databricks architecture
Question 57 / 75
Quelle est la différence fondamentale entre l'architecture de calcul classique (Classic Compute) et l'architecture sans serveur (Serverless Compute) dans Azure Databricks ?
Propositions de réponse :
A. Classic Compute n'utilise pas de machines virtuelles Azure, alors que Serverless en utilise.
B. Classic Compute est réservé exclusivement à Databricks SQL, tandis que Serverless est réservé à la science des données.
C. Serverless Compute exécute les ressources de calcul dans un plan géré par Databricks avec un démarrage quasi instantané, sans que le client n'ait à provisionner de VM dans son propre abonnement Azure. (Réponse correcte)
D. Serverless Compute requiert l'activation manuelle du mécanisme d'auto-scaling sur chaque cluster.
Justification :
En mode Serverless, le calcul s'exécute dans un plan géré par Databricks : les ressources sont disponibles quasi instantanément, sans provisionnement ni dimensionnement de VM dans l'abonnement Azure du client.
Pourquoi les autres options sont incorrectes :
Option A : Classic Compute s'exécute bien sur des machines virtuelles Azure provisionnées dans l'abonnement du client ; l'affirmation est donc inverse de la réalité.
Option B : Aucun des deux modes n'est réservé à un domaine : SQL comme la science des données peuvent s'exécuter dans les deux.
Option D : Le calcul Serverless ne nécessite aucun provisionnement ni réglage manuel d'auto-scaling : la capacité est gérée automatiquement.
Module Microsoft Learn : Understand Azure Databricks architecture
Question 58 / 75
Dans le cadre de l'organisation des données avec Unity Catalog, quelle est la distinction clé entre le stockage géré (Managed Storage) d'un catalogue ou d'un schéma et le stockage externe (External Locations) ?
Propositions de réponse :
A. Le stockage géré stocke les données sur le disque local du nœud Driver Spark.
B. Le stockage externe ne prend pas en charge le format Delta Lake.
C. Le stockage géré est configuré au niveau du Metastore, du Catalogue ou du Schéma pour héberger automatiquement les tables gérées, sans spécifier de chemin LOCATION. (Réponse correcte)
D. Le stockage géré supprime l'ensemble des données de l'abonnement Azure si le workspace est supprimé.
Justification :
Le Managed Storage définit un emplacement par défaut dans le stockage cloud pour les tables gérées : l'utilisateur n'a pas besoin de renseigner de chemin d'accès lors d'un CREATE TABLE. Les External Locations, elles, référencent explicitement un chemin ADLS Gen2 existant dont le cycle de vie des fichiers reste hors du contrôle d'Unity Catalog.
Pourquoi les autres options sont incorrectes :
Option A : Le stockage géré réside dans le stockage cloud (ADLS Gen2), jamais sur le disque local du nœud Driver.
Option B : Le stockage externe prend parfaitement en charge le format Delta Lake : c'est même le format recommandé.
Option D : Le metastore et l'emplacement de stockage géré sont définis au niveau du compte, indépendamment du cycle de vie d'un workspace donné.
Module Microsoft Learn : Understand Azure Databricks architecture
Question 59 / 75
Vous devez stocker des données sensibles dans un environnement Azure Databricks et vous assurer que les données au repos sont chiffrées à l'aide de clés gérées par le client (Customer-Managed Keys - CMK). Sur quels éléments de l'architecture pouvez-vous appliquer des clés CMK ?
Propositions de réponse :
A. Uniquement sur les disques locaux des workers Spark.
B. Sur le stockage du plan de contrôle (stockage DBFS racine et services gérés) et sur les disques de stockage du plan de calcul. (Réponse correcte)
C. Uniquement sur les requêtes SQL transmises à la base de données interne.
D. Les clés CMK ne sont pas prises en charge dans la version Azure de Databricks.
Justification :
Azure Databricks permet d'apporter vos propres clés (CMK) pour chiffrer à la fois les services gérés du Control Plane (notebooks, métadonnées, stockage DBFS racine) et les disques de stockage du Compute Plane.
Pourquoi les autres options sont incorrectes :
Option A : Le chiffrement par CMK ne se limite pas aux disques des workers : il couvre également le stockage des services gérés.
Option C : Le chiffrement CMK protège les données au repos sur le stockage et les disques ; il ne s'applique pas au transit des requêtes SQL.
Option D : Les clés CMK sont bien prises en charge sur Azure Databricks, via Azure Key Vault.
Module Microsoft Learn : Understand Azure Databricks architecture
Question 60 / 75
Dans la hiérarchie des comptes Azure Databricks (Account Hierarchy), quel est le rôle du niveau "Account Admin" par rapport au rôle de "Workspace Admin" ?
Propositions de réponse :
A. L'Account Admin gère les notebooks et les bibliothèques au niveau d'un seul workspace.
B. Le Workspace Admin peut créer des metastores Unity Catalog transversaux sans autorisation préalable.
C. L'Account Admin est un rôle hérité automatiquement de l'abonnement Azure Reader.
D. L'Account Admin gère la création des metastores Unity Catalog, la création des workspaces et les identités au niveau du compte global. (Réponse correcte)
Justification :
L'Account Admin opère au niveau global de l'organisation : il crée les workspaces, gère la facturation globale et provisionne les metastores Unity Catalog. Le Workspace Admin, lui, n'administre que son espace de travail local.
Pourquoi les autres options sont incorrectes :
Option A : La gestion des notebooks et des bibliothèques d'un workspace relève du Workspace Admin, non de l'Account Admin.
Option B : Seul un Account Admin peut créer et attribuer des metastores Unity Catalog ; un Workspace Admin n'en a pas le privilège.
Option C : Les rôles Azure Databricks ne sont pas hérités du rôle RBAC Azure Reader : ils sont attribués explicitement dans la console de compte.
Module Microsoft Learn : Understand Azure Databricks architecture
Question 61 / 75
Vous devez intégrer un Lakehouse Azure Databricks avec Microsoft Fabric afin que les équipes d'analyse sur Fabric puissent interroger les tables Delta de Databricks sans dupliquer physiquement les fichiers de données. Quelle fonctionnalité devez-vous utiliser ?
Propositions de réponse :
A. Raccourcis OneLake (OneLake Shortcuts) pointant vers Azure Data Lake Storage Gen2 (Réponse correcte)
B. Azure Data Factory Copy Activity en mode binaire
C. Exporter les tables au format CSV vers un serveur FTP
D. Connecteur JDBC/ODBC direct sur le cluster All-Purpose
Justification :
Les raccourcis OneLake dans Microsoft Fabric permettent de lier directement des dossiers ou des tables hébergés sur ADLS Gen2 (au format Delta) sans recopie physique des données : Fabric lit les fichiers là où ils se trouvent.
Pourquoi les autres options sont incorrectes :
Option B : Une activité de copie ADF, même en mode binaire, duplique physiquement les données — ce que la consigne exclut explicitement.
Option C : L'export CSV vers FTP duplique les données et abandonne le format Delta ainsi que le schéma.
Option D : Un connecteur JDBC/ODBC exige un cluster actif et ne s'intègre pas au modèle de stockage unifié OneLake de Fabric.
Module Microsoft Learn : Understand Azure Databricks integrations
Question 62 / 75
Un développeur souhaitant utiliser Visual Studio Code sur sa machine locale pour développer, tester et déboguer du code PySpark qui s'exécute directement sur un cluster Azure Databricks distant doit utiliser :
Propositions de réponse :
A. L'extension Azure Databricks pour VS Code exploitant Databricks Connect (Réponse correcte)
B. Databricks CLI v0.12 uniquement
C. Azure DevOps Pipeline avec agents auto-hébergés
D. L'intégration Git native sans connexion au cluster
Justification :
L'extension Databricks pour VS Code s'appuie sur Databricks Connect (gRPC) pour rediriger l'exécution du code Spark écrit en local vers un cluster Databricks distant, ce qui permet le développement, le test et le débogage pas à pas depuis l'IDE.
Pourquoi les autres options sont incorrectes :
Option B : La CLI Databricks sert à l'administration et au déploiement automatisé ; elle n'exécute pas de code PySpark et n'offre pas de débogage interactif.
Option C : Un pipeline Azure DevOps avec agents auto-hébergés relève de l'intégration continue : il exécute des tâches automatisées, pas du débogage local.
Option D : L'intégration Git versionne le code dans le workspace, mais n'établit aucune connexion d'exécution vers un cluster distant.
Module Microsoft Learn : Understand Azure Databricks integrations
Question 63 / 75
Pour connecter Power BI à un Lakehouse Azure Databricks avec les meilleures performances de temps de réponse interactif et la prise en charge des gros volumes de données sans importer physiquement les données dans Power BI, quel mode de connexion devez-vous privilégier avec les SQL Warehouses ?
Propositions de réponse :
A. Import Mode
B. Web API REST
C. DirectQuery (ou Direct Lake selon l'architecture) (Réponse correcte)
D. Dynamic File Stream
Justification :
DirectQuery permet à Power BI de déléguer l'exécution des requêtes analytiques directement au SQL Warehouse d'Azure Databricks, sans charger les données en mémoire côté Power BI : c'est le mode adapté aux gros volumes et aux données en temps quasi réel.
Pourquoi les autres options sont incorrectes :
Option A : Le mode Import copie les données dans le modèle Power BI, ce qui contredit l'exigence d'absence d'import physique et alourdit les rafraîchissements.
Option B : Une Web API REST n'est pas un mode de connexion analytique natif de Power BI vers Databricks.
Option D : Le mode "Dynamic File Stream" n'existe pas comme mode de connexion Power BI.
Module Microsoft Learn : Understand Azure Databricks integrations
Question 64 / 75
Vous souhaitez gouverner l'ensemble du patrimoine de données (Azure Databricks, Azure SQL Database, Microsoft Fabric) à partir d'un seul catalogue d'entreprise. Comment Azure Databricks s'intègre-t-il avec Microsoft Purview ?
Propositions de réponse :
A. Microsoft Purview remplace complètement le catalogue Unity Catalog.
B. Il faut écrire des scripts Python personnalisés exécutés toutes les nuits pour extraire le schéma.
C. Le connecteur Unity Catalog vers Microsoft Purview synchronise automatiquement les métadonnées, les schémas et la lignée (lineage) vers Purview. (Réponse correcte)
D. L'intégration n'est possible qu'en téléversant des fichiers Excel de dictionnaire de données.
Justification :
Le connecteur natif Microsoft Purview - Unity Catalog permet de moissonner automatiquement la structure des données et la traçabilité (lineage) générées dans Azure Databricks, et de les exposer dans le catalogue d'entreprise aux côtés des autres sources.
Pourquoi les autres options sont incorrectes :
Option A : Purview complète Unity Catalog au niveau de l'entreprise, il ne le remplace pas : Unity Catalog reste le mécanisme de gouvernance interne au Lakehouse.
Option B : Des scripts Python nocturnes sont inutiles puisque le connecteur natif assure la synchronisation des métadonnées et du lineage.
Option D : Le téléversement de fichiers Excel n'offre ni automatisation, ni lineage, ni synchronisation continue.
Module Microsoft Learn : Understand Azure Databricks integrations
Question 65 / 75
Quelle solution permet d'orchestrer un pipeline de données complexe combinant des activités Azure Data Factory, des notebooks Azure Databricks et des rafraîchissements de modèles Power BI tout en conservant la traçabilité ?
Propositions de réponse :
A. Utiliser uniquement des scripts Bash lancés via SSH sur le nœud Driver Spark.
B. Utiliser Power Automate Webhooks uniquement.
C. Utiliser Databricks Connect depuis un navigateur web.
D. Utiliser Azure Data Factory (ou Synapse Pipelines) avec les activités Azure Databricks Notebook / Job. (Réponse correcte)
Justification :
Azure Data Factory possède des activités natives Databricks (Notebook, Jar, Python) qui permettent d'intégrer Databricks au sein d'orchestrations hybrides d'entreprise, avec gestion des dépendances, surveillance centralisée et traçabilité de bout en bout.
Pourquoi les autres options sont incorrectes :
Option A : Des scripts Bash lancés en SSH n'offrent ni orchestration, ni dépendances, ni historique d'exécution exploitable.
Option B : Power Automate est un outil d'automatisation de flux métier, pas un orchestrateur de pipelines de données.
Option C : Databricks Connect est un outil de développement depuis un IDE ; il n'orchestre pas de pipelines.
Module Microsoft Learn : Understand Azure Databricks integrations
Question 66 / 75
Vous devez configurer un cluster de traitement par lots (batch) nocturne très critique dont l'échec d'exécution impacterait la production. Comment devez-vous configurer la stratégie d'instances (Instance Types) pour optimiser les coûts tout en garantissant la stabilité du job ?
Propositions de réponse :
A. Utiliser des instances Spot pour le nœud Driver et pour tous les nœuds Worker.
B. Utiliser une instance On-Demand pour le nœud Driver et des instances On-Demand (ou un mélange maîtrisé) pour les nœuds Worker. (Réponse correcte)
C. Utiliser un cluster Single-Node avec préemption activée.
D. Ne pas utiliser de cluster de job mais uniquement un cluster All-Purpose partagé.
Justification :
Le nœud Driver orchestre le job Spark : s'il est interrompu — ce qui peut arriver avec les instances Spot — tout le job échoue. Le Driver doit donc toujours reposer sur une instance On-Demand pour les traitements critiques, les instances Spot restant réservées, avec parcimonie, aux workers.
Pourquoi les autres options sont incorrectes :
Option A : Placer le Driver sur une instance Spot expose le job entier à une interruption pour raison de capacité Azure.
Option C : Un cluster Single-Node supprime toute distribution du calcul et la préemption augmente encore le risque d'interruption.
Option D : Un cluster All-Purpose partagé coûte plus cher en DBU et n'isole pas les ressources du job ; un cluster de job dédié est recommandé.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 67 / 75
Quelle est la règle concernant la facturation des unités Databricks (DBU) lors de l'utilisation d'un Instance Pool (pool d'instances) contenant des instances en attente (idle) ?
Propositions de réponse :
A. Azure Databricks facture les DBU pleines même si les instances du pool sont inactives.
B. Azure Databricks ne facture PAS de DBU pour les instances inactives d'un pool, mais les coûts des VM du fournisseur cloud (Azure) continuent de s'appliquer. (Réponse correcte)
C. Les instances inactives d'un pool sont entièrement gratuites (aucun coût Azure ni DBU).
D. Les pools d'instances ne sont utilisables qu'avec le calcul Serverless.
Justification :
Tant qu'une VM est en attente dans un Instance Pool (idle), Databricks ne facture aucune DBU. En revanche, la VM étant allouée sur Azure, le coût standard d'infrastructure Azure reste dû : il faut donc dimensionner le pool au plus juste.
Pourquoi les autres options sont incorrectes :
Option A : Aucune DBU n'est facturée tant que l'instance du pool n'exécute pas de charge de travail Databricks.
Option C : Les instances restent provisionnées sur Azure : les coûts de VM continuent de courir même sans DBU.
Option D : Les Instance Pools s'utilisent avec le calcul classique ; ils n'ont pas de lien avec le calcul Serverless.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 68 / 75
Vous devez partager un cluster interactif entre plusieurs data scientists. Pour garantir que chaque utilisateur ne puisse pas accéder aux données des autres utilisateurs non autorisés et respecter la gouvernance Unity Catalog, quel mode d'accès au cluster (Access Mode) devez-vous sélectionner ?
Propositions de réponse :
A. Shared (Isolation Shared) (Réponse correcte)
B. Single User
C. No Isolation Allowed
D. Legacy Passthrough
Justification :
Le mode d'accès "Shared" offre une isolation multi-utilisateurs sécurisée : il permet d'exécuter des requêtes SQL et Python tout en appliquant les contrôles d'accès d'Unity Catalog, chaque utilisateur ne voyant que les données auxquelles il est autorisé.
Pourquoi les autres options sont incorrectes :
Option B : Le mode Single User réserve le cluster à un seul utilisateur : il ne répond pas à l'exigence de partage.
Option C : Un mode sans isolation multi-utilisateurs n'assure aucune séparation des accès aux données entre utilisateurs.
Option D : Le mode hérité Passthrough contourne les contrôles de gouvernance d'Unity Catalog et n'offre pas l'isolation recherchée.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 69 / 75
Un travail Spark volumineux échoue fréquemment en raison de problèmes de mémoire sur le Driver (Out Of Memory - OOM). Quelle est la meilleure action corrective concernant la configuration du cluster ?
Propositions de réponse :
A. Augmenter le nombre de nœuds Worker.
B. Activer uniquement l'auto-scaling.
C. Passer le cluster en mode Single-Node.
D. Sélectionner un type d'instance avec une capacité mémoire (RAM) plus élevée pour le nœud Driver. (Réponse correcte)
Justification :
Les erreurs OOM côté Driver surviennent généralement lors des opérations de collecte de données vers le driver (par exemple .collect()) ou lors de la manipulation de larges structures en mémoire. Ajouter des workers n'y change rien : il faut choisir un type de VM offrant plus de RAM pour le nœud Driver.
Pourquoi les autres options sont incorrectes :
Option A : Le nombre de workers augmente la capacité de traitement distribué, pas la mémoire disponible sur le Driver.
Option B : L'auto-scaling ajuste le nombre de workers ; il n'accroît pas la RAM du nœud Driver.
Option C : Le mode Single-Node concentre driver et workers sur une seule machine et ne résout pas le manque de mémoire du Driver.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 70 / 75
Quelle est la méthode recommandée pour installer des bibliothèques Python spécifiques à une tâche sans impacter les autres utilisateurs d'un cluster partagé dans Azure Databricks ?
Propositions de réponse :
A. Utiliser des bibliothèques incluses au niveau du notebook via %pip install <library_name>. (Réponse correcte)
B. Installer la bibliothèque au niveau global du cluster via l'interface Compute.
C. Modifier l'image de base de la machine virtuelle du driver via SSH.
D. Déposer le fichier .whl directement à la racine DBFS /dbfs/databricks/.
Justification :
La commande %pip install installe les dépendances dans l'environnement virtuel isolé de la session du notebook en cours. Les versions installées restent donc locales à cette session, ce qui évite tout conflit avec les autres utilisateurs d'un cluster partagé.
Pourquoi les autres options sont incorrectes :
Option B : Une installation au niveau du cluster s'applique à tous les utilisateurs du cluster partagé et peut provoquer des conflits de versions.
Option C : Modifier l'image de base de la VM n'est ni une pratique supportée, ni une opération persistante, et affecte l'ensemble des utilisateurs.
Option D : Déposer un fichier .whl dans DBFS ne l'installe pas dans l'environnement Python du notebook : il faut ensuite l'installer explicitement.
Module Microsoft Learn : Configure and manage compute in Azure Databricks
Question 71 / 75
Dans Unity Catalog, quelle est la structure exacte du namespace à trois niveaux obligatoire pour référencer un objet de données (comme une table ou une vue) dans une requête SQL ?
Propositions de réponse :
A. workspace.schema.table
B. database.table.column
C. catalog.schema.object (ex. : catalog.schema.table) (Réponse correcte)
D. metastore.catalog.table
Justification :
Unity Catalog utilise un espace de noms à trois niveaux strict : catalog.schema.table (ou vue, ou volume). Ce namespace est la clé de voûte de la gouvernance : les privilèges peuvent être accordés à chacun de ces niveaux.
Pourquoi les autres options sont incorrectes :
Option A : Le workspace n'est pas le premier niveau du namespace Unity Catalog ; le catalogue l'est.
Option B : Cette notation mélange un objet (table) et un attribut (colonne) : une colonne ne fait pas partie du namespace des objets.
Option D : Le metastore est un conteneur d'administration de niveau compte ; il n'apparaît pas dans le chemin à trois niveaux utilisé dans les requêtes.
Module Microsoft Learn : Manage database objects with Unity Catalog
Question 72 / 75
Quelle est la différence fondamentale entre une Table Gérée (Managed Table) et une Table Externe (External Table) lors de l'exécution de la commande DROP TABLE dans Unity Catalog ?
Propositions de réponse :
A. Pour une table gérée, seules les métadonnées sont supprimées ; pour une table externe, tout est supprimé.
B. Pour une table gérée, les métadonnées ET les fichiers de données physiques sous-jacents sont supprimés. Pour une table externe, seules les métadonnées sont supprimées. (Réponse correcte)
C. Les tables externes ne peuvent pas être supprimées via SQL.
D. Il n'y a aucune différence de comportement lors du DROP TABLE.
Justification :
Supprimer une table gérée supprime la définition dans le metastore ET le dossier de stockage physique. Supprimer une table externe supprime la définition dans le catalogue mais conserve les fichiers bruts intacts sur le stockage : Unity Catalog n'en gère que la référence.
Pourquoi les autres options sont incorrectes :
Option A : Elle inverse le comportement réel des deux types de tables.
Option C : Les tables externes se suppriment parfaitement via SQL ; seule leur donnée physique est préservée.
Option D : Le comportement diffère précisément sur le point du cycle de vie des fichiers de données.
Module Microsoft Learn : Manage database objects with Unity Catalog
Question 73 / 75
Vous devez interroger des tables hébergées dans une base de données PostgreSQL externe directement depuis Azure Databricks sans effectuer d'ETL préalable ni dupliquer les données. Quelle fonctionnalité de Unity Catalog devez-vous utiliser ?
Propositions de réponse :
A. Un Volume Externe (External Volume)
B. Un Catalogue Étranger (Foreign Catalog) via Lakehouse Federation (Réponse correcte)
C. Un partage Delta Sharing
D. Une Vue Matérialisée (Materialized View)
Justification :
Lakehouse Federation permet de configurer des "Foreign Catalogs" afin d'exécuter des requêtes fédérées directement sur des SGBD distants (PostgreSQL, Snowflake, SQL Server, etc.), tout en bénéficiant de la gouvernance et du namespace Unity Catalog, sans copie des données.
Pourquoi les autres options sont incorrectes :
Option A : Un volume stocke et gouverne des fichiers non structurés : il ne fédère pas l'accès à une base de données relationnelle externe.
Option C : Delta Sharing partage des données Delta entre organisations ou consommateurs ; il ne fournit pas d'accès fédéré à un SGBD tiers.
Option D : Une vue matérialisée précalcule et stocke le résultat d'une requête : cela constitue une duplication des données, exclue par la consigne.
Module Microsoft Learn : Manage database objects with Unity Catalog
Question 74 / 75
Dans Unity Catalog, quel objet devez-vous utiliser pour stocker, gérer et gouverner l'accès à des données non structurées (images, fichiers audio, PDF, fichiers d'inspection) ?
Propositions de réponse :
A. External Table
B. Streaming Table
C. Volume (Managed ou External Volume) (Réponse correcte)
D. Delta Lake Index
Justification :
Les Volumes sont des objets Unity Catalog spécialement conçus pour gouverner et donner accès aux fichiers non structurés (images, PDF, CSV bruts, fichiers audio, etc.), avec les mêmes mécanismes de privilèges et de lineage que les tables.
Pourquoi les autres options sont incorrectes :
Option A : Une table externe est conçue pour des données tabulaires structurées, pas pour des fichiers arbitraires.
Option B : Une Streaming Table est destinée à l'ingestion continue de données tabulaires, pas au stockage de fichiers non structurés.
Option D : Un index Delta Lake est une structure d'optimisation des lectures au sein d'une table ; ce n'est pas un objet de gouvernance de fichiers.
Module Microsoft Learn : Manage database objects with Unity Catalog
Question 75 / 75
Dans le cadre de l'utilisation des fonctionnalités d'IA et de Business Intelligence d'Azure Databricks, à quoi sert AI/BI Genie ?
Propositions de réponse :
A. À générer automatiquement des pipelines ETL en PySpark à partir de schémas JSON.
B. À chiffrer les colonnes contenant des PII (données personnelles) dans Delta Lake.
C. À remplacer l'optimiseur de requêtes Catalyst dans Apache Spark.
D. À fournir une interface conversationnelle basée sur l'IA permettant aux utilisateurs métier de poser des questions en langage naturel et d'obtenir des réponses analytiques précises sur les données du Lakehouse. (Réponse correcte)
Justification :
AI/BI Genie est un assistant conversationnel basé sur l'IA qui interprète les questions en langage naturel formulées par des utilisateurs non techniques et les traduit en requêtes SQL exécutées sur le Lakehouse, en respectant les droits Unity Catalog de l'utilisateur.
Pourquoi les autres options sont incorrectes :
Option A : La génération de pipelines ETL n'entre pas dans le périmètre de Genie, qui se limite à l'interrogation analytique en langage naturel.
Option B : Le masquage et le chiffrement des données personnelles relèvent des column masks et des fonctions de masquage, pas de Genie.
Option C : Genie produit du SQL destiné à Catalyst ; il ne remplace en aucun cas l'optimiseur de requêtes de Spark.
Module Microsoft Learn : Manage database objects with Unity Catalog