Diese Seite beschreibt Calíope 1.5, die Version, die wir gerade bauen. Die 1.4 ist fertig und in der App-Review, und der Store liefert heute 1.3 auf dem Mac und 1.2 auf dem iPad. Das Changelog sagt, in welcher Version jede Funktion kam.
Fügt jedem Thema einen Button „In Calíope öffnen“ hinzu. Funktioniert nur mit installierter App.
Eine gesicherte Abfrage mit definierter Ausgabe und deklarierten Parametern.
Wo es zu finden ist: Workspace › Werkzeuge › Berichte
Ein Bericht ist kein Snippet. Ein Snippet ist Text, den man in den Editor einfügt; ein Bericht ist ein Artefakt, das man ausführt: er merkt sich die Spalten, die er erwartet, wie sie dargestellt werden, welche Parameter er verlangt und aus welcher Quelle er kommt.
Deshalb liefert zweimaliges Ausführen dasselbe, und deshalb wird Ihnen oben gesagt, wenn das Ankommende nicht zum Deklarierten passt, statt stillschweigend eine andere Tabelle zu zeigen.
Funktioniert mit relationalen Datenbanken, mit SQLite-Dateien und mit MongoDB.
Ein Bericht darf aus mehreren Anweisungen bestehen, solange die letzte das SELECT ist, das die Tabelle erzeugt.
Wo es zu finden ist: Workspace › Werkzeuge › Berichte
Nicht jeder Bericht entsteht aus einer einzigen Abfrage. Sie können eine Sitzungsvariable setzen, eine temporäre Tabelle in mehreren Durchgängen aufbauen, sie indizieren und am Ende lesen. Das gesamte Skript läuft über eine einzige Verbindung, deshalb existiert die in der ersten Anweisung erzeugte temporäre Tabelle auch noch in der letzten.
Was Sie vor dem abschließenden SELECT verwenden dürfen: SET und USE für die Sitzung, CREATE TEMPORARY TABLE sowie Schreibzugriffe auf Tabellen, die dieser Bericht selbst erzeugt hat — INSERT, UPDATE, DELETE, Indizes, ALTER. Auch Lesevorgänge dazwischen sind erlaubt.
Was nicht: Schreiben in eine echte Tabelle, CREATE TABLE ohne TEMPORARY, SET GLOBAL, PREPARE, EXECUTE und CALL. Es ist eine geschlossene Liste; alles andere wird abgelehnt — mit Angabe der Anweisungsnummer und bevor irgendetwas ausgeführt wird.
Der Grund ist ein Versprechen: Ein Bericht rührt Ihre Daten nie an. Genau das macht es sicher, einen um drei Uhr morgens einzuplanen.
Stichwörter: Stapel, temporäre Tabelle, mehrere Anweisungen, Skript, Vorbereitung
Mit Typ und Vorgabewert deklariert, und sie reisen getrennt von der Abfrage.
Wo es zu finden ist: Berichte › Parameter deklarieren
Deklariert werden sie unter „Parameter deklarieren“ in der Werkzeugleiste: jeder mit Namen, Typ, ob er erforderlich ist und mit welchem Wert er ankommt. Im Text schreibt man sie als „:name“ in SQL und als "$$name" im JSON von MongoDB.
Sie in den Text zu schreiben deklariert sie nicht. Nicht auf diesem Weg: ein nicht deklarierter Platzhalter lässt den Bericht bei der Prüfung scheitern. Was das Blatt hingegen tut, ist dir die anzubieten, die die Abfrage bereits verwendet, damit du sie mit dem exakten Namen deklarierst.
Ein Parameter ist ein Wert, kein Stück Abfrage. Er wird nie in den Text eingefügt: er reist separat gebunden, also kann nichts, was Sie dort eingeben, die Abfrage zerstören oder ihr Verhalten ändern.
Der Preis dafür: weder ein Tabellenname noch eine IN(…)-Liste variabler Länge lassen sich mit einem einzigen Platzhalter parametrisieren. Für die Liste gibt es den Typ „Liste“, der so viele Platzhalter erzeugt wie Werte; für den Tabellennamen gibt es keine Unterstützung, und das ist Absicht.
Welche Spalten erscheinen, in welcher Reihenfolge, mit welchem Titel und Format.
Wo es zu finden ist: Berichte › Ausgabe
Das ist es, was aus einer gesicherten Abfrage einen Bericht macht. Sie können Spalten ausblenden, umsortieren, ihnen einen eigenen Titel geben, das Format wählen (Tausender, zwei Nachkommastellen, Prozent, Währung, Datum, Bytes) und ihre Ausrichtung.
In der Fußzeile können Sie Aggregate je Spalte hinzufügen: Summe, Mittelwert, Minimum, Maximum und Anzahl. Nullwerte zählen nicht: ein Mittelwert teilt durch die vorhandenen Werte, nicht durch die Zeilen.
Die hier gewählte Reihenfolge ist Darstellung und schreibt Ihre Abfrage nicht um.
CSV, TSV, JSON, Markdown, HTML, XML, Text, Excel und ein paginiertes PDF.
Wo es zu finden ist: Berichte › Exportieren
Exportiert wird das, was die Ausgabe deklariert: die sichtbaren Spalten, in ihrer Reihenfolge, mit ihren Titeln und Formaten. Ein PDF, das „Betrag“ sagt, und ein CSV, das „total_eur“ sagte, wären nicht derselbe Bericht.
Das PDF ist paginiert, mit auf jeder Seite wiederholter Kopfzeile und Nummerierung; Aggregate und Hinweise stehen auf der letzten.
Alles läuft über das Sicherungsfenster des Systems: Calíope schreibt nie in einen Ordner, den Sie nicht ausgewählt haben.
Täglich, wöchentlich, werktags, monatlich oder alle N Stunden — mit einer Grenze, die man kennen sollte.
Wo es zu finden ist: Berichte › Planen
Geplante Läufe finden nur statt, solange Calíope offen ist. Es gibt keinen Hintergrunddienst, keinen Daemon, keinen Launch Agent: am Mac läuft es bei geöffneter App, und am iPad nur im Vordergrund — einem Bericht wird kein Hintergrundfenster gewährt.
Ist die App zur vorgesehenen Zeit geschlossen, wird der Lauf im Verlauf als übersprungen vermerkt, mit seinem Grund, und beim nächsten erneut versucht. Verpasste Läufe werden nie alle auf einmal ausgelöst.
Ohne jemanden davor wird der Vorgabewert jedes Parameters benutzt. Ein erforderlicher Parameter ohne Wert wird nie erfunden: der Lauf wird als übersprungen vermerkt.
Was lief, wann, mit welchen Werten und auf welchem Gerät.
Wo es zu finden ist: Berichte › Verlauf
Jede Ausführung hinterlässt ihre Zeile: was auch passiert, auch die abgebrochenen und die übersprungenen. Gespeichert wird, mit welchen Parametern sie lief, wie viele Zeilen sie lieferte, wie lange sie dauerte, welches Gerät sie ausführte und — wenn es zwei mögliche Adressen gibt — über welche sie sich verbunden hat.
Berichte und Backups teilen sich denselben Verlauf mit zwei dichten Bereichen: von Berichten aus sehen Sie nie eine einzige Backup-Zeile, und umgekehrt genauso.
Die Aufbewahrung wählen Sie, und sie lässt sich nach iCloud spiegeln, um sie vom Telefon aus zu sehen.
Wenn der Verlauf selbst nicht geschrieben werden konnte —etwa bei vollem Speicher—, sagt es die Fußzeile: dann fehlen Zeilen, und was Sie sehen, ist nicht alles, was gelaufen ist.