Ich lerne KDB + und Q-Programmierung und lesen Sie über die folgende Anweisung - "wählen führt Vektoroperationen auf Spaltenlisten". Was bedeutet Vector Operation bedeuten hier? Könnte jemand bitte mit einem Beispiel erklären? Wie ist es schneller als Standard-SQL?KDB/Q: Was ist Vektorbetrieb?
Antwort
Eine Vektoroperation ist eine Operation, die einen oder mehrere Vektoren verwendet und einen anderen Vektor erzeugt. Zum Beispiel +
in q ist eine Vektoroperation:
q)a:1 2 3
q)b:10 20 30
q)a + b
11 22 33
Wenn a
und b
Spalten in einer Tabelle sind, können Sie Vektor-Operationen auf sie in einer select
Anweisung auszuführen. mit dem vorherigen Beispiel fortzufahren, lassen Sie uns a
und b
Vektoren in einer Tabelle als Spalten setzen:
q)([]a;b)
a b
----
1 10
2 20
3 30
Jetzt
q)select c:a + b from ([]a;b)
c
--
11
22
33
Die select-Anweisung ausgeführt, um die gleiche a+b
Vektoraddition, sondern nahm Eingang und kehrte Ausgang als Tabellenspalten.
Wie ist es schneller als Standard-SQL?
"Standard" SQL-Implementierungen speichern Daten normalerweise Zeile für Zeile. In einer Tabelle mit vielen Spalten kann das erste Element einer Spalte und das zweite Element im Speicher durch Daten aus anderen Spalten getrennt werden. Moderne Computer arbeiten am effizientesten, wenn die Daten zusammenhängend gespeichert werden. In kdb + wird dies erreicht, indem Tabellen spaltenweise gespeichert werden.
Eine vector ist eine Liste von Atomen des gleichen Typs. Einige Beispiele:
2 3 4 5 /int
"A fine, clear day" /char
`ibm`goog`aapl`ibm`msft /symbol
2017.01 2017.02 2017.03m/month
Kdb + speichert und behandelt Vektoren sehr effizient. Q operators - nicht nur +-*%
, sondern z.B. mcount
, ratios
, prds
- sind für Vektoren optimiert.
Diese Operatoren können noch effizienter sein, wenn Vektoren attributes haben, wie u
(keine wiederholten Elemente) und s
(Elemente sind in aufsteigender Reihenfolge).
Wenn Tabellenspalten Vektoren sind, sind dieselben Effizienzen verfügbar. Diese Effizienzen sind für Standard-SQL nicht verfügbar, bei dem Tabellen als ungeordnete Reihen von Zeilen angezeigt werden.
Als spaltenorientiert kann kdb + splay große Tabellen, jede Spalte als separate Datei speichern, die Datei-E/A bei der Auswahl aus großen Tabellen reduziert.
Der Satz bedeutet, wenn Sie auf eine bestimmte Spalte einer Tabelle mit einer Spaltenbeschriftung verweisen, wird sie in die gesamte Spaltenliste und nicht in jedes Element davon aufgelöst, und alle Operationen darauf sind als Listenoperationen zu verstehen.
q)show t: flip `a`b!(til 3;10*til 3)
a b
----
0 0
1 10
2 20
q)select x: count a, y: type b from t
x y
---
3 7
q)type t[`b]
7h
q)type first t[`b]
-7h
count a
in dem obigen q-sql entspricht count t[`a]
die count 0 1 2
= 3 ist.Das gleiche gilt für type b
; der positive Rückgabewert 7 bedeutet b
ist eine Liste und nicht ein Atom: http://code.kx.com/q/ref/datatypes/#primitive-datatypes
- 1. Was ist JAF? Was ist seine Aufgabe?
- 2. Was ist ../ .., ../
- 3. Was ist
- 4. Was ist HTML "ist" Attribut?
- 5. Was ist 'das' ist Javascript
- 6. Was ist und was ist die Verwendung der Closure „Richtlinie“
- 7. Was ist ein Vermögenswert und was ist ein Bündel?
- 8. Was ist für Python was "explodieren" ist für PHP?
- 9. Was ist lexikographischer Auftrag und was ist das Beispiel dafür?
- 10. (iOS) Was ist Superview und was ist Subviews
- 11. Was ist xcscheme Datei? Was ist das Ziel?
- 12. Was ist ein DTO und BO? Was ist der Unterschied?
- 13. Javascript: Was ist eine Funktionseigenschaft und was ist ihre Bedeutung?
- 14. Was ist Blend? und was ist seine Beziehung zu WPF?
- 15. Google AMP: Was ist ein Layout? Was ist ein Behälter?
- 16. Was ist ein PHP-Framework und was ist ein guter?
- 17. Was ist Zeilen-Slicing vs Was ist Spalten-Slicing?
- 18. Was ist Mongoclient und was ist der Zweck?
- 19. Was ist eine native Bibliothek? Was ist bindend?
- 20. Was ist das? Template-Methode oder was?
- 21. Was ist Thread.CurrentPrincipal und was macht es?
- 22. Breite Gerätebreite Was ist was? Verwirrt
- 23. Was ist ((Fenster) => {...}) (Fenster); was bedeutet,
- 24. Was ist die Methode in Java? Was
- 25. Was sind Threads (Was ist ein Thread)?
- 26. Was ist JSR und was nutzt es?
- 27. Was ist Boxen und was macht es?
- 28. Was ist S_ISREG() und was macht es?
- 29. Was ist POI und was bedeutet es?
- 30. Was genau ist ViewDidLayoutSubviews?
Danke für die detaillierte Erklärung Alexander. – userknight