• nouveau

    Version 2026.06 - Intégrer la Data Observability au cœur de votre code

  • nouveau

    Contribuez à l'avenir de l'innovation en matière d'IA et de données

  • nouveau

    • Version 2026.06 - Intégrer la Data Observability au cœur de votre code

  • nouveau

    • Contribuez à l'avenir de l'innovation en matière d'IA et de données

Schéma en étoile et en flocon

|

6

minute de lecture

Votre entrepôt n'a probablement pas commencé par un débat sur les schémas. Il a commencé par une demande de tableau de bord, un rapport sur les revenus, une vue client, puis une pile de nouvelles sources qui devaient toutes atterrir dans un endroit logique. Des mois plus tard, les analystes ajoutent des jointures par habitude, les requêtes BI ralentissent et personne n'est d'accord sur le fait que le modèle soit censé être simple pour le reporting ou strict pour la governance.

C'est là que la conversation sur le soi-disant **schéma en étoile-flocon** (Star Snowflake Schema) apparaît généralement. En pratique, l'expression est trompeuse. Les équipes l'utilisent lorsqu'elles ne travaillent plus avec une étoile pure ou un flocon pur et ont besoin d'un moyen pratique de parler de modèles mixtes fonctionnant en production. La question de fond n'est pas académique. Il s'agit de savoir si vos tables de faits, vos dimensions, vos jointures et vos contrôles de qualité soutiennent toujours la façon dont les gens interrogent et font confiance à l'entrepôt.

La plupart des articles s'arrêtent aux définitions. Ce n'est pas suffisant lorsqu'un modèle est en production, partagé entre les équipes et change sous la charge. Le problème le plus difficile est opérationnel : comment choisir le bon modèle, où la conception hybride est utile, et comment surveiller les points de rupture qui apparaissent lorsque des structures dénormalisées et normalisées coexistent.

Table des matières

Au carrefour de la conception d'entrepôts de données

Un schéma familier apparaît dans les équipes de données en pleine croissance. Le premier modèle d'entrepôt est construit rapidement, généralement autour d'une poignée de tableaux de bord et de quelques sources bien comprises. Cela fonctionne. Ensuite, l'entreprise ajoute des rapports régionaux, la hiérarchie des produits change, la finance souhaite un rapprochement plus strict, et quelqu'un se demande pourquoi le tableau de bord qui se chargeait instantanément traîne maintenant à travers plusieurs jointures.

À ce stade, la conception du schéma cesse d'être une préférence de modélisation et devient une contrainte opérationnelle. La façon dont vous structurez les faits et les dimensions affecte la vitesse des requêtes, la convivialité de la BI, le comportement du stockage et la difficulté des changements futurs. Cela affecte également qui peut travailler en toute sécurité avec le modèle. Une conception plate aide les analystes à aller vite. Une conception plus normalisée offre aux ingénieurs un contrôle plus étroit sur la cohérence dimensionnelle.

Les équipes regrettent rarement de décider délibérément. Elles regrettent d'hériter d'une structure qui a grandi par accident.

L'expression schéma en étoile-flocon apparaît souvent à cet endroit précis, au moment où un entrepôt n'est plus proprement l'un ou l'autre. C'est un raccourci utile dans la conversation, mais cela cache un détail important. Vous ne choisissez pas un standard hybride formel. Vous décidez où garder les dimensions plates, où les normaliser, et ce que cela signifie pour les performances, la governance et l'Observability en production.

Architectures fondamentales : schémas en étoile et en flocon de neige

Le terme schéma en étoile-flocon ressemble à une technique de modélisation unique. Ce n'est pas le cas. Il mélange deux modèles dimensionnels distincts qui résolvent des problèmes différents.

Le premier est le schéma en étoile. Le second est le schéma en flocon de neige. Selon l'explication de Snowflake sur les principes fondamentaux du schéma en étoile, le schéma en étoile est l'approche la plus largement utilisée pour développer des entrepôts de données, avec une ou plusieurs tables de faits connectées à des tables de dimensions dénormalisées pour des requêtes plus simples et des performances plus rapides. Le schéma en flocon de neige en est la forme étendue, où ces dimensions sont normalisées en tables de sous-dimensions.

