Sean Devlin (von Voll Disclojure Ruhm) Tisch-utils hat die folgenden Modelle verbinden:
- inner-join
- links-außen-verbinden
- rechts-außen-verbinden
- full-outer-join
- natürlich-verbinden
- cross-join
Es wurde seit einiger Zeit nicht mehr aktualisiert, funktioniert aber in 1.3, 1.4 und 1.5. Um es ohne externe Abhängigkeiten funktionieren zu lassen:
- ersetzt
fn-tuple
durchjuxt
- ersetzt die gesamte
(:use )
-Klausel in der ns-Deklaration durch(require [clojure.set :refer [intersection union]])
- fügen Sie die Funktion map-vals von unten hinzu:
entweder
%Vor%oder für Clojure 1.5 und höher
%Vor%Nutzung der Bibliothek ist Join-Typ, zwei Sammlungen (zwei Sätze von Karten wie dem obigen Beispiel oder zwei SQL-Resultsets) und mindestens eine fn verbinden. Da Schlüsselwörter Funktionen auf Karten sind, genügen normalerweise nur die Join-Schlüssel:
%Vor%Wenn ich mich recht erinnere, hat Sean schon vor einiger Zeit versucht, Table-Utils in contrib zu bekommen, aber das hat nie geklappt. Schade, dass es nie ein eigenes Projekt (auf Github / Clojars) bekommen hat. Ab und zu wie dies eine Frage für eine Bibliothek erscheint auf Stackoverflow oder Clojure Google-Gruppe.
Eine weitere Option könnte die Verwendung der Datalog-Bibliothek von Datomic zur Abfrage von Clojure-Datenstrukturen sein. Stuart Halloway hat einige Beispiele in seine Hauptgründe.