Introduction
Dans notre précédent article, nous avons exploré comment calculer le YoY (Year-over-Year) en utilisant Power BI et SQL. Nous avons brièvement mentionné l'importance des trimestres pour l'analyse financière, mais les trimestres fiscaux varient souvent d'une entreprise à l'autre, ce qui peut introduire une certaine complexité dans les calculs. Aujourd'hui, nous allons voir comment créer une fonction SQL personnalisée pour calculer les trimestres fiscaux en fonction du début de l'année fiscale de votre entreprise.
Contexte
Les trimestres fiscaux sont des divisions de l'année financière en quatre périodes égales qui permettent aux entreprises de structurer leur comptabilité et d'analyser les performances de manière régulière. Toutefois, toutes les entreprises ne commencent pas leur année fiscale au 1er janvier. Ainsi, il est crucial d'adapter les calculs des trimestres en fonction de la date de début de l'année fiscale.
Comprendre la structure des trimestres
Avant de créer la fonction, il est important de comprendre comment les trimestres sont généralement structurés :
- Trimestre 1 (Q1) : Mois 1 à 3 de l'année fiscale.
- Trimestre 2 (Q2) : Mois 4 à 6 de l'année fiscale.
- Trimestre 3 (Q3) : Mois 7 à 9 de l'année fiscale.
- Trimestre 4 (Q4) : Mois 10 à 12 de l'année fiscale.
Étape 1 : Créer une fonction SQL pour les trimestres fiscaux
Nous allons maintenant écrire une fonction SQL qui calcule le trimestre fiscal en fonction de la date de début de l'année fiscale de votre entreprise. Cette fonction prendra en compte la date de début et la date d'une transaction ou d'un événement pour déterminer à quel trimestre elle appartient.
Deux Alternatives pour calculer les trimestres fiscaux
Avant de nous lancer dans la création de notre fonction SQL, explorons deux approches différentes pour calculer les trimestres fiscaux.
Alternative 1 : Utiliser une série de conditions
La première approche consiste à utiliser une série de conditions pour déterminer le trimestre en fonction du mois d'une transaction.
CREATE FUNCTION [dbo].[GetFiscalQuarter] (@Date DATE, @FiscalYearStartMonth INT)
RETURNS INT
AS
BEGIN
DECLARE @Month INT = MONTH(@Date);
DECLARE @FiscalQuarter INT;
SET @FiscalQuarter = CASE
WHEN @Month >= @FiscalYearStartMonth AND @Month < @FiscalYearStartMonth + 3 THEN 1
WHEN @Month >= @FiscalYearStartMonth + 3 AND @Month < @FiscalYearStartMonth + 6 THEN 2
WHEN @Month >= @FiscalYearStartMonth + 6 AND @Month < @FiscalYearStartMonth + 9 THEN 3
ELSE 4
END;
RETURN @FiscalQuarter;
END;
Alternative 2 : Utiliser le modulo pour un calcul simplié
La deuxième approche utilise une méthode plus concise basée sur l'opérateur modulo pour calculer le trimestre. Cette méthode est plus simple et efficace.
CREATE FUNCTION [dbo].[GetFiscalQuarter] (@InputDate DATE, @FiscalYearStartMonth INT)
RETURNS VARCHAR(10)
AS
BEGIN
DECLARE @Quarter INT;
SET @Quarter = (MONTH(@InputDate) - @FiscalYearStartMonth + 12) % 12 / 3 + 1;
RETURN CAST(@Quarter AS VARCHAR(1));
END;
Choix de l'approche : Pourquoi utiliser le modulo?
Bien que les deux méthodes soient valides, nous allons opter pour la fonction utilisant le modulo en raison de sa simplicité et de son efficacité. Le modulo permet de réduire le nombre de conditions nécessaires et rend le code plus compact, tout en étant précis pour calculer les trimestres fiscaux.
Étape 2 : Utiliser la fonction dans des requêtes
Nous allons maintenant appliquer cette fonction à nos données en utilisant la table Sales.SalesOrderHeader de la base de données AdventureWorks2022, en supposant que l'année fiscale commence en avril (mois 4).
SELECT
OrderDate,
dbo.GetFiscalQuarter(OrderDate, 4) AS FiscalQuarter
FROM
Sales.SalesOrderHeader;
Étape 3 : Visualisation des résultats
Après avoir exécuté la requête, examinons les résultats obtenus. Vous devriez maintenant voir un tableau avec les dates de commande (OrderDate) et les trimestres fiscaux associés (FiscalQuarter).
Étape 4 : Ajouter le trimestre fiscal comme dimension dans Power BI
Maintenant que nous avons créé notre fonction SQL pour calculer les trimestres fiscaux, voyons comment l'intégrer dans notre rapport Power BI du dernier article sur le calcul du YoY. Cela nous permettra d'analyser les données non seulement par année et mois, mais aussi par trimestre fiscal.
1. Intégrer une requête SQL
Ajoutez la fonction SQL (Source SQL) que nous avons créée précédemment dans Power BI. Par exemple :
SELECT
CASE
WHEN MONTH(OrderDate) >= 4 THEN YEAR(OrderDate)
ELSE YEAR(OrderDate) - 1
END AS FiscalYear,
MONTH(OrderDate) AS [Month],
dbo.GetFiscalQuarter(OrderDate, 4) AS FiscalQuarter,
OrderDate,
TotalDue
FROM
Sales.SalesOrderHeader;
Cet exemple calcule l'année fiscale (FiscalYear) et ajoute le trimestre fiscal (FiscalQuarter) en tant que dimensions dans les résultats de la requête, en supposant que l'année fiscale commence en avril (mois 4).
2. Intégrer les données dans Power BI : Ajouter un visual de type matrice
- Placez FiscalQuarter dans les lignes, en plus de FiscalYear, Month et OrderDate.
- Ajoutez la valeur TotalDue.
3. Analyser les données par trimestre fiscal
En ajoutant la dimension du trimestre fiscal, vous pouvez désormais analyser les performances non seulement par mois et par année, mais aussi par trimestre. Cela permet d’obtenir une vue d’ensemble plus détaillée et de mieux comprendre les tendances saisonnières et trimestrielles.
Conclusion
Dans cet article, nous avons exploré deux méthodes pour calculer les trimestres fiscaux en SQL. Nous avons commencé par une approche simple en utilisant le modulo pour créer une fonction flexible et efficace. Grâce à cette fonction SQL, vous pouvez désormais calculer les trimestres fiscaux de manière fiable, quel que soit le mois de début de l'année fiscale de votre entreprise.
Dans notre prochain article, nous allons continuer sur cette lancée et explorer comment automatiser les rapports financiers en utilisant des vues SQL. Ces vues permettront de simplifier et de standardiser la génération de rapports financiers récurrents, vous faisant gagner du temps et améliorant la précision de vos analyses.
J'espère que cet article vous a apporté des connaissances pratiques et que vous pourrez appliquer ces concepts dans vos projets. N'hésitez pas à partager vos questions ou expériences en commentaire!