Pour les équipes qui conçoivent des modèles analytiques, cette différence représente tout le jeu.

A diagram comparing star schema and snowflake schema data architectures with simple and complex table connections.

Le schéma en étoile comme modèle en moyeu

Un schéma en étoile place une table de faits au centre et la connecte directement aux tables de dimensions environnantes. Pensez aux faits de vente au milieu, puis aux dimensions produit, client, date et magasin tout autour. Chaque dimension porte les attributs descriptifs dont les analystes ont besoin pour le regroupement et le filtrage.

Cette forme directe est importante car elle maintient le SQL court et prévisible. Les analystes peuvent joindre la table de faits aux dimensions sans avoir à naviguer dans des tables de hiérarchie pour la catégorie, la région ou le département. Si votre priorité est la vitesse de reporting et la lisibilité du modèle, c'est pourquoi les schémas en étoile restent le point de départ par défaut.

Une référence pratique sur la modélisation d'entrepôt comme le guide de modélisation des données d'entrepôt de digna est utile ici car elle cadre le choix de conception autour du comportement analytique, et pas seulement de la normalisation académique.

Le schéma en flocon comme modèle arborescent

Un schéma en flocon part du même centre, mais les tables de dimensions se ramifient en sous-dimensions associées. Produit peut se diviser en tables de sous-catégories et de catégories. Géographie peut se diviser en ville, région et pays. La forme devient plus hiérarchique, et la couche de dimension reflète plus explicitement les données de référence partagées.

Cette normalisation réduit la redondance et favorise une cohérence plus forte entre les attributs dimensionnels. Si un nom de catégorie change, vous mettez à jour la ligne de dimension concernée plutôt que de répéter le changement dans une table dénormalisée plus plate. Le compromis est évident en SQL. Plus de tables signifient plus de jointures. Plus de jointures signifient plus de complexité dans les requêtes BI, la planification des requêtes et le dépannage.

Règle pratique : Utilisez une étoile lorsque les gens interrogent constamment. Utilisez un flocon lorsque le fait de se tromper sur la cohérence des dimensions coûte cher.

Une comparaison détaillée des principales différences

Un choix de conception commence à avoir de l'importance lorsque le trafic de production l'atteint. La différence entre l'étoile et le flocon se manifeste d'abord à trois niveaux : la latence des requêtes, la maintenance du modèle et la quantité de surveillance requise pour garantir la fiabilité des dimensions au fil du temps.

Tableau de comparaison préliminaire

Critères

Schéma en étoile

Schéma en flocon

Structure centrale

Dimensions dénormalisées autour d'une table de faits centrale

Dimensions normalisées se ramifiant en sous-dimensions

Comportement des requêtes

SQL plus simple, moins de jointures

Plus de chemins de jointure, SQL plus complexe

Facilité d'utilisation pour l'analyste

Plus facile pour les outils BI et le reporting en libre-service

Plus difficile à comprendre et à utiliser pour les utilisateurs occasionnels

Cohérence dimensionnelle

Bonne, mais duplique les données descriptives

Intégrité renforcée pour les attributs partagés

Modèle de stockage

Plus de redondance dans les dimensions

Meilleure efficacité de stockage

Style de maintenance

Plus rapide à construire, plus simple à exposer

Modélisation et gestion des dépendances plus attentives

Idéal pour

Analyses et tableaux de bord intensifs en lecture

Grandes dimensions et governance plus stricte

A comparison chart outlining the key differences between Star and Snowflake database schemas for data warehousing.

Performances et comportement des jointures

Le nombre de jointures reste l'indicateur le plus clair du comportement quotidien des requêtes. Dans un schéma en étoile, les analystes joignent généralement la table de faits à un petit ensemble de dimensions larges et s'arrêtent là. Dans un schéma en flocon, ces dimensions se divisent souvent en tables de hiérarchie, de sorte que chaque rapport qui groupe par catégorie, région ou département ajoute du travail de jointure pour le moteur et augmente le risque d'erreurs SQL.

