Herstellen einer Verbindung mit räumlichen Daten in einer Datenbank

Sie können in Ihrer Datenbank gespeicherte räumliche Spalten verwenden, um Kartenvisualisierungen in Tableau zu erstellen.

Tableau unterstützt direkte Verbindungen zu räumlichen Daten in Microsoft SQL Server, PostgreSQL + PostGIS und Pivotal Greenplum. Informationen zur Verwendung dieser Connectors finden Sie in den Beispielen für Microsoft SQL Server, PostgreSQLoder Pivotal Greenplum Database Connector.

In diesem Beispiel wird anhand von Beispielen die entsprechende Vorgehensweise demonstriert:

Unterstützte räumliche Daten und SRIDs

Für Microsoft SQL Server werden nur räumliche Daten des Typs Geografie unterstützt.

PostgreSQL und Pivotal Greenplum unterstützen Felder der Typen Gepgraphy und Geometry. Geometrie-Felder müssen den Geotyp (z. B. POINT, LINESTRING) und die SRID angeben, um als räumliche Felder erkannt zu werden. Geographie-Felder müssen den Geotyp angeben, um erkannt zu werden.

Hinweis: In PostgreSQL können Sie eine Verbindung mit Tabellen mit gemischten Geometrietypen (Punkte, Linien und Polygonen) herstellen, aber Tableau rendert diese nicht gleichzeitig.

Die folgenden SRIDs werden von diesen Connectors unterstützt:

  • NAD83 (EPSG:4269)

  • ETRS89 (EPSG:4258)

  • WGS84 (EPSG:4326)

In PostgreSQL ist die SRID immer WGS84 (EPSG:4326).

Tableau unterstützt sowohl Live- als auch Extract-Verbindungen mit diesen Connectors.

Herstellen der Verbindung zu räumlichen Spalten

  1. Öffnen Sie Tableau und stellen Sie eine Verbindung zu Ihren Daten her. Weitere Informationen zum Herstellen einer Verbindung mit Daten über unterstützte Konnektoren finden Sie in den Beispielen für Microsoft SQL Server, PostgreSQLoder Pivotal Greenplum Database Connector.
  2. Ziehen Sie auf der Seite "Datenquelle" im linken Bereich unter "Tabelle" eine Tabelle mit räumlichen Daten in den Arbeitsbereich.

    In räumlichen Spalten wird derselbe Name wie in Ihrer Datenbank angezeigt.

    Sie können nun mithilfe von räumlichen Daten eine Karte in Tableau erstellen. Weitere Informationen zum Erstellen von Karten aus räumlichen Dateien finden Sie unter Erstellen einer Kartenansicht anhand räumlicher Daten.

Verwenden von benutzerdefiniertem SQL-Code und RAWSQL zum Ausführen der erweiterten räumlichen Analyse

Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage

  1. Öffnen Sie Tableau und stellen Sie eine Verbindung zu Ihrer Datenbank her. Informationen zum Herstellen einer Verbindung mit Daten finden Sie in den Beispielen für Microsoft SQL Server, PostgreSQLoder Pivotal Greenplum Database Connector.
  2. Ziehen Sie auf der Seite "Datenquelle" im linken Bereich den Eintrag Neue benutzerdefinierte SQL in den Arbeitsbereich.

  3. Geben oder fügen Sie Ihre Abfrage in das daraufhin angezeigte Dialogfeld "Benutzerdefinierte SQL bearbeiten" ein. Beispiele für benutzerdefinierte SQL, die Sie für räumliche Daten verwenden können, finden Sie unter Beispiele für benutzerdefinierte SQL-Abfragen.

  4. Klicken Sie auf OK, wenn Sie fertig sind.

Weitere Informationen finden Sie unter Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage.

Beispiele für benutzerdefinierte SQL-Abfragen

Bei den folgenden Abfragen handelt es sich um Beispiele. Beachten Sie, dass benutzerdefinierte SQL-Abfragen von Datenquelle zu Datenquelle variieren.

Wenn Ihre Daten zwei Sätze mit Punkten beinhalten, z. B. Schulen und Parks, und Sie anzeigen möchten, wo sie sich kreuzen:

