Benutzerdefinierte SQL
Dies ist eine erweiterte Funktion, die für Benutzer mit SQL-Kenntnissen gedacht ist. Falsche Abfragen können dazu führen, dass Workflows fehlschlagen oder unerwartete Ergebnisse liefern. Wenn Sie Hilfe beim Schreiben von SQL-Abfragen benötigen, können Sie KI-Assistenten verwenden, um Code zu generieren und zu erklären.
Das Benutzerdefinierte SQL-Werkzeug ermöglicht es Ihnen, benutzerdefinierte SQL-Abfragen für Datenanalysen direkt innerhalb Ihrer Workflows zu schreiben. Diese mächtige Funktion ermöglicht erweiterte Datenverarbeitung, die über GOATs eingebaute Werkzeuge hinausgeht.
Übersicht
Das Benutzerdefinierte SQL-Werkzeug verbindet sich mit GOATs DuckDB Backend und gibt Ihnen direkten Zugriff auf die Abfrage Ihrer Datensätze mit SQL-Syntax. Sie können:
- Komplexe analytische Abfragen ausführen
- Mehrere Datensätze verknüpfen
- Aggregationen und statistische Berechnungen durchführen
- Abgeleitete Datensätze mit benutzerdefinierter Logik erstellen
- Auf erweiterte räumliche Funktionen zugreifen
Verwendung der benutzerdefinierten SQL
Hinzufügen des Werkzeugs
Schreiben von SQL-Abfragen
Im Konfigurations-Panel finden Sie einen SQL-Editor, in dem Sie Ihre benutzerdefinierte Abfrage schreiben können:
SELECT
h.*,
p.population_density,
ST_Distance(h.geom, p.geom) AS distance_to_center
FROM input_1 h
JOIN input_2 p ON ST_Intersects(h.geom, p.geom)
WHERE p.population_density > 1000
ORDER BY distance_to_center
Eingabe-Referenzen
- input_1, input_2, input_3...: Referenzieren Sie Ihre verbundenen Datensätze mit diesen Tabellennamen
- Die Nummer entspricht der Verbindungsreihenfolge am Knoten
- Sie können bis zu 3 Eingabedatensätze pro Benutzerdefinierte SQL-Knoten verbinden
Verfügbare Funktionen
Das Benutzerdefinierte SQL-Werkzeug unterstützt Standard-SQL-Funktionen plus räumliche Operationen:
Räumliche Funktionen:
ST_Distance()- Berechnet Entfernungen zwischen GeometrienST_Intersects()- Prüft, ob sich Geometrien überschneidenST_Within()- Testet, ob eine Geometrie innerhalb einer anderen liegtST_Buffer()- Erstellt Puffer um GeometrienST_Area()- Berechnet GeometrieflächeST_Length()- Berechnet Linienlänge
Analytische Funktionen:
AVG(),SUM(),COUNT()- Statistische AggregationenPERCENTILE_CONT()- Berechnet PerzentileROW_NUMBER(),RANK()- FensterfunktionenCASE WHEN- Bedingte Logik
Abfrage-Validierung
Validieren, um zu prüfen, ob Ihre Abfrage erfolgreich ausgeführt wird.Beispiele
Grundlegende Filterung und Auswahl
-- Gebäude innerhalb eines bestimmten Gebiets auswählen
SELECT building_type, height, geom
FROM input_1
WHERE building_type = 'residential'
AND height > 10
Räumliche Join-Analyse
-- Alle Annehmlichkeiten innerhalb von 500m von Haltestellen finden
SELECT
a.name as amenity_name,
a.amenity_type,
t.stop_name,
ST_Distance(a.geom, t.geom) as distance
FROM input_1 a
JOIN input_2 t ON ST_DWithin(a.geom, t.geom, 500)
ORDER BY distance
Aggregation nach Gebiet
-- Punkte nach Verwaltungsgebiet zählen
SELECT
admin.district_name,
COUNT(points.*) as point_count,
admin.geom
FROM input_1 points
RIGHT JOIN input_2 admin
ON ST_Within(points.geom, admin.geom)
GROUP BY admin.district_name, admin.geom
Bewährte Praktiken
- Verwenden Sie räumliche Indizes, indem Sie geometrische Prädikate in WHERE-Klauseln einschließen
- Begrenzen Sie Ergebnisse während der Entwicklung mit
LIMIT 100 - Testen Sie zuerst mit kleinen Datensätzen, dann skalieren Sie auf
- Stellen Sie sicher, dass Geometriespalten ordnungsgemäß für räumliche Operationen formatiert sind
- Wandeln Sie Datentypen explizit um, wenn Sie verschiedene Datensätze verknüpfen
- Prüfen Sie auf NULL-Werte in kritischen Spalten
Abfrage-Optimierung
Verwenden Sie räumliche Prädikate: Schließen Sie immer räumliche Filter wie ST_DWithin() ein, wenn möglich, um räumliche Indizes zu nutzen.
Spaltenauswahl: Wählen Sie nur die Spalten aus, die Sie benötigen, anstatt SELECT * zu verwenden.
Ordnungsgemäße Joins: Verwenden Sie geeignete Join-Typen (INNER, LEFT, RIGHT) basierend auf Ihren Analyseanforderungen.
Fehlerbehandlung
Häufige Probleme und Lösungen:
- "Tabelle nicht gefunden": Stellen Sie sicher, dass Eingabedatensätze ordnungsgemäß verbunden sind
- "Spalte existiert nicht": Überprüfen Sie Spaltennamen in Ihren Eingabedatensätzen
- "Geometriefehler": Überprüfen Sie, ob Geometriespalten gültig und ordnungsgemäß formatiert sind
- "Timeout": Teilen Sie komplexe Abfragen in kleinere Schritte auf oder erhöhen Sie das Timeout
Ausgabe und Integration
Das Benutzerdefinierte SQL-Werkzeug erstellt eine neue temporäre Ebene, die Ihre Abfrageergebnisse enthält. Sie können:
- Die Ausgabe mit anderen Workflow-Werkzeugen für weitere Analysen verbinden
- Einen Export-Knoten hinzufügen, um Ergebnisse als permanenten Datensatz zu speichern
- Die Ergebnisse in Visualisierungen und Styling verwenden
Benutzerdefinierte SQL-Abfragen unterstützen Workflow-Variablen mit der Syntax {{@variable_name}} für parametrisierte Abfragen.
Einschränkungen
- Maximal 3 Eingabedatensätze pro Benutzerdefinierte SQL-Knoten
- Abfragen müssen mindestens eine Geometriespalte für die Kartierung zurückgeben
- Einige erweiterte DuckDB-Funktionen sind möglicherweise nicht verfügbar
- Die Abfrageausführungszeit ist durch das konfigurierte Timeout begrenzt
Für komplexere Analyseanforderungen erwägen Sie die Verwendung mehrerer Benutzerdefinierte SQL-Knoten oder die Kombination mit anderen Workflow-Werkzeugen.