La comparaison de Fivetran entre le schéma en étoile et les modèles de grande table unique (One Big Table) confirme la direction générale de ce compromis sur Redshift, Snowflake et BigQuery. Les modèles plus plats se lisent généralement plus rapidement. Cela ne fait pas du flocon un mauvais design. Cela signifie que chaque branche normalisée doit justifier son coût en termes de latence, de complexité sémantique et de charge de support.

Cela se répercute rapidement dans les outils de BI. Les couches sémantiques sont plus faciles à modéliser sur des étoiles car le graphe de jointure est plus petit et plus stable. Les plans d'exécution des requêtes sont également plus faciles à analyser lors de la résolution d'incidents. Lorsqu'un tableau de bord ralentit après une modification de schéma, un modèle de dimension plat offre aux ingénieurs moins d'endroits à inspecter.

Intégrité, stockage et maintenance opérationnelle

Les schémas en flocon gagnent leur place lorsque la cohérence dimensionnelle représente un coût opérationnel réel. La taxonomie des produits, les structures d'entités juridiques, les classifications de clients réglementées et les hiérarchies géographiques évoluent souvent sous une governance plus stricte que les faits qui y font référence. Normaliser ces structures réduit les attributs dupliqués et diminue le risque que deux rapports utilisent des versions différentes d'une même valeur de référence.

L'efficacité du stockage est un avantage secondaire, maintenant que le calcul des entrepôts coûte généralement plus cher en attention que le disque brut. Le problème majeur est la gestion du changement. Un schéma en étoile déporte la complexité vers les pipelines ETL ou ELT qui aplatissent les dimensions avant que les analystes ne les interrogent. Un schéma en flocon maintient le modèle de référence plus propre, mais il déplace plus de complexité vers les jointures, les définitions sémantiques et le suivi des dépendances.

Ce compromis affecte différentes équipes de différentes manières :

  • Les analystes écrivent des requêtes SQL plus courtes sur des étoiles et passent moins de temps à retracer la logique de hiérarchie sur plusieurs tables.

  • Les data engineers passent moins de temps à exposer des datamarts organisés sur des étoiles simples, mais plus de temps à gérer les attributs dupliqués et les rechargements historiques lorsque les valeurs de dimension dérivent.

  • Les développeurs BI et analytics engineers effectuent un travail de modélisation sémantique plus important sur les flocons car chaque branche supplémentaire nécessite une logique de jointure testée, un nommage clair et des barrières contre les erreurs de démultiplication des lignes (fan-out).

  • Les équipes plateforme ont besoin d'une Observability plus forte sur les flocons. Des liens hiérarchiques rompus, des clés orphelines et des chargements de dimensions retardés peuvent dégrader l'exactitude des rapports sans provoquer de panne franche du pipeline.

En production, ce dernier point importe plus que ne l'admettent de nombreux guides de conception. Un schéma en étoile échoue généralement de manière visible, par exemple avec des attributs dénormalisés obsolètes ou des reconstructions plus lentes. Un schéma en flocon peut échouer de manière subtile. Une seule ligne manquante dans une sous-dimension peut modifier les agrégats, masquer des catégories dans les tableaux de bord ou générer des chemins d'exploration incohérents entre les outils. C'est pourquoi le choix du schéma doit inclure une question opérationnelle, et pas seulement de modélisation : quel mode de défaillance est le plus facile à détecter, à expliquer et à corriger pour votre équipe ?

L'essor des modèles hybrides étoile-flocon

Très peu d'entrepôts en production restent purs longtemps. Les dimensions produit restent plates car les analystes les consultent quotidiennement. La géographie est normalisée car les hiérarchies régionales changent. Les attributs clients se séparent car les règles de governance exigent un contrôle plus strict sur certains champs et pas sur d'autres. C'est ce que l'on qualifie souvent de schéma en étoile-flocon.

Ce n'est pas une troisième architecture canonique. C'est un modèle mixte pratique.

