2010-03-16 3 views
6

Une partie de mon travail consiste à créer des rapports et des données à partir de SQL Server à utiliser comme informations pour décision. La majorité des données sont agrégées, comme les stocks, les ventes et les coûts totaux des services, ainsi que d'autres dimensions. Lorsque je crée les rapports, et plus précisément, je développe les SELECT pour extraire les données agrégées de la base de données OLTP, je crains de confondre un JOIN ou un GROUP BY, par exemple, renvoyer des résultats incorrects.Quelles sont vos meilleures pratiques pour assurer l'exactitude des rapports de SQL?

J'essaie d'utiliser des « meilleures pratiques » pour me prévenir pour « générer » mauvais chiffres:

  • Lors de la création d'un ensemble de données agrégées, exploser toujours cet ensemble de données sans l'agrégation et rechercher toute erreur évidente .
  • Exportez l'ensemble de données éclaté vers Excel et comparez SUM(), AVG(), etc. à partir de SQL Server et Excel.
  • Impliquer les personnes qui utiliseraient l'information et demander une validation (demander aux gens d'aider à identifier les erreurs sur les chiffres).
  • Ne jamais déployer ces choses dans l'après-midi - si possible, essayez de jeter un coup d'œil au T-SQL le lendemain matin avec un esprit rafraîchi. J'ai corrigé de nombreux bugs en utilisant cette procédure simple.

Même avec ces procédures, je m'inquiète toujours des chiffres. Quelles sont vos meilleures pratiques pour assurer l'exactitude des rapports?

Répondre

2

avez-vous envisagé de remplir vos tableaux avec des données de test qui produisent des résultats connus et de comparer les résultats de vos requêtes aux résultats attendus.

1
  • Signés, par écrit

J'ai trouvé que l'une des meilleures pratiques est que tant le lecteur/client et les développeurs sont sur la même page (documentée). De cette façon, quand des nombres mystérieux apparaissent (et ils le font), je peux pointer vers la spécification par écrit et dire, "C'est pourquoi vous voyez ce nombre. Voulez-vous qu'il soit différent?".

  • test, test, test

Pour les rapports sérieusement compliqués, nous sommes passés par des données de test de haut en bas avec le client, jusqu'à ce que tous les chiffres étaient corrects, et le client a été satisfait.

  • Cases Edge

Nous avons découvert un cas sérieux compliqué dans notre système d'information qui a transformé tout à l'envers (sur notre fin). Que se passe-t-il si l'utilisateur génère un rapport (par exemple, fin d'année 2009), saisit des données pour la nouvelle année, puis revient pour générer le même rapport? Les données ont changé mais ce rapport ne devrait pas. Penser et travailler ces cas peut sauver beaucoup de chagrin d'amour.

0

Écrire des tests automatisés.

Nous avons beaucoup de rapports de services de rapports - nous les testons en utilisant Selenium.Nous utilisons une page de données de test pour injecter quelques données connues dans une base de données vide, puis exécuter le rapport et affirmer que les chiffres sont conformes aux attentes.

Les builds se déroulent à chaque fois que nous nous enregistrons, donc nous savons que nous n'avons rien fait de trop stupide

Questions connexes