Ich überlege Apache Drill als Abfrage-Engine für das vorhandene System zu verwenden. Einige Spalten der Tabelle stellen mehrere Werte dar, die als Int codiert sind, wodurch z. SELECT COUNT(*) FROM options WHERE opt_a & 2 > 0
. Es scheint, als hätte Drill keine bitweisen Operatoren implementiert. Irgendwelche Worte über diese Funktion, die in naher Zukunft hinzugefügt werden sollen, oder irgendwelche Ideen, wie Sie Drill auf einfache Weise erweitern können, um dies zu unterstützen?Bitwise-Operator in Apache Drill
Antwort
Es sieht so aus, als sollten diese Funktionen verfügbar sein, sie sind nur nicht mit der Java/C-Syntax versehen. Vorausgesetzt, dies würde wahrscheinlich den Parser modifizieren, obwohl ich nicht sicher bin, ob dies der SQL-Spezifikation entsprechen würde.
https://issues.apache.org/jira/browse/DRILL-923
Wenn etwas, das Sie brauchen, fehlen, Funktionen im Drill-Entwicklung ist ziemlich einfach. Die UDF-Schnittstelle weist einige Besonderheiten auf. Hier ist eine Liste mit einigen Dos und Don'ts aus der Dokumentation:
Um Javas Just-In-Time (JIT) -Compiler für maximale Geschwindigkeit zu nutzen, müssen Sie einige Grundregeln einhalten.
- Verwenden Sie keine Importe. Verwenden Sie stattdessen den vollständig qualifizierten Klassennamen, wie von der in Apache Drill gepackten Google Guava-API gefordert und wie in "Schritt 3: Eingangsparameter deklarieren" gezeigt.
- Bearbeiten Sie die ValueHolders-Klassen, z. B. VarCharHolder und IntHolder, als Strukturen, indem Sie Hilfsmethoden wie getStringFromVarCharHolder und toStringFromUTF8 aufrufen, wie in "Schritt 5: Implementieren der Funktion eval()" gezeigt.
Rufen Sie keine Methoden wie toString auf, da dies zu schwerwiegenden Problemen führt.
Verwenden Sie das maven-source-plugin, um die Quellen- und Klassen-JAR-Dateien zu kompilieren.
Hier ist eine Seite von der Dokumentation, die eine einfache Funktion Schreiben Abdeckungen: https://drill.apache.org/docs/develop-custom-functions-introduction/
Wenn Sie Fragen haben, fühlen sich frei, um die Entwickler oder Anwender-Mailinglisten zu schlagen auf. Die Leute reagieren dort im Allgemeinen besser als auf Stackoverflow.
Danke. Wäre es so einfach wie das Erstellen einer einfachen Funktion (folgende Dokumentation), die wahr/falsch zurückgibt und in der WHERE-Klausel verwendet wird? –