Mise en œuvre du langage MDX

Slides:



Advertisements
Présentations similaires
Le Nom L’adjectif Le verbe Objectif: Orthogram
Advertisements

ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
LES NOMBRES PREMIERS ET COMPOSÉS
[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Vocabulaire 6.2 Français II Bon voyage ! 1.
Licence pro MPCQ : Cours
Distance inter-locuteur
Le pluriel des noms
Les numéros
ACTIVITES Les fractions (10).
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Sud Ouest Est Nord Individuel 36 joueurs
Les identités remarquables
Les Prepositions.
Sirop de Liège « industriel »
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Minimisation Techniques 1 Assimilation Algorithms: Minimisation Techniques Yannick Trémolet ECMWF Data Assimilation Training Course March 2006.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
Nom du module Date Lieu de la formation. 2 Genèse du projet Historique, partenaires, publics Pour qui ? Pourquoi ? Qui ? Comment ? Quand ?
Les fonctions.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
-17 Anticipations économiques en Europe Septembre 2013 Indicateur > +20 Indicateur 0 a +20 Indicateur 0 a -20 Indicateur < -20 Union européenne total:
Interagir avec un objet mixte Propriétés physiques et numériques Céline Coutrix, Laurence Nigay Équipe Ingénierie de lInteraction Homme-Machine (IIHM)
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
1 of 46 2 of 46 UPDATE UPDATE ON TV ANTENNAS SINCE LAST BOARD MEETING SINCE LAST BOARD MEETING HELD ON FEBRUARY 25, 2010, YOUR BOARD HAS MADE MORE PROGRESS.
Regrouper les Données avec les Fonctions de Groupe
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Cours de physique générale I Ph 11
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
PM18 MONTAGE DU BLINDAGE AUTOUR DE LA QRL F. DELSAUX - 25 JAN 2005
Titre : Implémentation des éléments finis sous Matlab
LES NOMBRES PREMIERS ET COMPOSÉS
Cours N°2 Base de Données & Langage SQL
Unit 4: Les animaux Unit 4: Les animaux.
1 INETOP
Mise en œuvre du langage MDX
Correction du TP JRubik
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
1.1 LES VECTEURS GÉOMÉTRIQUES
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Notre calendrier français MARS 2014
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Titre : Implémentation des éléments finis en Matlab
C'est pour bientôt.....
1 INETOP
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
Mise en œuvre du langage MDX
9 paires séries de 3 étuis ( n° 1 à 27 )
Exercice de vérification 1 p
Commission paritaire de suivi des opérations de reclassement repositionnement dans le cadre du droit d’option Statistiques novembre 2010.
Les Chiffres Prêts?
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Les parties du corps By Haru Mehra Le Frehindi 1Haru Mehra, DELF, DALF,CFP.
Systèmes d'information décisionnels
Transcription de la présentation:

Mise en œuvre du langage MDX -1ère partie- Présentation de l’exemple et des outils utilisés

Le cube Sales (1)

Le cube Sales (2)

Le cube Sales (3)

JRubik Une application Java intégrant le moteur OLAP Mondrian Démonstration sur un exemple : Select {[Measures].[Unit Sales]} ON COLUMNS, {[Store].[All Stores]} ON ROWS from [Sales]

Mondrian Web Application Une application Web (Servlet Tomcat) intégrant le moteur OLAP Mondrian Démonstration sur un exemple : Select {[Measures].[Unit Sales]} ON COLUMNS, {[Store].[All Stores]} ON ROWS from [Sales]

Mise en œuvre du langage MDX -2ème partie- Les bases du langage de requête MDX

Principes des requêtes MDX (1) Les axes représentent des dimensions et/ou des Measures Slicer représente le prédicat de sélection

Principes des requêtes MDX (2) Il est possible de faire appel à : - Des ensembles : {} - Des tuples : () Des noms associés aux éléments d’un cube (dimensions, levels, members and properties) : [] ON ROWS et ON COLUMNS permettent d’exprimer la configuration d’affichage souhaitée

Principes des requêtes MDX (3) Opérateur . Pour accéder à un membre d’une certaine dimension [Time].[1997] member 1997 of the level Year Pour accéder à un certain niveau d’une dimension [Time].[Year] Year Level Pour accéder à une fonction [Time].[Year].Members operation Members

Principes des requêtes MDX (4) A propos des ensembles : Une expression qui désigne un ensemble de membres associés à un tuple {([Time].[1997]), ([Time].[1998]), ([Time].[1998].[9-1998])} Une telle expression peut être utilisée pour désigner un axe d’une requête MDX

Principes des requêtes MDX (5) A propos des tuples : Ils doivent être cohérents : - Chaque tuple spécifié doit inclure des membres appartenant à une même dimension - Les tuples spécifiés peuvent correspondre à différents niveaux de hiérarchie {([Time].[1997], [Store].[Canada]), ([Time].[1998], [Store].[USA]), ([Time].[1998].[9-1998], [Store].[Canada])}

Principes des requêtes MDX (6) CROSSJOIN : Un axe peut être défini comme le produit cartésien de différents ensembles CROSSJOIN({[Time].[Year].Members}, {[Store].[USA],[Store].[Canada]})

Principes des requêtes MDX (7) Les opérations : x.Members = ensemble des membres d’un niveau ou d’une dimension donnée x.Children = ensemble des enfants du membre x DESCENDANTS (x, l) = ensemble des descendants d’un membre x au niveau l

Principes des requêtes MDX (8) Exemple pour l’opérateur DESCENDANTS SELECT {([Measures].[Store Sales])} On COLUMNS, DESCENDANTS ([Time].[1998], [Quarter]) ON ROWS FROM [SALES]

Principes des requêtes MDX (9) A propos du slicer WHERE permet de sélectionner une tranche du cube On spécifie la tranche en utilisant des membres qui ne font pas partie des dimensions utilisées au niveau des axes ON ROWS et ON COLUMNS SELECT {([Measures].[Unit Sales])} ON COLUMNS, {([Time].[Year].Members)} ON ROWS FROM SALES WHERE ([Store].[USA].[WA]) -> tranche de l’état de WA Pas autorisé de préciser une tranche avec plus d’un membre d’une même dimension

Principes des requêtes MDX (10) Membres calculés Ils sont utilisés pour calculer des mesures et faire des comparaisons with member [Measures].[Store Profit] as '([Measures].[Store Sales] - [Measures].[Store Cost])' select {[Measures].[Store Profit]} ON COLUMNS, {[Time].[Year].Members} ON ROWS from [Sales] where [Store].[All Stores].[USA].[WA]

Principes des requêtes MDX (11) Fonctions de calcul SUM (set, expression) MAX (set, expression) AVG(set, expression) MIN(set, expression) AVG([Time].Members, [Measures].[Store Profit])

Principes des requêtes MDX (12) Un exemple de calcul with member [Store].[USA+Canada] as 'Sum({[Store].[All Stores].[USA], [Store].[All Stores].[Canada]}, [Measures].[Store Sales])' select {[Store].[All Stores].[USA], [Store].[All Stores].[Canada], [Store].[USA+Canada]} ON COLUMNS, Descendants([Time].[1997], [Time].[Quarter]) ON ROWS from [Sales]

Mise en œuvre du langage MDX -3ème partie- Application des requêtes MDX sur le cube Sales

Forme la plus simple de requête Exemple : select [Measures].Members ON COLUMNS, [Store].Members ON ROWS from [Sales]

Sélection de tuples (1) Exemple : SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA], [Store].[Store State].[WA]} ON ROWS FROM [Sales]