SELECT S.[common nam] as SchoolName, P.[common nam] as ParkName, S.geom.STBuffer(<Parameters.Radius>) as school_geom, P.geom as park_geom FROM TestSpatial.dbo.seattleelementaryschools S LEFT JOIN TestSpatial.dbo.allseattleparks P on S.geom.STBuffer(<Parameters.Radius>).STIntersects(P.geom) = 1

In dieser Beispielabfrage wird eine Zeile für jeden Fall erzeugt, in dem sich ein Park innerhalb des Radius (Meter) von einer Schule befindet. Das Abfrageergebnis sieht im Datenraster folgendermaßen aus:

Hinweis: dieses Beispiel referenziert einen Parameter mit der Bezeichnung "Radius". Dabei wird die Entfernung (in Metern) gemessen, und es liegen die folgenden Einstellungen vor:

  • Datentyp: Float
  • Aktueller Wert: 600
  • Zulässige Werte: Bereich
  • Minimum: 100
  • Maximum: 2.000
  • Schrittgröße: 50

Weitere Informationen finden Sie unter Verwenden von Parametern in einer benutzerdefinierten SQL-Abfrage.

Wenn Daten nur um einen bestimmten Punkt herum erwünscht sind

SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C WHERE C.geom.STIntersects(geography::STGeomFromText('POINT(-122.344706 47.650388)', 4326).STBuffer(1000))=1

In diesem Beispiel werden die Daten auf 1000 Meter um den POINT-Wert herum beschränkt. Der Radius kann ein Parameter sein, wie der im ersten Beispiel verwendete Parameter.

Anstelle eines Punkts und Radius kann jedoch auch ein Rechteck verwendet werden. Beispiel:

SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C
WHERE C.geom.STIntersects(geography::STGeomFromText('POLYGON ((-122.3625 47.6642,-122.3625 47.6493,-122.3427 47.6493,-122.3422 47.6642,-122.3625 47.6642))', 4326))=1

Hinweis: Die Windungsrichtung der Polygonpunkte (im Uhrzeigersinn oder entgegen dem Uhrzeigersinn) bestimmt, welche Punkte zurückgegeben werden. Sie können die Windungsrichtung mit der SQL Server-Funktion ReorientObject() umkehren.

Im Fall eines Fehlers wegen gemischter Datentypen

SELECT *, F.geom.STGeometryType() as geomtype FROM [Test_spatial_<username>].[dbo].[us_historic_fire_perimeters_dd83] F
WHERE F.geom.STGeometryType() = 'MultiPolygon' OR F.geom.STGeometryType() = 'Polygon'

In diesem Beispiel werden die räumlichen Daten vom Typ Geometrie herausgefiltert, da Tableau räumliche Geometriedaten bei Microsoft SQL Server-Verbindungen nicht darstellen kann. Sie können auch andere räumliche Datentypen auswählen.

Wenn Ihre Daten in Tableau zu langsam dargestellt werden

SELECT [Id], [OBJECTID], [fire_num], [year_], [acres], [fire_name], [unit_id], [Shape_Leng], [Shape_Area], [geom].Reduce(500) as SimpleGeom
FROM [Test_spatial_<username>].[dbo].[us_historic_fire_perimeters_dd83]
WHERE [geom].Reduce(500).STGeometryType() = 'MultiPolygon' OR [geom].Reduce(500).STGeometryType() = 'Polygon'

Durch diese Beispielabfrage kann sich die Datengröße erheblich reduzieren. (Einige Objekte werden auf Punkte reduziert, und diese werden verworfen.)

Verwenden von RAWSQL

Um RAWSQL mit räumlichen Daten zu verwenden, können Sie ein berechnetes Feld mithilfe der Funktionen RAWSQL_SPATIAL oder RAWSQLAGG_SPATIAL erstellen. Beispiel:

RAWSQL_SPATIAL("Select %1.STIntersection(%2.STBuffer(200))",[school_geom], [park_geom])

