View source | Discuss this page | Page history | Printable version   
Toolbox
Main Page
Upload file
What links here
Recent changes
Help

PDF Books
Add page
Show collection (0 pages)
Collections help

Search

Modules:Analytics Introduction/fr

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.


AnalyticsIntro1.jpg

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&amp;L - F&amp;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

Retrieved from "http://wiki.openbravo.com/wiki/Modules:Analytics_Introduction/fr"

This page has been accessed 915 times. This page was last modified on 23 April 2014, at 14:18. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.