Se rendre au contenu

Améliorer vos rapports avec des vues SQL

Découvrez comment les vues SQL peuvent simplifier vos rapports et optimiser l'analyse de vos données.
20 septembre 2024 par
Améliorer vos rapports avec des vues SQL
ML Solutions, Marie-Lou Mailloux-Desrochers
| Aucun commentaire pour l'instant

1. Introduction

Dans mon dernier article, nous avons exploré comment programmer une fonction SQL pour calculer les trimestres fiscaux. Cette fonction permet de simplifier l'analyse des données financières en découpant les périodes selon les besoins de l'entreprise. Aujourd'hui, nous allons encore plus loin en examinant l'utilisation des vues SQL pour optimiser vos rapports et automatiser certaines analyses complexes.

2. Contexte et définition

2.1 Définition d'une vue SQL

Une vue SQL est une requête sauvegardée qui agit comme une table virtuelle. Contrairement à une table traditionnelle qui stocke des données, une vue ne contient pas de données physiques. Elle présente une représentation dynamique des données stockées dans d'autres tables, selon les critères définis dans la requête.

2.2 Avantages des vues :

  • Simplification : Encapsuler des requêtes complexes dans une structure réutilisable.
  • Sécurité : Limiter l'accès direct aux tables sous-jacentes et n'exposer que certaines colonnes ou lignes.
  • Maintenance : Faciliter la lisibilité et la maintenance des requêtes SQL, notamment pour les transformations ou calculs fréquents.

Exemple de création d'une vue :

CREATE VIEW [SalesPersonDetails] AS
SELECT SP.BusinessEntityID AS SalesPersonID, P.FirstName, P.LastName, ST.Name AS Territory
FROM Sales.SalesPerson AS SP
JOIN Person.Person AS P ON SP.BusinessEntityID = P.BusinessEntityID
JOIN Sales.SalesTerritory AS ST ON SP.TerritoryID = ST.TerritoryID;

Cette vue présente une liste d'informations sur les vendeurs, complétée par des jointures.

2.3 Différence entre une vue simple et une vue complexe

2.3.1 Vue simple :

Une vue qui sélectionne des colonnes d'une seule table, souvent sans calculs complexes.

CREATE VIEW [SimpleView] AS
SELECT FirstName, LastName
FROM Person.Person;

Cet exemple montre une vue très simple listant des personnes.

2.3.2 Vue complexe :

Elle combine plusieurs tables et peut inclure des jointures et agrégations.

Exemple :

CREATE VIEW [ComplexView] AS

SELECT P.FirstName, P.LastName, SUM(SOD.LineTotal) AS TotalSales

FROM HumanResources.Employee AS E

JOIN Person.Person AS P ON E.BusinessEntityID = P.BusinessEntityID

JOIN Sales.SalesOrderHeader AS SOH ON E.BusinessEntityID = SOH.SalesPersonID

JOIN Sales.SalesOrderDetail AS SOD ON SOH.SalesOrderID = SOD.SalesOrderID

GROUP BY P.FirstName, P.LastName;



2.4 Pourquoi utiliser des vues ?

  • Simplification : Réutilisation de requêtes complexes.
  • Réutilisabilité : Utilisation dans différents rapports sans duplicata de code.
  • Sécurité : Restriction d'accès aux données sensibles.
  • Abstraction : Masquage des tables sous-jacentes.
  • Performance : Amélioration possible avec des vues matérialisées.
  • Logique métier : Centralisation des calculs.

 

3. Utilisation des vues dans les rapports

3.1 Préparer des données pour des rapports financiers

Les vues pré-agrègent les données (ventes, marges), simplifiant l'extraction de données cohérentes pour les rapports.

CREATE VIEW [AnnualSales] AS

SELECT CustomerID, YEAR(OrderDate) AS OrderYear, SUM(TotalDue) AS TotalSales

FROM Sales.SalesOrderHeader

GROUP BY CustomerID, YEAR(OrderDate);



3.2 Simplifier des calculs complexes

Les vues encapsulent les calculs, rendant les rapports plus rapides et évitant la répétition des formules.

CREATE VIEW [ProductProfitMargins] AS

SELECT P.ProductID, P.Name, SUM(SOH.TotalDue - SOH.SubTotal) AS Profit

FROM Sales.SalesOrderHeader AS SOH

JOIN Sales.SalesOrderDetail AS SOD ON SOH.SalesOrderID = SOD.SalesOrderID

JOIN Production.Product AS P ON SOD.ProductID = P.ProductID

GROUP BY P.ProductID, P.Name;


 


3.3 Automatiser des rapports

Les vues se mettent à jour en temps réel, rendant les rapports toujours précis et à jour.

CREATE VIEW [QuarterlySales] AS

SELECT DATEPART(QUARTER, SOH.OrderDate) AS Quarter, YEAR(SOH.OrderDate) AS OrderYear, SUM(SOH.TotalDue) AS TotalSales

FROM Sales.SalesOrderHeader AS SOH

GROUP BY DATEPART(QUARTER, SOH.OrderDate), YEAR(SOH.OrderDate);



4. Comment créer et maintenir des vues ?

4.1 Création

Créer une vue est simple avec la commande CREATE VIEW.

CREATE VIEW [EmployeeSalaries] AS

SELECT E.BusinessEntityID AS EmployeeID, P.FirstName, P.LastName, EPH.Rate AS Salary

FROM HumanResources.Employee AS E

JOIN Person.Person AS P ON E.BusinessEntityID = P.BusinessEntityID

JOIN HumanResources.EmployeePayHistory AS EPH ON E.BusinessEntityID = EPH.BusinessEntityID

WHERE E.CurrentFlag = 1;


Cette vue inclut les données salariales des employés.

4.2 Mise à jour

Pour modifier la vue, utilisez la commande ALTER VIEW sans recréer les rapports.

ALTER VIEW [EmployeeSalaries] AS

SELECT E.BusinessEntityID AS EmployeeID, P.FirstName, P.LastName, EPH.Rate AS Salary, D.Name AS Department

FROM HumanResources.Employee AS E

JOIN Person.Person AS P ON E.BusinessEntityID = P.BusinessEntityID

JOIN HumanResources.EmployeePayHistory AS EPH ON E.BusinessEntityID = EPH.BusinessEntityID

JOIN HumanResources.EmployeeDepartmentHistory AS EDH ON E.BusinessEntityID = EDH.BusinessEntityID

JOIN HumanResources.Department AS D ON EDH.DepartmentID = D.DepartmentID

WHERE E.CurrentFlag = 1;


 


4.3 Impact sur la performance

Les vues sont légères car elles ne stockent pas de données physiques, mais des vues complexes peuvent ralentir les performances.

  • Bonnes pratiques :
    • Limiter les jointures.
    • Utiliser des index sur les colonnes fréquemment interrogées.
    • Envisager des vues matérialisées pour des requêtes lourdes.

5. Conclusion

Les vues SQL sont un excellent outil pour simplifier vos rapports et automatiser des tâches complexes. En encapsulant des requêtes complexes dans une structure réutilisable, elles permettent d'améliorer à la fois la performance et la sécurité des données. Dans le prochain article, nous explorerons l’utilisation des index en SQL pour améliorer les performances des requêtes. Vous apprendrez comment utiliser efficacement les index pour optimiser vos bases de données et accélérer l'exécution des requêtes

# BI SQL
Se connecter pour laisser un commentaire.