A diagram comparing star and snowflake data schema architectures with a hybrid model in the center.

Où apparaissent les modèles hybrides

Les modèles hybrides émergent généralement de l'une des trois manières suivantes.

  • Un entrepôt majoritairement en étoile avec une dimension en flocon. C'est fréquent pour la géographie, la taxonomie des produits ou la hiérarchie organisationnelle.

  • Un cœur gouverné avec des datamarts aplatis. L'entrepôt conserve des dimensions de référence normalisées, puis les datamarts en aval exposent des vues dénormalisées pour la consommation BI.

  • Un modèle qui a évolué au fil du temps. De nouvelles dimensions ont été ajoutées sous des contraintes différentes, de sorte que certaines sont restées plates tandis que d'autres ont été normalisées.

Cette approche mixte est souvent raisonnable. Selon la comparaison de Big Data Boutique, les schémas en étoile restent le point de départ optimal pour 90 % des cas d'utilisation analytique, les modèles en flocon étant réservés aux grandes dimensions ou aux exigences de governance strictes.

Ce qui fonctionne et ce qui casse

Ce qui fonctionne, c'est la normalisation sélective. Une équipe peut conserver les dimensions à fort trafic à plat pour optimiser les performances des tableaux de bord et concevoir en flocon les quelques dimensions où le coût de la redondance ou de la governance est réel. Cela peut être une conception rigoureuse.

Ce qui ne fonctionne pas, c'est l'incohérence accidentelle. Une dimension suit une nomenclature normalisée. Une autre stocke des attributs en double dans deux endroits différents. Les analystes ne savent pas si la catégorie doit provenir de la table produit plate ou de la table catégorie normalisée. SQL commence à renvoyer des réponses techniquement valides mais logiquement incohérentes.

Un modèle hybride augmente également la charge opérationnelle :

Choix de conception hybride

Avantage

Risque courant

Dimension produit plate

Analyse rapide dans la BI

Dérive des attributs de catégorie dupliqués

Dimension géographie normalisée

Hiérarchie réutilisable

Jointures supplémentaires dans les rapports riches en données géographiques

Tables de référence partagées

Meilleure intégrité

Analyse d'impact et lignage plus difficiles

Marts et modèles centraux mixtes

Consommation flexible

Confusion quant aux champs faisant autorité

Les modèles hybrides échouent lorsque les équipes mélangent les modèles sans discipline de nommage, de propriété et de validation.

Comment choisir le bon schéma pour votre cas d'utilisation

Une décision de schéma est généralement imposée par un problème de production, et non par la théorie. Une équipe BI fait face à des plaintes concernant la lenteur des tableaux de bord. Un responsable de la governance constate des hiérarchies de produits contradictoires dans les rapports financiers et commerciaux. Une équipe plateforme passe trop de temps à réparer les mises à jour de dimensions après des modifications de sources. Le bon choix commence par le mode de défaillance que vous devez réduire.

A decision framework infographic comparing Star and Snowflake schema choices based on query speed and data storage.

Une grille de décision pratique

Commencez par le chemin de la requête. Si les analystes, les développeurs BI ou les outils en aval interrogent directement les tables de l'entrepôt, l'étoile est généralement l'option par défaut la plus sûre car elle maintient les jointures prévisibles et permet de repérer plus facilement les erreurs sémantiques. Si une couche sémantique masque la complexité du modèle, vous disposez de plus de marge pour normaliser, mais le coût de maintenance ne disparaît pas pour autant. Les data engineers restent propriétaires des jointures, de la gestion des clés et de la logique hiérarchique sous-jacente.

La question suivante est la fréquence de changement. Le floconnage est rentable lorsque les structures de dimensions changent assez souvent pour que les mises à jour répétées d'attributs deviennent un coût opérationnel réel. La taxonomie des produits, les restructurations d'entités juridiques, les découpages régionaux et les plans de comptes en sont des exemples courants. Dans ces cas, la normalisation relève moins de l'élégance que du contrôle des chemins de mise à jour, de la réduction de la logique métier dupliquée et de la limitation du risque qu'un rapport utilise des données de référence obsolètes.

