Cette page décrit Calíope 1.5, la version que nous construisons en ce moment. La 1.4 est terminée et en cours d'examen par Apple, et la boutique propose aujourd'hui la 1.3 sur le Mac et la 1.2 sur iPad. Le changelog indique dans quelle version chaque fonction est arrivée.

Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.

Rapports

Une requête enregistrée avec une sortie définie et des paramètres déclarés.

Où le trouver : Espace de travail › Outils › Rapports

Un rapport n’est pas un fragment. Un fragment est du texte qu’on colle dans l’éditeur ; un rapport est un artefact qu’on exécute : il mémorise les colonnes qu’il attend, leur présentation, les paramètres qu’il demande et la source dont il provient.

C’est pourquoi l’exécuter deux fois donne la même chose, et pourquoi lorsque ce qui arrive ne correspond pas à ce qui était déclaré on vous le dit en haut au lieu d’afficher un tableau différent en silence.

Fonctionne avec les bases relationnelles, les fichiers SQLite et MongoDB.

Mots-clés : rapport, requête enregistrée, sortie

Préparer avant de lire

Un rapport peut comporter plusieurs instructions, à condition que la dernière soit le SELECT qui produit le tableau.

Où le trouver : Espace de travail › Outils › Rapports

Tout rapport ne provient pas d’une seule requête. Vous pouvez définir une variable de session, construire une table temporaire en plusieurs passes, l’indexer et la lire à la fin. Le script entier s’exécute sur une seule connexion : la table temporaire créée à la première instruction existe encore à la dernière.

Ce que vous pouvez utiliser avant le SELECT final : SET et USE pour la session, CREATE TEMPORARY TABLE, et l’écriture dans les tables créées par ce même rapport — INSERT, UPDATE, DELETE, index, ALTER. Les lectures intermédiaires sont également permises.

Ce que vous ne pouvez pas : écrire dans une table réelle, CREATE TABLE sans TEMPORARY, SET GLOBAL, PREPARE, EXECUTE et CALL. C’est une liste fermée, et ce qui n’y figure pas est refusé, avec le numéro de l’instruction, avant toute exécution.

La raison est une promesse : un rapport ne touche jamais à vos données. C’est ce qui permet d’en programmer un à trois heures du matin.

Mots-clés : lot, table temporaire, plusieurs instructions, script, préparation

Paramètres

Déclarés avec un type et une valeur par défaut, ils voyagent à part de la requête.

Où le trouver : Rapports › Déclarer les paramètres

Ils se déclarent dans « Déclarer les paramètres », dans la barre de l’outil : chacun avec son nom, son type, s’il est obligatoire et la valeur avec laquelle il arrive. Dans le texte ils s’écrivent « :nom » en SQL et "$$nom" dans le JSON de MongoDB.

Les écrire dans le texte ne les déclare pas. Ce n’est pas le chemin : un marqueur non déclaré fait échouer la validation du rapport. Ce que la feuille fait, en revanche, c’est vous proposer ceux que la requête utilise déjà, pour les déclarer avec le nom exact.

Un paramètre est une valeur, pas un morceau de requête. Il n’est jamais collé dans le texte : il voyage lié séparément, donc rien de ce que vous y saisissez ne peut casser la requête ni changer ce qu’elle fait.

En contrepartie, on ne peut paramétrer ni un nom de table, ni une liste IN(…) de longueur variable avec un seul marqueur. Pour la liste il y a le type « liste », qui déploie autant de marqueurs que de valeurs ; pour le nom de table il n’y a pas de prise en charge, et c’est délibéré.

Mots-clés : paramètre, liaison, injection, liste

La sortie définie

Quelles colonnes s’affichent, dans quel ordre, avec quel titre et quel format.

Où le trouver : Rapports › Sortie

C’est ce qui transforme une requête enregistrée en rapport. Vous pouvez masquer des colonnes, les réordonner, leur donner votre propre titre, choisir le format (milliers, deux décimales, pourcentage, monnaie, date, octets) et leur alignement.

En pied de page vous pouvez ajouter des agrégats par colonne : somme, moyenne, minimum, maximum et comptage. Les valeurs nulles ne comptent pas : une moyenne divise par les valeurs présentes, pas par les lignes.

L’ordre choisi ici relève de la présentation et ne réécrit pas votre requête.

Mots-clés : colonnes, format, agrégat, graphique

CSV, TSV, JSON, Markdown, HTML, XML, texte, Excel et un PDF paginé.

Où le trouver : Rapports › Exporter

Ce qui est exporté, c’est ce que déclare la sortie : les colonnes visibles, dans leur ordre, avec leurs titres et leurs formats. Un PDF qui dit « Montant » et un CSV qui dirait « total_eur » ne seraient pas le même rapport.

Le PDF est paginé, avec l’en-tête répété sur chaque page et sa numérotation ; les agrégats et les avis figurent sur la dernière.

Tout passe par le panneau d’enregistrement du système : Calíope n’écrit jamais dans un dossier que vous n’avez pas choisi.

Mots-clés : exporter, pdf, excel, csv, partager

Planifier un rapport

Quotidien, hebdomadaire, jours ouvrés, mensuel ou toutes les N heures — avec une limite à connaître.

Où le trouver : Rapports › Planifier

Les exécutions planifiées n’ont lieu que si Calíope est ouverte. Il n’y a pas de service en arrière-plan, pas de démon, pas d’agent de lancement : sur le Mac cela tourne avec l’app ouverte, et sur iPad, uniquement au premier plan — aucune fenêtre d’arrière-plan n’est accordée à un rapport.

Si l’app est fermée à l’heure prévue, l’exécution est notée dans l’historique comme ignorée, avec son motif, et retentée à la suivante. Les exécutions manquées ne sont jamais déclenchées toutes d’un coup.

Sans personne devant, la valeur par défaut de chaque paramètre est utilisée. Un paramètre obligatoire sans valeur n’est jamais inventé : l’exécution est notée comme ignorée.

Mots-clés : planifier, automatique, ignoré

Historique des exécutions

Ce qui a tourné, quand, avec quelles valeurs et sur quelle machine.

Où le trouver : Rapports › Historique

Chaque exécution laisse sa ligne : quoi qu’il arrive, y compris les annulées et les ignorées. On y mémorise avec quels paramètres elle a tourné, combien de lignes elle a renvoyées, combien de temps elle a pris, quelle machine l’a exécutée et — lorsqu’il y a deux adresses possibles — par laquelle elle s’est connectée.

Rapports et sauvegardes partagent le même historique avec deux portées étanches : depuis Rapports vous ne voyez jamais une seule ligne de sauvegarde, et inversement.

Vous choisissez la rétention, et elle peut être répliquée sur iCloud pour la consulter depuis votre téléphone.

Si l’historique lui-même n’a pas pu être écrit —un disque plein, par exemple—, le pied de page vous le dit : il manque alors des lignes, et ce que vous voyez n’est pas tout ce qui s’est exécuté.

Mots-clés : historique, exécutions, rétention, audit