Sélection de tuples (2) Exemple (pour avoir les enfants à l’intérieur d’une hiérarchie): SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA].CHILDREN, [Store].[Store State].[WA].CHILDREN} ON ROWS FROM [Sales]

Sélection de tuples (3) Exemple (pour avoir les descendants à l’intérieur d’une hiérarchie): SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA], DESCENDANTS([Store].[Store State].[CA], [Store City])} ON ROWS FROM [Sales]

Slicing (1) Exemple (on choisit une des mesures): SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS FROM [Sales] WHERE ([Measures].[Customer Count])

Slicing (2) Exemple (on choisit une des mesures et une année): select {[Store Type].[Store Type].Members} ON COLUMNS, {[Store].[Store State].Members} ON ROWS from [Sales] where ([Measures].[Customer Count], [Time].[1997])

Calculs dans les requêtes (1) Exemple (on affiche le profit sur deux semestres de 97): WITH MEMBER [Time].[1997].[H1] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[1997].[H2] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' SELECT {[Time].[1997].[H1], [Time].[1997].[H2]} ON COLUMNS, [Store].[Store Name].MEMBERS ON ROWS FROM [Sales] WHERE (Measures.Profit)

Calculs dans les requêtes (2) Exemple (on affiche les pourcentages de profits sur des périodes de 97): with member [Measures].[ProfitPercent] as '(([Measures].[Store Sales] - [Measures].[Store Cost]) / [Measures].[Store Cost])', FORMAT_STRING = "#.00%" member [Time].[First Half 97] as '([Time].[1997].[Q1] + [Time].[1997].[Q2])' member [Time].[Second Half 97] as '([Time].[1997].[Q3] + [Time].[1997].[Q4])' select {[Time].[First Half 97], [Time].[Second Half 97], [Time].[1997].Children} ON COLUMNS, {[Store].[Store Name].Members} ON ROWS from [Sales] where [Measures].[ProfitPercent]

Crossjoin (1) Exemple : SELECT [Product].[Product Family].MEMBERS ON COLUMNS, {CROSSJOIN([Customers].[City].MEMBERS, [Time].[Quarter].MEMBERS)} ON ROWS FROM [Sales] WHERE (Measures.[Unit Sales])