Les performances comptent toujours, mais le compromis est plus large que le simple nombre de jointures. Les schémas en étoile facilitent généralement les analyses ad hoc et sont plus simples à optimiser. Les schémas en flocon peuvent améliorer la cohérence dans les dimensions partagées, mais ils créent également plus de dépendances, plus de lignage à tracer et plus de possibilités pour les modifications en amont de casser les requêtes en aval.

Utilisez ces questions pour rendre la décision concrète :

  1. Qui est propriétaire du dernier segment de la requête ? Les utilisateurs de SQL direct s'en sortent généralement mieux avec des dimensions plus plates.

  2. Quelles dimensions changent structurellement, et pas seulement en nombre de lignes ? Les changements fréquents de hiérarchie justifient souvent la normalisation.

  3. Où les données erronées génèrent-elles le coût le plus élevé ? Si des valeurs de référence dupliquées ou contradictoires posent des problèmes d'audit, de finance ou de Compliance, le contrôle peut s'avérer plus important que la vitesse.

  4. Combien de modèles en aval réutilisent la même logique de dimension ? Une logique partagée oriente la conception vers un contrôle centralisé plus fort.

  5. L'équipe peut-elle surveiller le modèle suffisamment bien pour assumer cette complexité supplémentaire ? Une conception en flocon ou hybride nécessite un lignage plus rigoureux, des contrôles de fraîcheur et une surveillance de l'intégrité des clés. Les équipes qui investissent déjà dans des pratiques de Data Observability peuvent gérer cette complexité de manière plus sûre.

Points de départ par cas d'utilisation

Certaines configurations par défaut fonctionnent très bien en pratique.

  • Analyses des ventes de détail : Commencez par une version en étoile. Les dimensions produit, magasin, client et date sont filtrées en permanence, et la réactivité du tableau de bord compte généralement plus que la réduction d'une redondance dimensionnelle modeste.

  • Reporting financier avec hiérarchies contrôlées : Commencez par un floconnage sélectif ou un modèle hybride gouverné. Les structures de comptes et d'entités changent sous des contrôles formels, et des consolidations incohérentes créent rapidement un risque pour le reporting.

  • Comportement des utilisateurs et analyses produits : Restez à plat à moins qu'une dimension soit à la fois volumineuse et fortement réutilisée. Ces équipes modifient rapidement les définitions, et chaque jointure supplémentaire ralentit l'analyse et augmente le risque d'un SQL incohérent.

  • Secteur de la santé et opérations réglementées : Attendez-vous à un modèle hybride. Les utilisateurs de reporting ont toujours besoin de datamarts utilisables, mais les données de référence sur les prestataires, les emplacements, les codes et l'organisation nécessitent souvent un contrôle plus strict et une propriété plus claire.

Une courte vérification permet d'éviter de nombreuses mauvaises implémentations :

  • Demandez à l'équipe BI quelles dimensions pilotent la plupart des filtres, des chemins d'exploration et de la latence des tableaux de bord.

  • Demandez aux gestionnaires de la gouvernance quels attributs doivent impérativement provenir d'une table unique et contrôlée.

  • Demandez aux analystes à quel endroit la logique de jointure génère déjà des réponses incohérentes.

  • Demandez aux ingénieurs plateforme quelles dimensions échouent le plus souvent lors des modifications de schéma source ou des mises à jour tardives.

Si ces réponses sont vagues, la conception n'est pas prête. Le schéma doit refléter la manière dont l'entrepôt est exploité, surveillé et débogué en production, et pas seulement son aspect sur un tableau blanc.

Surveillance et Observability pour votre schéma

La conception de schéma n'est pas un choix unique. C'est un environnement opérationnel en constante évolution sous l'effet des mises à jour des flux d'intégration, des révisions de modèles, des publications d'applications sources et des nouveaux consommateurs en aval. Le modèle qui était correct le trimestre dernier peut devenir fragile sans que personne ne l'ait formellement repensé.

