Comment connecter Power BI à votre système ERP

Guide étape par étape pour connecter Power BI à Odoo, SAP, Dynamics 365, Oracle, NetSuite et QuickBooks avec actualisation incrémentielle et transformation des données.

E
ECOSIRE Research and Development Team
|17 mars 202623 min de lecture5.2k Mots|

Comment connecter Power BI à votre système ERP

Votre système ERP contient les données opérationnelles les plus complètes de votre organisation. Commandes, factures, mouvements de stocks, reçus d'achat, bons de travail de fabrication, feuilles de temps des employés, interactions avec les clients : chaque événement transactionnel qui anime votre entreprise y est enregistré. Le problème est que les systèmes ERP sont conçus pour enregistrer les transactions et non pour les analyser. Les rapports intégrés à la plupart des ERP conviennent aux requêtes opérationnelles de base, mais s'effondrent lorsque vous avez besoin d'une analyse interfonctionnelle, d'une détection de tendances, de prévisions ou de tableaux de bord de niveau exécutif synthétisant les données de plusieurs domaines.

Power BI comble cette lacune. Il se connecte à la base de données ou aux API sous-jacentes de votre ERP, transforme les données transactionnelles en un schéma analytique en étoile et fournit des tableaux de bord interactifs qui révèlent des modèles que les rapports natifs de votre ERP ne peuvent pas afficher. Mais la connexion ne consiste pas simplement à « brancher Power BI sur la base de données ». Chaque plateforme ERP possède sa propre structure de données, sa propre méthode d'accès et ses propres particularités qui affectent la façon dont vous établissez la connexion, modélisez les données et maintenez l'intégration au fil du temps.

Ce guide couvre les étapes pratiques de connexion de Power BI à six principales plateformes ERP : Odoo (notre spécialité principale), SAP, Microsoft Dynamics 365, Oracle, NetSuite et QuickBooks. Nous nous concentrons sur les décisions d'architecture, les méthodes de connexion, la modélisation des données, l'actualisation incrémentielle et les modèles de transformation qui transforment les données ERP brutes en or analytique.