Crossjoin (2) Exemple : SELECT [Product].[Product Family].MEMBERS ON COLUMNS, NON EMPTY {CROSSJOIN([Customers].[City].MEMBERS, [Time].[Quarter].MEMBERS)} ON ROWS FROM [Sales] WHERE (Measures.[Unit Sales])

Filter Exemple : select NON EMPTY {[Store Type].[Store Type].Members} ON COLUMNS, Filter({[Store].[Store City].Members}, (([Measures].[Unit Sales], [Time].[1997]) > 500.0)) ON ROWS from [Sales] where ([Measures].[Profit], [Time].[1997])

Comptage Exemple (On prend les 12 villes ayant le mieux vendu): SELECT Measures.MEMBERS ON COLUMNS, TOPCOUNT({[Store].[Store City].MEMBERS}, 12, Measures.[Sales Count]) ON ROWS FROM [Sales]

Mise en œuvre du langage MDX -5ème partie- Comment concevoir un cube avec Mondrian…

Il faut produire un fichier XML … (1) spécifiant : le nom du cube les Measures les Dimensions -> Shared dimensions -> Multiple Hierarchies -> Parent-child hierarchies -> Snowflake schema les membres calculés les fonctions définies

Il faut produire un fichier XML … (2) <Cube name="Sales"> <Table name="sales_fact_1997"/> ... </Cube> Possibilité d’utiliser <View> et <Join> pour construire des requêtes SQL plus complexes

Il faut produire un fichier XML … (3) Le cube Sales a des mesures : <Measure name="Unit Sales” column="unit_sales" aggregator="sum" datatype="Integer" formatString="#,###"/> <Measure name="Store Sales" column="store_sales" aggregator="sum" datatype="Numeric" formatString="#,###.00"/> Chaque mesure a un nom, correspond à une colonne dans la table de faits et spécifie un opérateur d’agrégation tel que "sum", "count", "min", "max", "avg", and "distinct count"

Il faut produire un fichier XML … (4) Le cube Sales a des dimensions : <Dimension name="Gender" foreignKey="customer_id"> <Hierarchy hasAll="true" primaryKey="customer_id"> <Table name="customer"/> <Level name="Gender" column="gender" uniqueMembers="true"/> </Hierarchy> </Dimension> L’attribut foreignKey dans <Dimension> est le nom d’une colonne de la table de faits La <Hierarchy> a un attribut clé primaire (primaryKey) Par défaut, la Hiérarchie a un élément de plus haut niveau nommé ‘All’ avec un seul membre appelé 'All {hierarchyName}'.

Il faut produire un fichier XML … (5) Avec éventuellement des hiérarchies multiples : <Dimension name="Time" foreignKey="time_id"> <Hierarchy hasAll="false" primaryKey="time_id"> <Table name="time_by_day"/> <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> <Level name="Quarter" column="quarter" type="Numeric" uniqueMembers="false"/> <Level name="Month" column="month_of_year" type="Numeric" uniqueMembers="false"/> </Hierarchy> <Hierarchy name="Time Weekly" hasAll="false" primaryKey="time_id"> <Table name="time_by_week"/> <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> <Level name="Week" column="week" uniqueMembers="false"/> <Level name="Day" column="day_of_week" type="String" uniqueMembers="false"/> </Hierarchy> </Dimension>

Il faut produire un fichier XML … (6) Un exemple de schéma en étoile (La dimension Produit est constituée de 3 tables : product, product_class, product_type: <Cube name="Sales"> ... <Dimension name="Product" foreignKey="product_id"> <Hierarchy hasAll="true" primaryKey="product_id" primaryKeyTable="product"> <Join leftKey="product_class_id" rightAlias="product_class" rightKey="product_class_id"> <Table name="product"/> <Join leftKey="product_type_id" rightKey="product_type_id"> <Table name="product_class"/> <Table name="product_type"/> </Join> </Join> ... </Hierarchy> </Dimension> </Cube>

Il faut produire un fichier XML … (6) 1/ La constitution d’un tel fichier est complexe 2/ Il existe des outils facilitant l’écriture du fichier XML (vérification de la syntaxe) 3/ Il existe des générateurs (wizards) offrant une interface utilisateur pour générer automatiquement le fichier XML selon la bonne syntaxe : les outils existants sont cependant limités ...

Exemple de l’outil Cube Designer 1/ Choix du nom du cube et de la base de données

Exemple de l’outil Cube Designer 2/ Choix des informations utilisées

Exemple de l’outil Cube Designer 3/ Définition des mesures

Exemple de l’outil Cube Designer 4/ Définition des autres dimensions

Exemple de l’outil Cube Designer 5/ Sauvegarder et exploiter le fichier XML produit

Mise en œuvre du langage MDX -6ème partie- A vous de jouer …