C'est particulièrement vrai pour un schéma en étoile-flocon au sens pratique d'un modèle de production mixte.

Screenshot from https://digna.ai

Le choix du schéma n'est pas la fin du travail

Les équipes surveillent souvent le succès des pipelines de données et le coût de l'entrepôt, mais elles ne surveillent pas d'assez près le modèle lui-même. Cet écart se manifeste par une dérive de schéma, une dérive silencieuse de la distribution dans les tables de faits, des dimensions arrivant tardivement, des clés étrangères orphelines ou une logique métier qui passe l'étape de validation structurelle tout en échouant sur le plan analytique.

Le problème s'accentue dans les environnements hybrides. La discussion de ThoughtSpot sur la complexité des schémas note que 40 % des équipes analytiques utilisent désormais des modèles hybrides pour équilibrer la vitesse des requêtes et le stockage, alors que les guides généraux laissent toujours un vide autour de la validation de la logique métier au niveau de l'enregistrement sur ces structures incohérentes.

Un programme général d'Observability pour ces modèles devrait surveiller quatre points :

  • Modifications structurelles : Colonnes ajoutées, colonnes supprimées et changements de types de données dans les tables de faits ou de dimensions.

  • Santé relationnelle : Clés étrangères rompues, lignes de dimensions manquantes et correspondances hiérarchiques incorrectes.

  • Dérive comportementale : Variations inattendues des volumes, des distributions de valeurs ou des motifs de valeurs nulles, même lorsque le schéma n'a pas changé.

  • Délais de livraison : Chargements tardifs qui ne bloquent pas le SQL mais brisent la confiance dans les rapports.

Que surveiller dans les modèles mixtes

Une option pratique est l'approche de Data Observability de digna, en particulier lorsqu'une équipe a besoin d'une surveillance en base de données au sein d'un cloud privé ou d'un environnement sur site. La documentation de la plateforme indique que le calcul des métriques, les lignes de référence et l'analyse des tendances s'exécutent au sein de la base de données du client avec zéro mouvement de données, et son outil de suivi de schéma (Schema Tracker) signale en temps réel les changements structurels comme les colonnes ajoutées ou supprimées ainsi que les modifications de types de données. Sa détection d'anomalies apprend le comportement normal pour les profils temporels et saisonniers et peut détecter des écarts dans les volumes d'enregistrements, les distributions, les problèmes de clés métier composites et les enregistrements de clés étrangères orphelins. La surveillance de la ponctualité suit également les schémas de livraison attendus afin de détecter les retards avant qu'ils ne se propagent dans les rapports.

C'est important car les modèles en étoile et en flocon échouent différemment. Dans une conception en étoile, les dimensions dénormalisées ont tendance à masquer la duplication et les attributs descriptifs obsolètes. Dans une conception en flocon, le risque se déplace vers des chaînes de jointure rompues, des mises à jour de hiérarchies manquées et des régressions de performance latentes. Dans un modèle hybride, vous subissez ces deux catégories d'anomalies.

Ne vous contentez pas de surveiller si les tables sont chargées. Surveillez si le modèle correspond toujours à ce que vos utilisateurs pensent qu'il signifie.

Exemples de modèles de données et de requêtes SQL

La différence de conception devient évidente dès que vous écrivez du SQL pour ces deux modèles. Vous trouverez ci-dessous le même cas d'utilisation de vente modélisé de deux façons : ventes totales par catégorie de produit et région du client.

Exemple de schéma en étoile

Un modèle en étoile conserve la catégorie et la région directement dans les dimensions que la plupart des analystes utilisent déjà.

CREATE TABLE fact_sales (
  sale_id BIGINT,
  date_id INT,
  product_id INT,
  customer_id INT,
  quantity INT,
  revenue NUMERIC(18,2)
);

CREATE TABLE dim_product (
  product_id INT,
  product_name VARCHAR(255),
  category_name VARCHAR(255)
);

CREATE TABLE dim_customer (
  customer_id INT,
  customer_name VARCHAR(255),
  region_name VARCHAR(255)
);

