Modules:Analytics Introduction/fr
Languages: |
English | Français | Translate this article... |
Contents |
Que sont les Cubes OLAP
Un Cube OLAP est un tableau de données multi-dimensionnel. OLAP est un acronyme pour Online Analytical Processing. C'est une catégorie de logiciels, incluse dans l'Informatique décisionnelle (BI), et qui permet aux analystes, aux gestionnaires et aux dirigeants, de gagner en visibilité dans leurs données, au travers d'accès interactifs et persistants, à une large variété de vues possibles sur les informations qui ont été transformées depuis les enregistrements en ligne, pour refléter la dimensionnalité réelle de l'entreprise, telle que l'utilisateur la comprend.
Les outils OLAP permettent aux utilisateurs d'analyser des données multi-dimensionnelles interactivement depuis de multiples perspectives. OLAP s'appuie sur trois opérations analytique de base : Consolidation (roll-up), Zoom (drill-down), Segmentation et Détail (slicing and dicing).
Plus d'informations sur les Cubes OLAP peuvent être trouvées ici et à propos d'OLAP ici.
Comment Openbravo les intègre
Afin de fournir des Analyses, Openbravo intègre deux technologies externes différentes.
La première est Mondrian de Pentaho, qui fournit le moteur OLAP sous-jacent. L'autre est Saiku de Meteorite Consulting, qui fournit l'interface utilisateur pour développer les Rapports.
Mondrian
Mondrian est un moteur OLAP écrit en Java. Il exécute des requêtes en langage MDX, en lisant les données dans une base de données relationnelle (RDBMS), et en présentant les résultats dans un format multi-dimensionnel via une API Java.
Il a été totalement intégré à Openbravo, afin qu'aucune configuration initiale ne soit nécessaire pour pouvoir commencer à travailler. Cependant, il est possible de configurer plusieurs paramètres pour améliorer les performances dans les environnements avec de grosses masses de données. Plus de documentation à propos de la configuration peut être trouvée dans la section configuration.
Plus d'information sur Mondrian peut être trouvé dans sa Documentation.
Openbravo supporte Mondrian version 3.5.
Saiku
Saiku est une suite analytique modulaire offrant une technologie OLAP allégée facile à embarquer, extensible et configurable. Elle offre une solution décisionnelle conviviale, sur des technologies web, qui permet aux utilisateurs, d'analyser rapidement et facilement les données métier, de créer et partager des rapports. La solution se connecte à une batterie de serveurs OLAP.
Saiku est embarqué dans certaines fenêtres Openbravo, telles que OB Analytics, fournissant une interface conviviale pour créer des rapports analytiques. Plus d'information à propos de Saiku peut être trouvée sur leur Documentation.
Openbravo supporte Saiku version 3.5.
Composants technologiques
Avec deux nouvelles technologies incorporées dans Openbravo, il est important de comprendre comment elles communiquent avec l'application et entre elles.
Une illustration complète de ces composants technologiques va être présentée en commençant par un rapport créé dans Openbravo (les Rapports Financiers multi-dimensionnels) et se terminant par des requêtes exécutées dans la base de donnée.
Dans cet exemple, le rapport crée un fichier XML que Saiku sait interpréter. Saiku génère ensuite la requête MDX qui est envoyée à Mondrian. Mondrian lit cette requête MDX et si les données sont déjà en cache, retourne le résultat. Si elles ne le sont pas, il lance une série de requêtes dans la base de données pour retrouver les informations.
Un exemple de fichier XML généré pour Saiku
<?xml version="1.0" encoding="UTF-8"?> <Query name="6793C26C4B504EF9822E16C2C63BAE0FDAF5CA2984604E1A8673D1C659B4057D" type="QM" connection="Openbravo" cube="DPL - P&L - F&B International Group US_A_US Dollar" catalog="Openbravo" schema="Openbravo"> <QueryModel> <Axes> <Axis location="ROWS" nonEmpty="true"> <Dimensions> <Dimension name="account" hierarchizeMode="PRE" hierarchyConsistent="true"> <Inclusions> <Selection dimension="account" type="member" node="[account].[724F823C8DD44203A69BE218D6D8AF61]" operator="MEMBER" /> <Selection dimension="account" type="member" node="[account].[724F823C8DD44203A69BE218D6D8AF61]" operator="CHILDREN" /> </Inclusions> <Exclusions /> </Dimension> </Dimensions> </Axis> <Axis location="COLUMNS" nonEmpty="true"> <Dimensions> <Dimension name="accountingDate"> <Inclusions> <Selection dimension="accountingDate" type="member" node="[accountingDate].[2013]" operator="MEMBER" /> </Inclusions> <Exclusions /> </Dimension> <Dimension name="organization" hierarchizeMode="PRE" hierarchyConsistent="true"> <Inclusions> <Selection dimension="organization" type="level" node="[organization].[organizationLevel]" operator="MEMBERS" /> </Inclusions> <Exclusions /> </Dimension> </Dimensions> </Axis> <Axis location="FILTER" nonEmpty="false"> <Dimensions> <Dimension name="Measures"> <Inclusions> <Selection dimension="Measures" type="member" node="[Measures].[balance]" operator="MEMBER" /> </Inclusions> <Exclusions /> </Dimension> </Dimensions> </Axis> </Axes> </QueryModel> <MDX /> <Properties> <Property name="saiku.ui.render.mode" value="table" /> <Property name="org.saiku.query.explain" value="true" /> <Property name="saiku.olap.query.nonempty.columns" value="true" /> <Property name="saiku.olap.query.nonempty.rows" value="true" /> <Property name="org.saiku.connection.scenario" value="false" /> <Property name="saiku.ui.formatter" value="flat" /> <Property name="saiku.olap.query.automatic_execution" value="true" /> <Property name="saiku.olap.query.drillthrough" value="true" /> <Property name="saiku.olap.query.filter" value="true" /> <Property name="saiku.olap.query.limit" value="true" /> <Property name="saiku.olap.query.nonempty" value="true" /> </Properties> </Query>>
Un exemple de requête MDX générée pour ce fichier
SELECT NON EMPTY CrossJoin({[accountingDate].[2013]}, [organization].[organizationLevel].Members) ON COLUMNS, NON EMPTY {Hierarchize({{[account].[724F823C8DD44203A69BE218D6D8AF61], [account].[724F823C8DD44203A69BE218D6D8AF61].Children}})} ON ROWS FROM [DPL - P&L - F&B International GROUP US_A_US Dollar] WHERE {[Measures].[balance]}
Un exemple d'une des requêtes SQL générée pour cette requête MDX
SELECT "alias1_90"."c_elementvalue_id" AS "c0", "alias1_90"."em_obanaly_treeordinal" AS "c1" FROM "c_elementvalue" AS "alias1_90" WHERE (alias1_90.ad_org_id IN ('E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01', 'BAE22373FEBE4CCCA24517E23F0C8A48','19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43') AND 1=1 AND EXISTS(SELECT c_element_id FROM c_acctschema_element elem0 WHERE alias1_90.c_element_id=elem0.c_element_id AND elem0.c_acctschema_id = '732913485BB040FFA4643FF06D1AA095')) AND "alias1_90"."em_obanaly_treeparentid" = '724F823C8DD44203A69BE218D6D8AF61' GROUP BY "alias1_90"."c_elementvalue_id", "alias1_90"."em_obanaly_treeordinal" ORDER BY "alias1_90"."em_obanaly_treeordinal" ASC NULLS LAST] 1739582 [mondrian.rolap.RolapResultShepherd$executor_1] DEBUG mondrian.sql - 12: SqlMemberSource.getMemberChildren: executing sql [ SELECT "alias1_90"."c_elementvalue_id" AS "c0", "alias1_90"."em_obanaly_treeordinal" AS "c1" FROM "c_elementvalue" AS "alias1_90" WHERE (alias1_90.ad_org_id IN ('E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01', 'BAE22373FEBE4CCCA24517E23F0C8A48','19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43') AND 1=1 AND EXISTS(SELECT c_element_id FROM c_acctschema_element elem0 WHERE alias1_90.c_element_id=elem0.c_element_id AND elem0.c_acctschema_id = '732913485BB040FFA4643FF06D1AA095')) AND "alias1_90"."em_obanaly_treeparentid" = '724F823C8DD44203A69BE218D6D8AF61' GROUP BY "alias1_90"."c_elementvalue_id", "alias1_90"."em_obanaly_treeordinal" ORDER BY "alias1_90"."em_obanaly_treeordinal" ASC NULLS LAST