Diese Formel gibt basierend auf der Kreuzung der beiden Werte eindeutige räumliche Daten zurück. Weitere Informationen zum Verwenden von RAWSQL für räumliche Daten finden Sie unter Pass-Through-Funktionen (RAWSQL). Weitere Informationen zum Erstellen berechneter Felder finden Sie unter Erstellen eines berechneten Felds.

Hinweis: beim Verwenden von RAWSQL spezifisch für PostGIS-Funktionen können Fehler auftreten, wenn PostgreSQL verwendet wird.

Fehlerbehebung für räumliche Verknüpfungen

Leistungsprobleme

Beim Arbeiten mit verknüpften räumlichen Spalten mit einer großen Anzahl Datensätze in Microsoft SQL Server können doppelte Markierungen auftreten. Dies kann zu einer verringerten Geschwindigkeit führen.

Extrahieren Sie die verknüpfte Datenquelle, um die Leistung zu verbessern. Weitere Informationen finden Sie unter Extrahieren von Daten.

Microsoft SQL Server Fehlermeldungen und Lösungen

Wenn die räumliche Tabelle eine nicht unterstützte räumliche Referenz verwendet

Fehlermeldung:

Beim Kommunizieren mit der Microsoft SQL Server-Datenquelle '<Name der Datenquelle>' ist ein Fehler aufgetreten.
Fehlerhafte Verbindung: Tableau konnte keine Verbindung zur Datenquelle herstellen.
[Microsoft][ODBC-Treiber 13 für SQL Server][SQL Server] Operandentypkollision: Geometrie ist nicht mit Geografie kompatibel
[Microsoft][ODBC-Treiber 13 für SQL Server][SQL Server] Anweisungen konnten nicht vorbereitet werden.

Lösung:

  • Exportieren Sie die räumlichen Daten aus Microsoft SQL Server in eine Shapefile, und stellen Sie in Tableau eine Verbindung zu der Datei her. Verbindungen zu räumlichen Dateien durchlaufen einen Datenumwandlungsprozess, der mehrere tausend Prognosen unterstützt.

  • Exportieren Sie die Daten aus Microsoft SQL Server, und wandeln Sie die Daten mit einem GIS-Tool wie QGIS oder ArcGIS um. Laden Sie dann die Tabelle wieder zurück nach Microsoft SQL Server. ​​

Wenn die räumliche Tabelle mehrere räumliche Objekttypen enthält

Fehlermeldung:

Aktion konnte nicht abgeschlossen werden.
Der räumliche Vorgang hat zu einem MixedGeometry- oder MixedGeography-Objekt geführt, das von Tableau noch nicht unterstützt wird.
Der räumliche Vorgang hat zu einem MixedGeometry- oder MixedGeography-Objekt geführt, das von Tableau noch nicht unterstützt wird.

Lösung:

Filtern Sie die Daten mithilfe von benutzerdefinierter SQL. Weitere Informationen finden Sie im Beispiel für benutzerdefinierte SQL unter Im Fall eines Fehlers wegen gemischter Datentypen.

Wenn Kennzahlen in der Visualisierung aggregiert werden

Fehlermeldung:

Beim Kommunizieren mit der Microsoft SQL Server-Datenquelle '<Name der Datenquelle>' ist ein Fehler aufgetreten.
Fehlerhafte Verbindung: Tableau konnte keine Verbindung zur Datenquelle herstellen.
Es kann keine Aggregatfunktion für einen Ausdruck ausgeführt werden, die ein Aggregat oder eine Teilabfrage enthält.

Lösung:

Disaggregieren Sie die Kennzahlen in der Visualisierung: Wählen Sie Analyse aus, und deaktivieren Sie dann das Kontrollkästchen Kennzahlen aggregieren.

PostgreSQL und Pivotal Greenplum Fehlermeldungen und Lösungen

Bei Verwendung von gemischten SRIDs, wenn einer der SRIDs nicht unterstützt wird

Fehlermeldung:

Beim Kommunizieren mit der PostgreSQL Server-Datenquelle '<Name der Datenquelle>' ist ein Fehler aufgetreten.
Fehlerhafte Verbindung: Tableau konnte keine Verbindung zur Datenquelle herstellen.
Fehler: Operation an gemischten SRID-Geometrien;
Fehler beim Ausführen der Abfrage
<Abfrage> aus <Datenquelle>
FEHLER: Operation an gemischten SRID-Geometrien;
Fehler beim Ausführen der Abfrage
SELECT ST_ForceCollection(ST_Collect("mixed_SRID_geography"."location"::geometry)) AS "clct:location:nk
FROM "public"."mixed_SRID_geography" "mixed_SRID_geographyHAVING (COUNT(1) > 0)

Lösung:

Disaggregieren Sie die Kennzahlen in der Visualisierung: Wählen Sie Analyse aus, und deaktivieren Sie dann das Kontrollkästchen Kennzahlen aggregieren. Dadurch werden die Fehlermeldung und die Daten, bei denen die SRID nicht unterstützt wird, eliminiert.

Wenn die räumliche Tabelle eine nicht unterstützte räumliche Referenz verwendet

In PostgreSQL können Sie eine Verbindung mit einer Tabelle mit nicht unterstützten SRIDs herstellen, doch die Spalte Geometry wird als "Unbekannt" angezeigt.

Lösung:

  • Exportieren Sie die räumlichen Daten aus PostgreSQL in eine Shape-Datei und stellen Sie in Tableau eine Verbindung zu der Datei her. Verbindungen zu räumlichen Dateien durchlaufen einen Datenumwandlungsprozess, der mehrere tausend Prognosen unterstützt.

  • Exportieren Sie die Daten aus PostgreSQL Server, und wandeln Sie die Daten mit einem GIS-Tool wie QGIS oder ArcGIS um. Laden Sie dann die Tabelle wieder zurück nach PostgreSQL. ​​

Wenn ein Abfrageergebnis die Grenze von 1 GB überschreitet

Fehlermeldung:

FEHLER: size überschreitet den zulässigen Höchstwert (1073741823); Fehler beim Ausführen der Abfrage.
SELECT ST_Collect(geom) FROM <data source>

Lösung:

Schreiben Sie die Berechnung neu, um effizienter zu sein. Siehe Best Practices für die Erstellung von Berechnungen in Tableau oder Erstellen effizienter Berechnungen.

 

Beispiel – Erstellen einer Karte aus räumlichen Daten aus Microsoft SQL Server

Im folgenden Beispiel wird das Erstellen der unten gezeigten Karte demonstriert. Sie enthält Schulen im Umkreis von 600 Metern von Parks in Seattle, Washington.

In diesem Beispiel wird eine Microsoft SQL Server-Verbindung zu einer Datenbank mit der Bezeichnung TestSpatial verwendet. Die folgenden Tabellen aus dieser Datenbank werden verwendet:

  • seattleelementaryschools
  • allseattleparks

Schritt 1: Verbinden

  1. Öffnen Sie Tableau Desktop, und stellen Sie eine Verbindung mit Microsoft SQL Server her.

  2. Ziehen Sie auf der Seite "Datenquelle" im linken Bereich den Eintrag Neue benutzerdefinierte SQL in den Arbeitsbereich.

  3. Geben oder fügen Sie eine Abfrage in das daraufhin angezeigte Dialogfeld "Benutzerdefinierte SQL bearbeiten" ein.

    Für dieses Beispiel wird die folgende Abfrage verwendet:

    SELECT S.[common nam] as SchoolName, P.[common nam] as ParkName, S.geom.STBuffer(<Parameters.Radius>) as school_geom, P.geom as park_geom FROM TestSpatial.dbo.seattleelementaryschools S LEFT JOIN TestSpatial.dbo.allseattleparks P on S.geom.STBuffer(<Parameters.Radius>).STIntersects(P.geom) = 1

    Hinweis: dieses Beispiel referenziert einen Parameter mit der Bezeichnung "Radius". Weitere Informationen finden Sie unter Verwenden von Parametern in einer benutzerdefinierten SQL-Abfrage.

    Das Ergebnis dieser Abfrage sieht wie folgt aus:

