Modules:Analytics Debug/fr
Languages: |
English | Français | Translate this article... |
Contents |
Fenêtre de chargement OB Analytics
Lorsque une Société a un problème avec le Module Analytics, la première chose est de s'assurer que les opérations de base fonctionnent.
En tant que Administrateur Société, ouvrir la fenêtre OB Analytics. Elle peut prendre un certain temps à se charger, comme expliqué dans la Documentation.
Quand la fenêtre est ouverte, cliquez sur la liste de choix pour sélectionner un Cube. S'il y a des cubes définis, et que la liste est vide, il y a un problème dans l'instance. A ce stade, la meilleure source d'informations pour régler les problèmes sont les logs. Si les cubes sont chargés, d'autres erreurs peuvent être résolues sans regarder dans les logs.
Debugger les requêtes avec Mondrian
Quand Mondrian exécute une requête MDX, ce qui se passe réellement, c'est la génération de plusieurs requêtes SQL qui sont exécutées sur la base de données relationnelles pour extraire des informations.
Lorsqu'il y a un problème pour retrouver des informations depuis une requête MDX, il peut être utile de voir les résultats des requêtes SQL. Il est possible de faire ceci en ajoutant ces lignes à la fin du fichier log4j.lcf.
# Set root logger level to DEBUG and its only appender to MONDRIAN. log4j.rootLogger=WARN, MONDRIAN # MONDRIAN is set to be a ConsoleAppender. log4j.appender.MONDRIAN=org.apache.log4j.ConsoleAppender # MONDRIAN uses PatternLayout. log4j.appender.MONDRIAN.layout=org.apache.log4j.PatternLayout log4j.appender.MONDRIAN.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n # Trace MDX and SQL statements log4j.category.mondrian.mdx=DEBUG, MONDRIAN log4j.category.mondrian.sql=DEBUG, MONDRIAN
Debugger les Schémas de Cube
Il est possible de voir la définition XML des Cubes en utilisant le service de mapping Mondrian en utilisant l'url web spécifique:
http://localhost:8080/openbravo/analytics/schema
Remplacer le hôte/port/contexte avec les paramètres relatifs à votre installation.
La structure du fichier XML de la définition de Cube est expliqué plus en détail dans la Documentation Mondrian.
Le fichier MDX peut être divisé basiquement en trois parties.
Vue
Dans cette partie du code XML est définie la façon dont les données sont extraites depuis la table principale.
<View alias="alias1_25"> <SQL> select * from c_orderline alias1_26 where alias1_26.ad_org_id in ('E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01', 'BAE22373FEBE4CCCA24517E23F0C8A48','19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43') and (1 = (select 1 from c_order o where o.issotrx='Y' and alias1_26.c_order_id=o.c_order_id)) </SQL> </View>
Dimensions
Dans cette partie du code XML les Dimensions sont définies. Pour chaque Dimension, il est possible de voir les tables à partir desquelles les données sont extraites, et le code SQL qui doit être ajouté à la clause WHERE.
Les différents niveaux de chaque dimension sont ainsi affichés.
<Dimension name="salesOrder-businessPartnerCategory" foreignKey="c_order_id" caption="Sales Order - Business Partner Category"> <Hierarchy hasAll="true" primaryKey="c_order_id" primaryKeyTable="c_order"> <Join leftKey="c_bpartner_id" rightKey="c_bpartner_id"> <Table name="c_order" alias="alias1_37"> <SQL> alias1_37.ad_org_id in ('E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01','BAE22373FEBE4CCCA24517E23F0C8A48', '19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43') </SQL> </Table> <Join leftKey="c_bp_group_id" rightKey="c_bp_group_id" leftAlias="alias1_38" rightAlias="alias1_39"> <Table name="c_bpartner" alias="alias1_38"> <SQL> alias1_38.ad_org_id in ('E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01','BAE22373FEBE4CCCA24517E23F0C8A48', '19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43') </SQL> </Table> <Table name="c_bp_group" alias="alias1_39"> <SQL> alias1_39.ad_org_id in ('E443A31992CB4635AFCAEABE7183CE85','0','DC206C91AA6A4897B44DA897936E0EC3','7BABA5FF80494CAFA54DEBD22EC46F01','BAE22373FEBE4CCCA24517E23F0C8A48', '19404EAD144C49A0AF37D54377CF452D','B843C30461EA4501935CB1D125C9C25A','2E60544D37534C0B89E765FE29BC0B43') </SQL> </Table> </Join> </Join> <Level name="businessPartnerCategoryLevel" column="c_bp_group_id" caption="Business Partner Category" table="alias1_39" uniqueMembers="true" ordinalColumn="name"> <Annotations> <Annotation name="entity">BusinessPartnerCategory</Annotation> </Annotations> <MemberFormatter className="org.openbravo.client.analytics.OBMondrianMemberFormatter" /> </Level> <Level name="businessPartnerLevel" column="c_bpartner_id" caption="Business Partner" table="alias1_38" uniqueMembers="true" ordinalColumn="name"> <Annotations> <Annotation name="entity">BusinessPartner</Annotation> </Annotations> <MemberFormatter className="org.openbravo.client.analytics.OBMondrianMemberFormatter" /> </Level> </Hierarchy> </Dimension>
Mesures
Cette partie du code XML affiche la définition des Mesures. Certaine d'entre-elles peuvent être construites à partir d'une expression MDX.
<Measure name="invoicedQuantity" column="qtyinvoiced" aggregator="sum"> <CellFormatter className="org.openbravo.client.analytics.MondrianCellFormatter$Quantity" /> </Measure>
Debugger les Requêtes pour Saiku
Il est possible de voir les requêtes Saiku enregistrées dans la fenêtre des Requêtes Analytics.
Une façon de générer un rapport qui génère une requête Saiku est de créer la requête elle-même en utilisant la fenêtre OB Analytics et ensuite de la sauvegarder. Le code XML de la requête générée par Saiku peut être utilisé comme modèle pour créer la requête pour le rapport.
Chaque requête peut être divisée en trois parties.
Entête
Dans l'entête les détails de la connexion sont définis. Le nom doit être unique dans la requête, un UUID peut être utilisé. La connexion est la même que montre la fenêtre OB Analytics quand elle affiche les Cubes.
<Query name="6793C26C4B504EF9822E16C2C63BAE0FDAF5CA2984604E1A8673D1C659B4057D" type="QM" connection="Openbravo" cube="DPL - P&L - F&B International Group US_A_US Dollar"
catalog="Openbravo" schema="Openbravo">
Axes
Pour chaque axe les Dimensions qui vont être affichées sont spécifiées. De même que les membres qui vont être inclus ou exclus.
<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>
Propriétés
Les propriétés nécessaires à Saiku pour savoir comment afficher les données.
<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>