Bonjour à tous,
un client souhaite refondre une base Access en une application uniquement SQL Server :
- structure et données SQL Server
- importation des données: BCP au début, remplacé par Talend ensuite
- transformations en SQL, pas de Talend
- programmabilité en T-SQL (ce qui était fait en macro dans Access), pas de Talend
Il y a 3 grandes phases:
- import des données
- préparation des données : de nombreuses (autour de 100) requêtes pour exclure certains cas, corriger des données, joindre des tables, etc.
- application séquentiellement de plusieurs centaines (autour de 400) de requêtes cumulatives sur UNE table pour calculer un montant X: update majoritairement.
Il y a aussi une gestion de campagne qui permet de faire plusieurs campagnes avec les mêmes données source, pour tester des règles différentes.
Le client voudrait profiter du passage sous SQL Server pour augmenter sa traçabilité et être capable de dire, pour chaque ligne fonctionnelle (disons une ligne dont la clé unique est un n° de facture ou n° de dossier):
- quelles sont les règles (sur les 400) qui ont impacté la ligne: en plus du fait qu'une ligne peut répondre ou pas au cas traité par la règle (par exemple la règle "malus de 10% si le nombre d'incident est supérieur à ...", la règle peut s'appliquer ou pas selon la campagne.
- comment la règle a impacté la ligne (le montant X a varié de 10 à 15)
Le client ne veut pas passer en traitement ligne à ligne, il veut conserver la logique de la série de requêtes cumulatives. Il préfère agir à coup de requêtes et de procédures stockées que de passer par des interfaces.
Je pensais travailler ainsi:
- créer une table de traçabilité des règles : identifiant de la ligne, identifiant de la règle, date, effet, valeur avant application, valeur après application
- coder chaque règle dans une procédure stockée, cette procédure stockée log dans la table de table de traçabilité des règles les informations
- créer une table qui donne pour chaque campagne la liste des règles à appliquer et l'ordre dans lequel l'appliquer et des procédures stockées pour la manipuler.
- lors du lancement de la MAJ d'une campagne, les règles à jouer sont lues et sont exécutées, donc X procédures stockées sont exécutées de manière séquentielle
Outre que je suis ouvert à d'autres façons de répondre à ce besoin, ma question porte principalement sur la manière de tracer. Je pensais le faire en 2 temps:
1) logger que je vais appliquer la règle X sur la campagne choisie
2) identifier les lignes qui répondent au cas de la règle "malus de 10% si le nombre d'incident est supérieur à ..." et stocker cette liste de lignes avec les identifiant fonctionnels de la ligne et l'identifiant de la campagne.
3) pour ces lignes, inscrire dans la table de traçabilité que les lignes vont être traitées, et sauver la valeur du montant actuel
4) appliquer la règle sur ces lignes (avec un exist qui tient compte de la campagne)
5) updater la table de traçabilité avec la nouvelle valeur de ces lignes
6) logger que j'ai bien appliqué la règle X sur la campagne choisie
SQL Server 2012
Merci de vos idées / remarques / retours d'expérience
Partager