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 !
	    
	  	  