Schritt 2: Erstellen der Karte

  1. Wechseln Sie zu einem neuen Arbeitsblatt.

  2. Doppelklicken Sie im Bereich Daten auf ein räumliches Feld.

    In diesem Beispiel wird school_geom verwendet. Wenn Sie auf das Feld doppelklicken, wird es automatisch den "Details" auf der Karte "Markierungen" hinzugefügt, und eine Kartenansicht wir erstellt.

  3. Ziehen Sie im Bereich Daten eine Dimension zu Beschriftung auf der Karte "Markierungen". In diesem Beispiel wird School Name verwendet.

  4. Klicken Sie im Container "Zeilen" bei gedrückter Strg-Taste (Befehlstaste auf einem Mac) auf das Feld Breitengrad (generiert), und ziehen Sie es nach rechts. Dadurch wird das Feld kopiert.

    Unter der ersten Karte wird eine duplizierte Karte angezeigt, und die Karte "Markierungen" wird mit zwei Registerkarten "Breitengrad (generiert)" aktualisiert. Die obere Registerkarte ist für die obere Karte vorgesehen, und die untere Registerkarte wird für die untere Karte verwendet.

  5. Klicken Sie auf der Karte "Markierungen" auf die untere Registerkarte Breitengrad (generiert), und entfernen Sie die Felder, indem Sie sie zurück in den Bereich "Daten" ziehen.

    Die untere Karte wird aktualisiert und in eine leere Karte umgewandelt.

  6. Wählen Sie Analyse > Berechnetes Feld erstellen aus.

  7. Gehen Sie in dem anschließend geöffneten Berechnungs-Editor wie folgt vor:

    • Benennen Sie das berechnete Feld. In diesem Beispiel wird das berechnete Feld mit "Intersection" benannt.

    • Geben Sie eine RAWSQL-Formel ein. In diesem Beispiel wird die folgende Formel verwendet:

      RAWSQL_SPATIAL("Select %1.STIntersection(%2.STBuffer(200))",[school_geom], [park_geom])

      Diese Formel gibt basierend auf der Kreuzung der beiden Werte eindeutige räumliche Daten zurück.

    • Klicken Sie auf OK, wenn Sie fertig sind.

  8. Wählen Sie Analyse aus, und deaktivieren Sie dann Kennzahlen aggregieren.

  9. Ziehen Sie im Bereich "Daten" das neue berechnete Feld (in diesem Fall Intersection) zu den Details auf der Karte "Markierungen".

    Die untere Karte wird mit den neuen Markierungen aktualisiert. Beachten Sie, dass es sich bei den Markierungen aufgrund der RAWSQL-Formel um eindeutige räumliche Formen handelt.

  10. Ziehen Sie im Bereich Daten eine Dimension zu den Details auf der Karte "Markierungen". Dadurch werden die Markierungen disaggregiert.

    In diesem Beispiel wird die Dimension "ParkName" verwendet.

  11. Ziehen Sie im Bereich Daten dieselbe Dimension zur Farbe auf der Karte "Markierungen".

    In diesem Beispiel wird nun jedem Park eine Farbe zugewiesen.

  12. Klicken Sie im Container "Zeilen" mit der rechten Maustaste auf das Feld Breitengrad (generiert) auf der rechten Seite, und wählen Sie Doppelachse aus.

    Die Karten werden nun kombiniert, und die Daten werden geschichtet. Weitere Informationen finden Sie unter Erstellen von zweiachsigen (geschichteten) Karten in Tableau.

  13. Formatieren Sie die Karte. Weitere Informationen finden Sie unter Anpassen der Darstellung der Karte.

    In diesem Beispiel wird die folgende Formatierung angewendet:

    • Die School Name-Markierungen sind grau.

    • Die Beschriftungen der School Name-Markierungen sind orange.

    • Der Hintergrundstil der Karte ist auf dunkel festgelegt.

    • Die Ebene "Streets and Highways" wird auf der Karte im Hintergrund angezeigt.

    Somit ist die Karte nun fertig.

Siehe auch

Erstellen von Tableau-Karten aus räumlichen Dateien

Microsoft SQL Server

Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage

Pass-Through-Funktionen (RAWSQL)

Erste Schritte zu Berechnungen in Tableau

Danke für Ihr Feedback. Bei der Übermittlung Ihres Feedbacks ist ein Fehler aufgetreten.