Pour nos reportings et analyses, que ce soit sur des données réelles ou prévisionnelles, nous utilisons le plus souvent des cubes dédiés aux reportings qui ont été alimentés à partir d’autres cubes, voire de requêtes SQL d’interrogation et extraction.
Planning Analytics offre la possibilité de pré-programmer des chemins d’analyse exploratoire vers plus de détails, les fameux Drill-Through.
Il va falloir pour cela :
- Indiquer à Planning Analytics que l’on veut créer ces accès au détail
- Développer un Processus d’accès au détail (Source=SQL ou Vue de Cube)
- Définir quelles cellules du cube origine seront exposées à cet accès au détail
Posons préalablement un cas de figure qui nous servira d’exemple :
Nous allons alimenter dans un cube, les quantités et chiffres d’affaires de vente, par Mois et par Produit puis allons décrire une règle de Drill-Throug qui nous permettra de consulter le détail de toutes les lignes de ventes correspondant à la valeur d’une cellule donnée.
Nous allons nous inspirer d’une base SQL d’exemple : la base SqlServer GOSALES, bien connue de nos utilisateurs Cognos Analytics.
Création et alimentation d’une dimension « Dim_Produit »
Par utilisation d’une extraction SQL
select
Cast( PRO.Product_Number as varchar(10) ),
PRONAME.Product_name,
Cast( PRO.product_brand_code as varchar(10) ),
BRD.Product_brand_fr
From
[gosales].[PRODUCT] PRO
Join [gosales].[PRODUCT_NAME_LOOKUP] PRONaME On ( PRO.Product_number=PRONAME.Product_number and PRONAME.product_language='FR')
Join [gosales].[PRODUCT_BRAND] BRD On (PRO.product_brand_code=BRD.product_brand_code)
Création et alimentation du Cube Cube_Ventes_Reelles
Alimentation par extraction SQL
Select
Cast(Year(ship_date) as varchar) Annee,
Substring(Convert(Varchar, ship_date, 101),1,2) Mois,
Cast (Product_Number as Varchar) Product_nUMBER,
Sum(Quantity) as Qte,
Sum(Quantity * Unit_Sale_Price) as CA
From
[gosales].[ORDER_DETAILS]
Group By
Cast(Year(ship_date) as varchar),
Substring(Convert(Varchar, ship_date, 101),1,2) ,
Product_Number
Avec, bien-sûr, un résultat qui dépasse nos espérances les plus folles !
Création de l’accès au détail
Nous désirons visualiser toutes les lignes de ventes présentes dans la base de données qui ont contribué à la valeur d’une cellule.
La requête SQL devra être du genre :
Select Ventes.*
from
[gosales].[ORDER_DETAILS] Ventes
Join [gosales].[PRODUCT] PRO On (PRO.Product_Number = Ventes.Product_number)
Join [gosales].[PRODUCT_NAME_LOOKUP] PRONaME On ( PRO.Product_number=PRONAME.Product_number and PRONAME.product_language='FR')
Join [gosales].[PRODUCT_BRAND] BRD On (PRO.product_brand_code=BRD.product_brand_code)
Where
Filtre Annee (celle de la cellule)
Filtre Mois (celui de la cellule)
Filtre Produit (celui de la cellule)
Réfléchissons aux filtres :
Selon si notre vue de cube affiche le code ou le libellé, nous pourrons avoir :
Dim_Produit : Code ou Libellé Produit , Code ou Libellé Branche
Ventes.Product_Number = Dim_Produit
Ventes.Product_Number + ' ' +ProName.Product_Name= Dim_Produit
PRO.product_brand_code = Dim_Produit
PRO.product_brand_code + ' ' + BRD.Product_brand_fr = Dim_Produit
Dim_Annee
Year(ship_date) = Dim_Annee
Dim_Mois : Le code (01,02,03, …) ou le libellé (Janvier, Février, Mars, …)
UPPER( (Format( Ship_Date, 'MMM', 'fr-FR')) ) = Upper(Dim_Mois)
Month(Ship_Date) = Dim_Mois
Allons-y !
La création du processus d’accès au détail
Sur le cube_Ventes_Reelles : Clique Droit > Explorer > Créer un processus de détail
Que nous appellerons « Lignes_Ventes » et qui aura une requête SQL comme source de données.
Jetons un coup d’œil aux paramètres : Nous verrons que nous avons déjà, automatiquement, tout ce qu’il nous faut.
À des fins de simplification des tests, nous allons renseigner nos propres valeurs par défaut.
Écrivons ensuite la requête :
Select Ventes.*
from
[gosales].[ORDER_DETAILS] Ventes
Join [gosales].[PRODUCT] PRO On (PRO.Product_Number = Ventes.Product_number)
Join [gosales].[PRODUCT_NAME_LOOKUP] PRONaME On ( PRO.Product_number=PRONAME.Product_number and PRONAME.product_language='FR')
Join [gosales].[PRODUCT_BRAND] BRD On (PRO.product_brand_code=BRD.product_brand_code)
Where
Year(ship_date) = '?Dim_Annee?'
And (
Ventes.Product_Number = '?Dim_Produit?'
OR
Cast(Ventes.Product_Number as Varchar) + ' ' +ProName.Product_Name = '?Dim_Produit?'
OR
PRO.product_brand_code = '?Dim_Produit?'
OR
Cast(PRO.product_brand_code as Varchar) + ' ' +BRD.Product_brand_fr = '?Dim_Produit?'
)
ANd UPPER( (Format( Ship_Date, 'MMMM', 'fr-FR')) ) = Upper('?Dim_Mois?')
Lorsque nous effectuons un aperçu, la requête fonctionne.
Et nous pouvons apercevoir, dans l’Epilog, l’instruction sibylline :
Définition des cellules soumises au Drill-through
Sur le cube_Ventes_Reelles : Clique Droit > Explorer > Créer des règles de détail
Il n’y a plus qu’à tester !
La liste des lignes de ventes s’affiche, que vous pouvez même exporter en .csv !
Et voilà, vous savez tout ! Merci d’avoir suivi ce tuto et à bientôt pour de nouvelles découvertes !
Vous souhaitez bénéficier d'experts, de développeurs, ou d'une formation sur Planning Analytics ? Rendez-vous sur la page Contact !