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 erzeugen
  • count x — Länge eines Vektors
  • flip t — Tabelle/Matrix transponieren
  • group x — Werte nach Schlüssel gruppieren
  • distinct x — doppelte Elemente entfernen
  • asc/desc — auf-/absteigend sortieren
  • first/last — erstes/letztes Element
  • sum, 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.