Q ist eine array-orientierte Programmiersprache von Arthur Whitney, die 2003 von KX Systems als Abfrage- und Skriptsprache der Datenbank kdb+ veröffentlicht wurde. Sie ist extrem kompakt, arbeitet auf ganzen Vektoren statt Schleifen und wird vor allem in der Finanzbranche für die Analyse großer Zeitreihen (Tick-Daten) eingesetzt.
Erste Schritte
Q startet man über die kdb+-Konsole q. Ein einfacher Ausdruck wertet sofort aus:
q)sum til 5
10
q)2 * 1 2 3
2 4 6
til n erzeugt die Zahlen 0 bis n-1, sum addiert den ganzen Vektor auf.
Wichtige Befehle und Operatoren
til n— Liste 0 1 ... n-1 erzeugencount x— Länge eines Vektorsflip t— Tabelle/Matrix transponierengroup x— Werte nach Schlüssel gruppierendistinct x— doppelte Elemente entfernenasc/desc— auf-/absteigend sortierenfirst/last— erstes/letztes Elementsum,avg,max,min— Vektoraggregate
Tabellen und q-SQL
kdb+-Tabellen werden mit einer Liste angelegt, Spalten entstehen durch Zuordnung:
t:([] sym:`IBM`AAPL; price:100 150)
select avg price by sym from t
update price:price * 1.1 from t where sym=`IBM
select, update und delete ähneln SQL, arbeiten aber direkt auf Spaltenvektoren.
Adverbien
Adverbien modifizieren Funktionen: each (') wendet auf jedes Element an, over (/) faltet, scan () liefert alle Zwischenergebnisse.
Q ist ein lesbarer Wrapper um die noch knappere Sprache K und gehört zur APL-Familie — verwandte Einträge: K-Befehle und J-Befehle.