CREATE TABLE dim_date (
  date_id INT,
  calendar_date DATE,
  month_name VARCHAR(20),
  year_num INT
);
CREATE TABLE fact_sales (
  sale_id BIGINT,
  date_id INT,
  product_id INT,
  customer_id INT,
  quantity INT,
  revenue NUMERIC(18,2)
);

CREATE TABLE dim_product (
  product_id INT,
  product_name VARCHAR(255),
  category_name VARCHAR(255)
);

CREATE TABLE dim_customer (
  customer_id INT,
  customer_name VARCHAR(255),
  region_name VARCHAR(255)
);

CREATE TABLE dim_date (
  date_id INT,
  calendar_date DATE,
  month_name VARCHAR(20),
  year_num INT
);
CREATE TABLE fact_sales (
  sale_id BIGINT,
  date_id INT,
  product_id INT,
  customer_id INT,
  quantity INT,
  revenue NUMERIC(18,2)
);

CREATE TABLE dim_product (
  product_id INT,
  product_name VARCHAR(255),
  category_name VARCHAR(255)
);

CREATE TABLE dim_customer (
  customer_id INT,
  customer_name VARCHAR(255),
  region_name VARCHAR(255)
);

CREATE TABLE dim_date (
  date_id INT,
  calendar_date DATE,
  month_name VARCHAR(20),
  year_num INT
);

Requête :

SELECT
  p.category_name,
  c.region_name,
  SUM(f.revenue) AS total_revenue
FROM fact_sales f
JOIN dim_product p
  ON f.product_id = p.product_id
JOIN dim_customer c
  ON f.customer_id = c.customer_id
GROUP BY
  p.category_name,
  c.region_name
ORDER BY
  total_revenue DESC;
SELECT
  p.category_name,
  c.region_name,
  SUM(f.revenue) AS total_revenue
FROM fact_sales f
JOIN dim_product p
  ON f.product_id = p.product_id
JOIN dim_customer c
  ON f.customer_id = c.customer_id
GROUP BY
  p.category_name,
  c.region_name
ORDER BY
  total_revenue DESC;
SELECT
  p.category_name,
  c.region_name,
  SUM(f.revenue) AS total_revenue
FROM fact_sales f
JOIN dim_product p
  ON f.product_id = p.product_id
JOIN dim_customer c
  ON f.customer_id = c.customer_id
GROUP BY
  p.category_name,
  c.region_name
ORDER BY
  total_revenue DESC;

Cette requête est courte, lisible et difficile à utiliser de manière incorrecte. Pour la plupart des charges de travail de BI, c'est tout l'intérêt.

Exemple de schéma en flocon

Un modèle en flocon déplace la catégorie et la région vers des tables de hiérarchie normalisées.

CREATE TABLE fact_sales (
  sale_id BIGINT,
  date_id INT,
  product_id INT,
  customer_id INT,
  quantity INT,
  revenue NUMERIC(18,2)
);

CREATE TABLE dim_product (
  product_id INT,
  product_name VARCHAR(255),
  category_id INT
);

CREATE TABLE dim_category (
  category_id INT,
  category_name VARCHAR(255)
);

CREATE TABLE dim_customer (
  customer_id INT,
  customer_name VARCHAR(255),
  region_id INT
);

CREATE TABLE dim_region (
  region_id INT,
  region_name VARCHAR(255)
);

CREATE TABLE dim_date (
  date_id INT,
  calendar_date DATE,
  month_name VARCHAR(20),
  year_num INT
);
CREATE TABLE fact_sales (
  sale_id BIGINT,
  date_id INT,
  product_id INT,
  customer_id INT,
  quantity INT,
  revenue NUMERIC(18,2)
);

CREATE TABLE dim_product (
  product_id INT,
  product_name VARCHAR(255),
  category_id INT
);

CREATE TABLE dim_category (
  category_id INT,
  category_name VARCHAR(255)
);

CREATE TABLE dim_customer (
  customer_id INT,
  customer_name VARCHAR(255),
  region_id INT
);