Points clés à retenir

  • Chaque intégration ERP suit le même modèle en trois phases : Connecter (accéder aux données), Transformer (remodeler pour l'analyse), Modèle (créer des relations de schéma en étoile)
  • La base de données PostgreSQL d'Odoo fournit la connexion Power BI la plus directe et la plus flexible --- Les vues SQL et les vues matérialisées sont l'approche recommandée pour les déploiements de production
  • SAP nécessite le connecteur SAP HANA ou SAP BW ; l'accès direct à la base de données est rarement autorisé dans les environnements SAP
  • Dynamics 365 s'intègre nativement via Dataverse, ce qui en fait l'ERP le plus simple à connecter pour les organisations déjà présentes dans l'écosystème Microsoft
  • L'actualisation incrémentielle est essentielle pour les grands ensembles de données ERP --- l'actualisation complète des tables de transactions de plusieurs millions de lignes n'est pas durable
  • Créez toujours une couche analytique (vues, tables intermédiaires ou entrepôt de données) entre l'ERP et Power BI plutôt que d'interroger directement les tables opérationnelles
  • La transformation des données dans Power Query doit gérer les modèles spécifiques à l'ERP : normalisation multidevises, alignement du calendrier fiscal et traduction du code de statut.

L'architecture d'intégration ERP universelle

Approche à trois niveaux

Quel que soit l'ERP que vous utilisez, l'architecture d'intégration suit trois couches :

Couche 1 : Extraction. Extrayez les données de l'ERP vers Power BI. Cela se produit via des connexions à des bases de données (PostgreSQL, SQL Server, Oracle), des appels API (REST, OData, SOAP) ou un stockage intermédiaire (entrepôt de données, lac de données, exportations CSV). La méthode d'extraction dépend de ce que l'ERP prend en charge et de ce qu'autorisent les politiques de sécurité de votre organisation.

Couche 2 : Transformation. Les données ERP brutes sont transactionnelles et normalisées --- optimisées pour les insertions et les mises à jour, pas pour l'analyse. Transformez-le en formes analytiques : regroupez les lignes de transaction dans des tableaux récapitulatifs, faites pivoter les codes de statut en étiquettes lisibles, convertissez les montants multidevises en une devise de base et alignez les dates sur votre calendrier fiscal. Cela se produit dans Power Query, les vues SQL ou un outil ETL dédié.

Couche 3 : Modélisation. Structurez les données transformées en un schéma en étoile avec des tables de faits (ventes, achats, mouvements de stocks) et des tables de dimensions (clients, produits, dates, entrepôts). Configurez les relations, rédigez des mesures DAX et créez la couche sémantique utilisée par les auteurs de rapports.

Base de données directe, API et entrepôt de données

La connexion directe à la base de données est la plus rapide à configurer et offre la plus grande flexibilité. Vous écrivez des requêtes SQL sur la base de données de l'ERP et extrayez exactement les données dont vous avez besoin. Cependant, il nécessite un accès à la base de données (que certains fournisseurs ERP découragent ou restreignent), peut avoir un impact sur les performances de l'ERP si les requêtes sont mal optimisées et associe vos analyses directement au schéma de l'ERP (qui change avec les mises à niveau).

La connexion API respecte les modèles d'accès prévus par le fournisseur ERP et ne risque pas d'impacter les performances de la base de données. Cependant, les API sont généralement plus lentes que les requêtes directes de base de données, peuvent avoir des limites de débit et renvoient souvent des données dans des formats hiérarchiques (JSON/XML) qui nécessitent davantage de travail de transformation dans Power Query.

L'entrepôt de données offre la séparation la plus nette. Un pipeline ETL extrait quotidiennement les données de l'ERP, les transforme en schéma analytique et les charge dans une base de données dédiée (Azure SQL, Snowflake, PostgreSQL) à laquelle Power BI se connecte. Il s'agit de l'architecture à long terme la plus maintenable, mais elle nécessite l'investissement initial le plus important pour construire le pipeline ETL.

Pour la plupart des organisations, nous recommandons de commencer par des connexions directes aux bases de données (ou des API où l'accès direct n'est pas possible) et de migrer vers un entrepôt de données à mesure que l'environnement d'analyse évolue et que le nombre de sources de données augmente.


Connecter Power BI à Odoo

Pourquoi Odoo est idéal pour Power BI

Odoo se distingue de la plupart des plateformes ERP par son accessibilité à l'intégration des analyses. Il fonctionne sur PostgreSQL, l'une des bases de données les plus compatibles avec Power BI. Son schéma est bien documenté, la dénomination de ses tables est cohérente (format module_model) et sa nature open source signifie qu'il n'y a aucune barrière de licence pour l'accès à la base de données. Si vous utilisez Odoo, vous disposez déjà de tout ce dont vous avez besoin pour créer des tableaux de bord Power BI de classe mondiale.

Chez ECOSIRE, l'intégration Odoo-to-Power BI est l'une de nos compétences clés. Nous avons créé des solutions d'analyse couvrant l'ensemble des modules Odoo : ventes, achats, inventaire, fabrication, comptabilité, ressources humaines, service d'assistance et gestion de projet. Les modèles que nous décrivons ici ont été testés sur des implémentations au service d'organisations avec des millions de transactions ERP.

Connexion directe PostgreSQL

Étape 1 : Configurez PostgreSQL pour l'accès à distance. Si votre instance Odoo et votre passerelle Power BI se trouvent sur des serveurs différents, PostgreSQL doit autoriser les connexions à distance. Dans postgresql.conf, définissez listen_addresses = '*'. Dans pg_hba.conf, ajoutez une ligne autorisant l'adresse IP du serveur passerelle avec l'authentification MD5. Redémarrez PostgreSQL pour appliquer les modifications.

Étape 2 : Créez un utilisateur de base de données en lecture seule. Ne connectez jamais Power BI en utilisant l'utilisateur de base de données principal d'Odoo. Créez un utilisateur dédié en lecture seule :

CREATE USER powerbi_reader WITH PASSWORD 'secure_password_here';
GRANT CONNECT ON DATABASE odoo_production TO powerbi_reader;
GRANT USAGE ON SCHEMA public TO powerbi_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO powerbi_reader;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO powerbi_reader;

Cet utilisateur peut lire toutes les tables mais ne peut pas modifier les données, insérer des enregistrements ou modifier le schéma. La ligne ALTER DEFAULT PRIVILEGES garantit que les nouvelles tables créées par les mises à niveau Odoo sont automatiquement lisibles.

Étape 3 : Connectez-vous depuis Power BI Desktop. Ouvrez Power BI Desktop → Obtenir des données → Base de données PostgreSQL. Entrez l'adresse de votre serveur, le port (par défaut 5432) et le nom de la base de données. Utilisez les informations d'identification powerbi_reader. Sélectionnez le mode « Importer » pour la plupart des tables (données chargées en mémoire) ou « DirectQuery » pour les très grandes tables sur lesquelles vous souhaitez des requêtes en direct.

Étape 4 : Écrivez des requêtes SQL personnalisées. Plutôt que d'importer des tables Odoo brutes, utilisez des requêtes SQL personnalisées dans les options avancées pour joindre et filtrer les données au niveau de la base de données. C'est plus efficace que d'importer des tables brutes et de les joindre dans Power Query.

Tableaux Odoo essentiels pour l'analyse

Le schéma de la base de données d'Odoo correspond directement à la structure de son module. Voici les tableaux clés pour les domaines analytiques les plus courants :

Analyse des ventes :

Table OdooContientColonnes clés
sale_orderCommandes clientidentifiant, partenaire_id, date_order, montant_total, état, user_id, company_id
sale_order_lineÉléments de campagne de commandeorder_id, product_id, product_uom_qty, price_unit, price_subtotal, remise
res_partnerClients/fournisseursidentifiant, nom, e-mail, country_id, industrial_id, company_type
product_templateFiche produitidentifiant, nom, list_price, standard_price, categ_id, type
product_productVariantes de produitsidentifiant, product_tmpl_id, default_code

Analyse d'inventaire :

Table OdooContientColonnes clés
stock_moveMouvements de stocksproduct_id, location_id, location_dest_id, product_uom_qty, date, état
stock_quantNiveaux de stocks actuelsproduct_id, location_id, quantité, réservé_quantité
stock_warehouseEntrepôtsidentifiant, nom, code, partenaire_id
stock_locationEmplacementsidentifiant, nom, utilisation, location_id (parent)

Analyses comptables :

Table OdooContientColonnes clés
account_moveÉcritures de journal/facturesidentifiant, partenaire_id, date, montant_total, état, move_type, journal_id
account_move_lineLignes d'entréemove_id, account_id, débit, crédit, solde, date, Partner_id
account_accountPlan comptableidentifiant, code, nom, type_compte
account_journalJournauxidentifiant, nom, type, code

Analyse de fabrication :

Table OdooContientColonnes clés
mrp_productionCommandes de fabricationproduct_id, product_qty, date_start, date_finished, state, bom_id
mrp_workcenterCentres de travailidentifiant, nom, capacité, time_effiency
mrp_bomNomenclatureproduct_tmpl_id, product_qty, tapez

Création de vues analytiques dans PostgreSQL

Pour les déploiements de production, nous vous recommandons fortement de créer des vues SQL qui pré-joignent et pré-agrégent les tables Odoo en formes analytiques. Cela déplace la complexité de Power Query vers SQL, où il est plus facile à maintenir et plus performant.

Exemple d'affichage du récapitulatif des ventes :

CREATE VIEW v_sales_analysis AS
SELECT
    so.id AS order_id,
    so.name AS order_reference,
    so.date_order::date AS order_date,
    so.state AS order_state,
    rp.name AS customer_name,
    rp.country_id,
    rc.name AS country_name,
    sol.product_id,
    pt.name AS product_name,
    pc.name AS product_category,
    sol.product_uom_qty AS quantity,
    sol.price_unit,
    sol.price_subtotal AS line_total,
    sol.discount,
    ru.login AS salesperson,
    so.company_id
FROM sale_order so
JOIN sale_order_line sol ON sol.order_id = so.id
JOIN res_partner rp ON rp.id = so.partner_id
LEFT JOIN res_country rc ON rc.id = rp.country_id
JOIN product_product pp ON pp.id = sol.product_id
JOIN product_template pt ON pt.id = pp.product_tmpl_id
LEFT JOIN product_category pc ON pc.id = pt.categ_id
LEFT JOIN res_users ru ON ru.id = so.user_id
WHERE so.state IN ('sale', 'done');

Power BI importe cette vue sous forme de table unique, pré-jointe et filtrée. Aucune transformation Power Query complexe n’est nécessaire. Lorsque le schéma d'Odoo change lors des mises à niveau, vous mettez à jour la vue SQL une fois plutôt que de modifier les étapes Power Query sur plusieurs ensembles de données.

Les vues matérialisées vont plus loin en précalculant et en stockant les résultats, ce qui accélère considérablement les actualisations de Power BI :

CREATE MATERIALIZED VIEW mv_sales_daily AS
SELECT
    so.date_order::date AS order_date,
    rp.country_id,
    pt.categ_id AS product_category_id,
    so.user_id AS salesperson_id,
    COUNT(DISTINCT so.id) AS order_count,
    SUM(sol.product_uom_qty) AS total_quantity,
    SUM(sol.price_subtotal) AS total_revenue
FROM sale_order so
JOIN sale_order_line sol ON sol.order_id = so.id
JOIN res_partner rp ON rp.id = so.partner_id
JOIN product_product pp ON pp.id = sol.product_id
JOIN product_template pt ON pt.id = pp.product_tmpl_id
WHERE so.state IN ('sale', 'done')
GROUP BY so.date_order::date, rp.country_id, pt.categ_id, so.user_id;

-- Refresh nightly via cron
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_sales_daily;

Cette vue pré-agrégée résume des millions de lignes de commande en milliers de lignes récapitulatives quotidiennes. Power BI importe le résumé des tableaux de bord et utilise l’accès au détail vers la vue détaillée lorsque les utilisateurs ont besoin de données au niveau de la ligne.

Gestion des modèles spécifiques à Odoo

Multi-entreprises. Odoo prend en charge plusieurs entreprises dans une seule base de données. Incluez toujours company_id dans vos requêtes et configurez la sécurité au niveau des lignes Power BI pour restreindre chaque utilisateur aux données de son entreprise.

Champs d'état. Odoo utilise des codes d'état textuels (draft, sent, sale, done, cancel). Mappez-les à des étiquettes conviviales dans Power Query ou dans votre vue SQL :

CASE so.state
    WHEN 'draft' THEN 'Quotation'
    WHEN 'sent' THEN 'Sent'
    WHEN 'sale' THEN 'Sales Order'
    WHEN 'done' THEN 'Locked'
    WHEN 'cancel' THEN 'Cancelled'
END AS order_status

Multi-devises. Odoo stocke les montants dans la devise de la transaction et dans la devise de l'entreprise. Pour les tableaux de bord Power BI, décidez dans quelle devise créer vos rapports et utilisez les colonnes appropriées. Si vous avez besoin d'une conversion de taux de change en temps réel, rejoignez la table res_currency_rate.

Relations plusieurs-à-plusieurs. Odoo utilise des tables de jonction pour les relations plusieurs-à-plusieurs (balises de produits, catégories de partenaires). Ceux-ci apparaissent sous forme de tableaux nommés {model1}_{model2}_rel. Gérez-les avec des tables de pont dans votre modèle de données Power BI.

Pour les organisations à la recherche d'analyses Odoo clé en main, les services d'intégration Power BI ERP d'ECOSIRE fournissent des modèles de tableau de bord Odoo prédéfinis couvrant les ventes, les stocks, la comptabilité, la fabrication et les ressources humaines, entièrement personnalisés selon votre configuration Odoo et vos exigences commerciales. Notre équipe possède une expertise approfondie d'Odoo et de Power BI, éliminant ainsi le fossé qui existe généralement lorsque les consultants BI tentent de travailler avec un ERP qu'ils ne comprennent pas.


Connecter Power BI à SAP

Options de connexion SAP

Les environnements SAP sont plus restrictifs en matière d'accès direct aux bases de données que les ERP open source. La plupart des clients SAP utilisent l'un de ces chemins de connexion :

Connecteur SAP HANA. Pour les clients SAP S/4HANA, le connecteur SAP HANA natif de Power BI fournit un accès direct aux vues HANA (vues analytiques, d'attributs et de calcul). Il s'agit de l'option la plus performante et prend en charge les modes Import et DirectQuery. Nécessite un utilisateur SAP HANA avec des privilèges SELECT sur les vues pertinentes.

Connecteur SAP BW. Pour les organisations utilisant SAP Business Warehouse, Power BI se connecte aux requêtes BW (requêtes BEx ou fournisseurs composites BW/4HANA). Cela exploite les structures analytiques déjà intégrées dans BW, évitant ainsi d’avoir à modéliser les données à partir de zéro dans Power BI.

Services SAP OData. SAP expose les données commerciales via les API OData (en particulier SAP Gateway et SAP API Business Hub). Le connecteur OData de Power BI consomme ces services. Cette approche respecte le modèle d'autorisation de SAP mais est plus lente que l'accès direct à la base de données et peut avoir des limites de pagination pour les grands ensembles de données.

Extraction vers le stockage intermédiaire. Pour les scénarios complexes, extrayez les données SAP à l'aide des outils natifs de SAP (Open Hub, réplication SLT, vues CDS) dans Azure Data Lake, Snowflake ou Azure SQL. Power BI se connecte au stockage intermédiaire. Il s'agit de l'approche la plus flexible et la plus évolutive pour les déploiements en entreprise.

Considérations sur la modélisation des données SAP

Les structures de données de SAP sont complexes et profondément normalisées. Des tables telles que VBAK (en-tête de commande client), VBAP (articles de commande client), KNA1 (fiche client) et MARA (fiche article) utilisent des noms de colonnes courts et cryptiques et stockent des valeurs codées qui nécessitent des tables de jointure pour la traduction.

Lors de la création de modèles Power BI à partir de données SAP :

Traduisez les codes plus tôt. SAP stocke le pays sous forme de code à 2 caractères, la devise sous forme de code à 3 caractères et le type d'article sous forme de code tel que « FERT » ou « HALB ». Joignez-vous aux tables de texte (T005T pour les pays, TCURT pour les devises, T134T pour les types de matériaux) dans votre requête d'extraction, pas dans Power Query.

Gérez le format de date de SAP. SAP stocke les dates sous forme de chaînes à 8 chiffres (AAAAMMJJ) avec « 00000000 » pour les dates nulles. Convertissez-les en types de date appropriés dans votre couche de transformation et gérez le modèle de date nulle.

Respectez les objets d'autorisation. Le modèle d'autorisation de SAP contrôle les données auxquelles chaque utilisateur peut accéder à un niveau granulaire. Lors de l’extraction de données pour Power BI, assurez-vous que votre extraction respecte ces limites ou implémentez une sécurité équivalente au niveau des lignes dans Power BI.


Connecter Power BI à Dynamics 365

Dataverse : le chemin natif

Dynamics 365 stocke les données dans Microsoft Dataverse et Power BI dispose d'une intégration Dataverse de première classe. Cela fait de Dynamics 365 l’ERP majeur le plus simple à connecter à Power BI, en particulier pour les organisations déjà investies dans l’écosystème Microsoft.

Connecteur Dataverse. Power BI Desktop → Obtenir des données → Dataverse. Authentifiez-vous avec vos informations d'identification Dynamics 365. Parcourez et sélectionnez les tables (entités) dont vous avez besoin. Le connecteur respecte les rôles de sécurité Dataverse, de sorte que les utilisateurs voient uniquement les données auxquelles ils sont autorisés à accéder.

Azure Synapse Link pour Dataverse. Pour les grands ensembles de données Dynamics 365, Azure Synapse Link réplique en continu les données Dataverse vers Azure Synapse Analytics ou Azure Data Lake. Power BI se connecte à Synapse/Data Lake au lieu d'interroger directement Dataverse. Cela élimine l’impact sur les performances de Dynamics 365 et fournit une meilleure plateforme pour les transformations complexes.

Point de terminaison TDS. Dataverse expose un point de terminaison Tabular Data Stream (TDS) auquel Power BI peut se connecter à l'aide du connecteur SQL Server. Ceci est utile pour les scénarios dans lesquels vous souhaitez écrire des requêtes SQL personnalisées sur des données Dataverse.

Tables Dynamics 365 pour Analytics

Tableaux clés de Dataverse pour les scénarios analytiques courants :

Ventes : salesorder, salesorderdetail, opportunity, account, contact, product Service : incident (cas), knowledgearticle, entitlement, sla Finances : invoice, invoicedetail, payment, generaljournal Service sur le terrain : workorder, bookableresource, agreement

La structure des tables de Dynamics 365 est déjà relativement analytique : les entités telles que salesorder contiennent des champs dénormalisés pour le nom du compte, le propriétaire et l'étiquette de statut. Cependant, pour des performances Power BI optimales, créez toujours un schéma en étoile plutôt que d’importer les tables Dataverse telles quelles.


Connecter Power BI à Oracle et NetSuite

Suite Oracle E-Business / Fusion

Pour Oracle EBS, utilisez le connecteur Oracle Database de Power BI avec le client Oracle installé sur la machine passerelle. Les applications Oracle Fusion Cloud fournissent des API REST que Power BI peut utiliser via le connecteur Web ou le connecteur OData.

Les rapports BI Publisher d'Oracle peuvent être configurés pour générer des données dans des formats que Power BI peut consommer, fournissant ainsi un chemin d'extraction pris en charge par le fournisseur qui respecte la logique métier et la sécurité d'Oracle.

NetSuite

NetSuite fournit plusieurs chemins de connexion pour Power BI :

SuiteAnalytics Connect (ODBC). Le pilote ODBC de NetSuite permet à Power BI de se connecter à l'aide du connecteur ODBC. Cela fournit un accès SQL à l'ensemble de données de NetSuite avec un schéma relationnel plus convivial pour l'analyse que le schéma NetSuite natif.

API SuiteQL. L'API REST de NetSuite prend en charge SuiteQL, un langage de requête de type SQL. Power BI peut appeler cette API via des fonctions Power Query personnalisées. Ceci est utile pour les extractions ciblées mais moins efficace que ODBC pour les grands ensembles de données.

Connecteurs tiers. Des outils tels que CData fournissent des connecteurs Power BI optimisés pour NetSuite qui gèrent automatiquement la pagination, l'authentification et le mappage de schéma.


Connecter Power BI à QuickBooks

QuickBooks en ligne

QuickBooks Online expose les données via une API REST que Power BI peut utiliser. La connexion nécessite un enregistrement d'application OAuth2 dans le portail de développeur Intuit et un connecteur Power Query personnalisé ou le connecteur Web avec gestion manuelle des jetons OAuth.

Pour la plupart des utilisateurs de QuickBooks, le chemin le plus simple est un connecteur tiers (CData, Skyvia ou similaire) qui gère l'authentification, la pagination et le mappage des types de données. Ces connecteurs apparaissent comme des sources de données natives dans Power BI et résument la complexité de l'API.

Données clés de QuickBooks pour Power BI

Données du compte de résultat : Factures, paiements, avoirs, reçus de vente Données du bilan : Soldes des comptes, écritures de journal Données opérationnelles : Clients, fournisseurs, produits/services, estimations

Les volumes de données QuickBooks sont généralement suffisamment petits pour que l'actualisation complète soit rapide (moins de 5 minutes). Une actualisation incrémentielle est rarement nécessaire pour les intégrations QuickBooks.


Actualisation incrémentielle des données ERP

Pourquoi l'actualisation incrémentielle est essentielle

Les bases de données ERP se développent continuellement. Une entreprise de taille moyenne génère quotidiennement des milliers de transactions. Après quelques années, la table des commandes clients contient des millions de lignes. L'actualisation de la table entière chaque matin gaspille les ressources de la passerelle, la capacité de la base de données et le temps.

L’actualisation incrémentielle indique à Power BI d’actualiser uniquement les données récentes (par exemple, les 30 derniers jours) tout en conservant en cache les données historiques des actualisations précédentes. Une actualisation complète qui a duré 45 minutes devient une actualisation incrémentielle de 3 minutes.

Étapes de configuration

Étape 1 : Créez des paramètres Power Query. Créez deux paramètres nommés exactement RangeStart et RangeEnd, tous deux de type DateTime. Définissez les valeurs par défaut (celles-ci ne sont utilisées que dans Power BI Desktop ; le service les remplace).

Étape 2 : Filtrez votre requête source. Appliquez un filtre à la colonne de date de votre table de faits à l'aide des paramètres :

#"Filtered Rows" = Table.SelectRows(Source, each [order_date] >= RangeStart and [order_date] < RangeEnd)

Ce filtre doit être intégré à la base de données source pour que l'actualisation incrémentielle fonctionne. Si vous vous connectez à PostgreSQL (Odoo), le filtre génère une clause WHERE que PostgreSQL exécute, renvoyant uniquement les lignes correspondantes.

Étape 3 : Définissez la stratégie d'actualisation incrémentielle. Dans Power BI Desktop, cliquez avec le bouton droit sur le tableau → Actualisation incrémentielle. Configurer :

  • Archivage des données à partir de : Jusqu'où conserver les données historiques (par exemple, 3 ans).
  • Actualiser les données de manière incrémentielle à partir de : Mode d'actualisation des données récentes (par exemple, 30 jours).
  • Actualiser uniquement les périodes complètes : Cochez cette option pour éviter les problèmes de données sur une journée partielle.
  • Détecter les modifications de données : Activez si votre table source possède une colonne "dernière modification" fiable (réduit davantage le temps d'actualisation en ignorant les partitions inchangées).

Étape 4 : publier et configurer. Après la publication sur le service Power BI, configurez l'actualisation planifiée. Le service crée des partitions temporelles et actualise uniquement les partitions comprises dans la fenêtre incrémentielle.

Modèles d'actualisation incrémentielle spécifiques à l'ERP

Odoo : Utilisez write_date comme colonne de détection des changements. Odoo met à jour cet horodatage à chaque modification d'enregistrement, ce qui le rend fiable pour détecter les lignes modifiées.

SAP : Utilisez le champ AEDAT (date de modification) disponible sur la plupart des tables de transactions SAP. Pour HANA, les vues HANA matérialisées peuvent assurer le suivi des modifications.

Dynamics 365 : Les entités Dataverse ont des horodatages modifiedon qui fonctionnent bien pour la détection des modifications. Azure Synapse Link fournit une capture intégrée des données modifiées.

Oracle : Utilisez rowscn d'Oracle ou une colonne last_update_date dédiée. Oracle GoldenGate peut fournir une capture de données modifiées pour des scénarios en temps réel.


Meilleures pratiques en matière de transformation des données

Normalisation multi-devises

La plupart des systèmes ERP stockent les montants des transactions dans la devise de la transaction. Pour les tableaux de bord analytiques, vous avez généralement besoin de montants dans une seule devise de reporting.

Deux approches :

Conversion côté source. Si votre ERP stocke à la fois les montants des transactions et ceux de la devise de base (Odoo stocke amount_total dans la devise de transaction et amount_total_company_currency dans la devise de base), utilisez directement la colonne de devise de base. Cela exploite les taux de change de l'ERP et évite les écarts entre les rapports opérationnels et analytiques.

Conversion Power Query. Si vous devez créer un rapport dans une devise différente de la devise de base de l'ERP, créez un tableau des taux de change dans votre modèle Power BI et utilisez DAX pour convertir les montants au moment du rapport. Cette approche est plus flexible mais nécessite de conserver des données sur les taux de change.

Traduction du code d'état

Les systèmes ERP utilisent des codes internes pour les statuts, les types et les catégories. Traduisez-les en étiquettes conviviales dans votre couche de transformation, pas dans DAX. Un visuel regroupé par « Brouillon, Envoyé, Confirmé, Terminé, Annulé » est explicite. Un visuel qui regroupe par « 1, 2, 3, 4, 5 » ne l’est pas.

Pour Odoo, la traduction est simple puisque Odoo utilise des états de texte lisibles. Pour SAP, mappez les codes cryptiques (AUFNR, MATNR, BUKRS) à des noms conviviaux. Pour Dynamics 365, utilisez les étiquettes du jeu d’options plutôt que les valeurs entières sous-jacentes.

Alignement du calendrier fiscal

Si votre exercice diffère de l'année civile, créez une dimension de calendrier fiscal qui mappe chaque date à son exercice, son trimestre fiscal et sa période fiscale. Ceci est essentiel pour les tableaux de bord financiers où « T1 » signifie le premier trimestre fiscal (qui peut être juillet-septembre), et non le premier trimestre calendaire (janvier-mars).

Incluez à la fois des attributs de calendrier et des attributs fiscaux dans votre dimension de date afin que les utilisateurs puissent basculer entre les perspectives sans modifier le modèle de données.

Pour obtenir une assistance de bout en bout pour connecter Power BI à votre environnement ERP spécifique, contactez l'équipe d'analyse d'ECOSIRE pour discuter de vos besoins. Nous sommes spécialisés dans l'analyse Odoo et fournissons des tableaux de bord de modèles Power BI prédéfinis pour chaque module majeur d'Odoo.


##FAQ

Dois-je connecter Power BI directement à ma base de données ERP ou utiliser un entrepôt de données ?

Pour les déploiements initiaux avec un petit nombre de rapports et des volumes de données modérés (moins de 10 millions de lignes), les connexions directes aux bases de données sont plus rapides à mettre en place et parfaitement adéquates. À mesure que votre environnement d’analyse dépasse 10 à 15 rapports ou que vous commencez à combiner des données provenant de plusieurs systèmes sources, un entrepôt de données devient utile. L'entrepôt fournit un schéma stable pour Power BI (l'isolant des modifications du schéma ERP), de meilleures performances de requête (grâce à la pré-agrégation et à l'indexation) et un emplacement unique pour implémenter la logique métier (conversion de devises, mappage fiscal, traduction de statut). La plupart des organisations commencent par des connexions directes et migrent vers un entrepôt dans un délai de 12 à 18 mois.

Les requêtes Power BI ralentiront-elles mon système ERP ?

Ils le peuvent s’ils ne sont pas gérés correctement. Les actualisations planifiées de Power BI exécutent des requêtes SQL sur votre base de données ERP, qui consomment des ressources CPU, mémoire et E/S. Atténuez ce problème en planifiant des actualisations pendant les heures creuses (tôt le matin, tard le soir), en créant des réplicas en lecture pour les requêtes analytiques (réplication en streaming PostgreSQL pour Odoo, Always On pour SQL Server), en utilisant des vues matérialisées qui précalculent les résultats et en mettant en œuvre une actualisation incrémentielle pour minimiser les données analysées. Pour les ERP critiques, un réplica en lecture constitue l’approche la plus sûre : Power BI interroge le réplica sans que la base de données de production ne soit affectée.

Comment gérer les mises à niveau du module Odoo qui modifient le schéma de la base de données ?

Les mises à niveau du module Odoo ajoutent, renomment ou suppriment occasionnellement des colonnes et des tables de base de données. Si les requêtes Power BI font référence à une colonne renommée ou supprimée, l’actualisation échoue. Atténuez ce problème en utilisant les vues SQL comme couche d'abstraction entre les tables Odoo brutes et Power BI. Lorsqu'une mise à niveau modifie le schéma, mettez à jour la vue SQL pour refléter la nouvelle structure. Power BI continue d’interroger le schéma stable de la vue sans aucune modification. Après chaque mise à niveau d'Odoo, exécutez manuellement votre actualisation Power BI pour vérifier que toutes les requêtes réussissent avant la prochaine actualisation planifiée.

Puis-je combiner les données de plusieurs systèmes ERP dans un seul rapport Power BI ?

Oui, et c’est l’une des fonctionnalités les plus puissantes de Power BI. Les organisations qui exploitent différents ERP dans différentes régions ou unités commerciales peuvent créer des tableaux de bord unifiés combinant les données de tous les systèmes. La clé est de construire un schéma analytique commun (schéma en étoile) qui normalise les différentes structures ERP dans un format partagé. Les tables de dimension client fusionnent les clients de tous les ERP à l’aide d’un identifiant commun. Les dimensions du produit alignent les catégories de produits sur tous les systèmes. Les tableaux de faits standardisent les montants dans une devise commune et les statuts dans un vocabulaire commun. Les modèles composites peuvent se connecter à certaines sources via Import et à d'autres via DirectQuery.

Comment gérer les relations plusieurs-à-plusieurs d'Odoo dans Power BI ?

Odoo utilise des tables de jonction (nommées avec le modèle {model1}_{model2}_rel) pour les relations plusieurs-à-plusieurs, telles que les balises de produits, les catégories de partenaires et les listes de contrôle d'accès. Dans Power BI, importez la table de jonction et créez deux relations un-à-plusieurs : une de la première dimension à la table de jonction et une de la deuxième dimension à la table de jonction. Ce modèle de table de pont gère correctement le filtrage plusieurs-à-plusieurs. Sachez que certaines relations plusieurs-à-plusieurs Odoo créent des lignes qui compliquent l'agrégation --- vérifiez toujours les totaux par rapport aux rapports natifs d'Odoo lors de la validation.

E

Rédigé par

ECOSIRE Research and Development Team

Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.

Discutez sur WhatsApp