Ceci est une traduction d'un billet d'Owen Leonard sur Koha Blog.
Koha 3 proposait déjà une sélection de rapports préconçus, et Koha 3 ajoute des rapports additionnels et un nouveau système de "Rapports Guidés" (sponsorisés partiellement par cette bibliothèque [NdT : Ahtens County Public Library]). Le système de Rapports Guidés n'est pas encore bien rodé, mais certains en ont déjà une utilisation intéressante, en particulier grâce à la possibilité d'exécuter des requêtes SQL personnalisées via l'interface de Koha.
J'aimerais vous montrer comment nous commençons à exploiter les données que Koha collecte pour constuire des rapports significatifs quant à l'utilisation de la bibliothèque. Commençons par les statistiques de circulation.
La table statistics
La santé de la bibliothèque est le reflet de ses statistiques de circulation, nous commencerons donc par là. Dans Koha, chaque prêt, retour et renouvellement est enregistré dans une table de la base de donnée appellée statistics. Voici à quoi elle ressemble :
| Field |
Type |
Collation |
Null |
Key |
Default |
| datetime |
datetime |
|
Yes |
MUL |
NULL |
| branch |
varchar(10) |
utf8_general_ci |
Yes |
|
NULL |
| proccode |
varchar(4) |
utf8_general_ci |
Yes |
|
NULL |
| value |
double(16,4) |
|
Yes |
|
NULL |
| type |
varchar(16) |
utf8_general_ci |
Yes |
|
NULL |
| other |
mediumtext |
utf8_general_ci |
Yes |
|
NULL |
| usercode |
varchar(10) |
utf8_general_ci |
Yes |
|
NULL |
| itemnumber |
int(11) |
|
Yes |
|
NULL |
| itemtype |
varchar(10) |
utf8_general_ci |
Yes |
|
NULL |
| borrowernumber |
int(11) |
|
Yes |
|
NULL |
| associatedborrower |
int(11) |
|
Yes |
|
NULL |
Certaines de ces colonnes ne sont pas utilisées; j'ignore si elles l'ont été par le passé, ou si elles le seront dans le futur. other, usercode, et associatedborrower don’t ne semblent pas être utilisées.
- datetime représente la date et l'heure de la transaction.
- branch est le site de la transaction.
- proccode est lié au suivi des amendes, paiements etc.
- value représente une somme d'argent (pour les amendes, les paiements, etc).
- type représente le type de transaction: issue [prêt], return [retour], renew[renouvellement], payment[paiement], ou writeoff.
- itemnumber est l'identifiant unique (defini dans la table items) de l'exemplaire concerné par la transaction.
- itemtype est la catégorie assignée à l'exemplaire comme défini dans la gestion des types de documents de Koha.
- borrowernumber est l'identifiant uniquer (defini dans la table borrowers) de l'adhérant concerné par la transaction.
Quand vous effectuez un prêt avec Koha, une ligne est ajoutée dans la table statistics (SELECTing datetime,branch,type,itemnumber,itemtype, and borrowernumber):
| datetime |
branch |
type |
itemnumber |
itemtype |
borrowernumber |
| 2008-10-07 14:07:31 |
CPL |
issue |
40235 |
CIRC |
20351 |
Pour vous faire une idée rapide de votre circulation du jour, vous pouvez exécuter ce qui suit :
select count(*) from statistics where year(datetime) = year(curdate()) AND month(datetime) = month(curdate()) AND DAY(datetime) = day(curdate()) and (type='issue' OR type='renew');
SQL trouvera l'année, le mois, et le jour des transactions correspondant au jour courrant et limitera les résultats aux prêts et renouvellements. Voici notre total le 16 mars 2009 :
1 row in set (36.76 sec)
Remarquez le temps qu'à mis le requête pour s'exécuter. La table statistics deviens vraiment lourde : la notre contiens des données datant de Mai 2003, et contiens 7,581,248 entrées. Celà suffit à ralentir les requêtes.
Obtenir ce genre de compte rapide est une bonne façon de coller un chiffre à votre journée. A la fin du mois, vous voudrez certainement obtenir des données significatives pour montrer quel genre de travail à été accompli. Nous allons donc séparer les résultats selon le code de collection pour voir quel genre de matériel nos adhérants ont emprûnté. Jettons un coup d'oeil à la circulation du mois dernier pour notre site d'Athens :
SELECT items.ccode, COUNT( statistics.itemnumber ) AS count
FROM items, statistics
WHERE statistics.branch = 'APL'
AND statistics.itemnumber = items.itemnumber
AND year( statistics.datetime ) =2009
AND month( statistics.datetime ) =02
AND (
statistics.type = 'issue'
OR statistics.type = 'renew'
)
GROUP BY items.ccode
Nous obtenons une belle comparaison de la popularité de chaque catégorie (dans cet exemple, il s'agit plutôt d'une sélection) pendant le mois :
| ccode |
count |
| AB |
427 |
| AF |
1355 |
| AV |
1002 |
| CDM |
681 |
| DVD |
1006 |
| EASY |
1754 |
| JF |
519 |
| JNF |
1028 |
| LP |
667 |
| MYS |
770 |
| NF |
1994 |
Vous devriez maintenant être capable de tester ces exemples chez vous en utilisant le système de Rapports Guidés Guided de Koha (ou directement dans MySQL si vous avez accès à votre base de donnée).