CREATE TABLE dim_region (
  region_id INT,
  region_name VARCHAR(255)
);

CREATE TABLE dim_date (
  date_id INT,
  calendar_date DATE,
  month_name VARCHAR(20),
  year_num INT
);
CREATE TABLE fact_sales (
  sale_id BIGINT,
  date_id INT,
  product_id INT,
  customer_id INT,
  quantity INT,
  revenue NUMERIC(18,2)
);

CREATE TABLE dim_product (
  product_id INT,
  product_name VARCHAR(255),
  category_id INT
);

CREATE TABLE dim_category (
  category_id INT,
  category_name VARCHAR(255)
);

CREATE TABLE dim_customer (
  customer_id INT,
  customer_name VARCHAR(255),
  region_id INT
);

CREATE TABLE dim_region (
  region_id INT,
  region_name VARCHAR(255)
);

CREATE TABLE dim_date (
  date_id INT,
  calendar_date DATE,
  month_name VARCHAR(20),
  year_num INT
);

Requête :

SELECT
  cat.category_name,
  r.region_name,
  SUM(f.revenue) AS total_revenue
FROM fact_sales f
JOIN dim_product p
  ON f.product_id = p.product_id
JOIN dim_category cat
  ON p.category_id = cat.category_id
JOIN dim_customer c
  ON f.customer_id = c.customer_id
JOIN dim_region r
  ON c.region_id = r.region_id
GROUP BY
  cat.category_name,
  r.region_name
ORDER BY
  total_revenue DESC;
SELECT
  cat.category_name,
  r.region_name,
  SUM(f.revenue) AS total_revenue
FROM fact_sales f
JOIN dim_product p
  ON f.product_id = p.product_id
JOIN dim_category cat
  ON p.category_id = cat.category_id
JOIN dim_customer c
  ON f.customer_id = c.customer_id
JOIN dim_region r
  ON c.region_id = r.region_id
GROUP BY
  cat.category_name,
  r.region_name
ORDER BY
  total_revenue DESC;
SELECT
  cat.category_name,
  r.region_name,
  SUM(f.revenue) AS total_revenue
FROM fact_sales f
JOIN dim_product p
  ON f.product_id = p.product_id
JOIN dim_category cat
  ON p.category_id = cat.category_id
JOIN dim_customer c
  ON f.customer_id = c.customer_id
JOIN dim_region r
  ON c.region_id = r.region_id
GROUP BY
  cat.category_name,
  r.region_name
ORDER BY
  total_revenue DESC;

Les jointures supplémentaires ne sont pas catastrophiques. Elles sont simplement cumulatives. Une ou deux sont gérables. Un niveau de hiérarchie plus profond sur plusieurs dimensions devient plus difficile à maintenir, à expliquer et à optimiser.

En pratique, c'est pourquoi de nombreuses équipes finissent par adopter un modèle hybride sélectif. Elles conservent les dimensions que les analystes manipulent en permanence sous forme d'étoile et normalisent celles qui requièrent un contrôle renforcé.

Si votre entrepôt mélange déjà des dimensions plates et normalisées, le plus difficile n'est pas de nommer le modèle. C'est de maintenir sa fiabilité à mesure que les structures et le comportement des données évoluent. digna est une option pour les équipes qui ont besoin de suivi de schéma, de détection d'anomalies, de surveillance de ponctualité et de validation au niveau de l'enregistrement directement dans leur propre environnement de base de données, sans transférer les données de production à l'extérieur de leur contrôle.

Partager sur X
Partager sur X
Partager sur Facebook
Partager sur Facebook
Partager sur LinkedIn
Partager sur LinkedIn

Rencontrez l'équipe derrière la plateforme

Une équipe basée à Vienne d'experts en IA, données et logiciels soutenue

par la rigueur académique et l'expérience en entreprise.

Rencontrez l'équipe derrière la plateforme

Une équipe basée à Vienne d'experts en IA, données et logiciels soutenue
par la rigueur académique et l'expérience en entreprise.

Produit

Intégrations

Ressources

Société