Expertises

Bases de données & Datalakes

Avant le moindre tableau de bord, il faut une donnée fiable. C'est la partie invisible du travail, et souvent la plus importante.

Rôle
Création, mise à jour et maintenance
Sources
ERP, CRM, finance, RH
Outils
SQL Server, SSMS
Débouché
Rapports Power BI

Trois logiciels, trois façons d'écrire le même client. Le vrai travail commence exactement là.

Harmoniser, concrètement

Chaque logiciel a sa nomenclature. Tant que ces trois lignes ne sont pas reconnues comme un seul et même client, aucun rapport ne peut être juste.

ERP
NomLAITERIE DU VAL SAS
IdentifiantCLI-00482
PaysFR
CRM
NomLaiterie du Val
Identifiant482
PaysFrance
Finance
NomLaiterie Val (SAS)
Identifiant00482
PaysFRA
Datalake, zone métier
Nom?
Identifiant?
Pays?
Sources?

Exemple fictif.

Datalake ou base de données ?

Datalake Base de données
Données Brutes, tous formats : tables, fichiers, journaux, documents Structurées en tables, selon un modèle défini
Structure Définie à la lecture, au moment de l’analyse Définie à l’écriture, avant d’enregistrer
Usage Exploration, historique complet, data science Applications, transactions, reporting fiable
Point fort Flexibilité : on garde tout, on décide plus tard Cohérence, intégrité et sécurité des données

En pratique, les deux se complètent : le Datalake conserve tout, les tables métier qui en sortent servent les rapports.

Le chemin d'une donnée

Chez Synerlink, le Datalake existait déjà à mon arrivée : mon rôle était de le maintenir à jour et de l'améliorer, pour qu'il alimente de façon fiable tous les rapports Power BI.

  1. SourcesERP, CRM, finance, RH
  2. IngestionExtractions planifiées
  3. Zone bruteCopie fidèle, historisée
  4. Zone nettoyéeFormats et doublons corrigés
  5. Zone métierTables prêtes à l’analyse
  6. RestitutionRapports Power BI

En SQL, ça ressemble à ça

Une fois les identifiants alignés, une seule requête croise ce que trois logiciels savaient chacun de leur côté.

rapprochement_clients.sql
-- Chiffre d'affaires par client, vu par les trois sources
SELECT  e.client_id,
        TRIM(e.raison_sociale)      AS client,
        c.segment,
        SUM(f.montant_ht)           AS ca_ht
FROM    erp.clients       AS e
JOIN    crm.comptes       AS c ON c.code_erp  = e.client_id
LEFT JOIN finance.factures AS f ON f.client_id = e.client_id
GROUP BY e.client_id, e.raison_sociale, c.segment
ORDER BY ca_ht DESC;