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. Sie können eine Verbindung zu unterstützten räumlichen Datenquellen herstellen und mit ihnen Visualisierungen erstellen, um räumliche Daten zu analysieren, oder Sie können eine Verbindung zu benutzerdefinierten SQL- oder RAWSQL-Abfragen herstellen, um erweiterte räumliche Analysen durchzuführen.
Tableau unterstützt über diese Konnektoren direkte Verbindungen zu räumlichen Daten:
- Amazon Redshift
- Microsoft SQL Server
- PostgreSQL + PostGIS
- Pivotal Greenplum + PostGIS
- Oracle
- Snowflake
Informationen zur Verwendung dieser Connectoren finden Sie in den Connector-Beispielen Microsoft SQL Server, PostgreSQL, Pivotal Greenplum Database, Oracle oder Snowflake.
Unterstützte räumliche Daten und SRIDs
Für Microsoft SQL Server werden nur räumliche Daten des Typs Geografie unterstützt.
PostgreSQL + PostGIS, Oracle und Pivotal Greenplum + PostGIS unterstützen Felder vom Typ "Geografie" und "Geometrie". 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 + PostGIS können Sie eine Verbindung zu Tabellen mit beiden gemischten Geometrietypen (Punkte, Linien und Polygone) herstellen, aber Tableau wird diese nicht gleichzeitig rendern.
Die folgenden SRIDs werden von diesen Connectors unterstützt:
NAD83 (EPSG:4269)
ETRS89 (EPSG:4258)
WGS84 (EPSG:4326)
In PostgreSQL + PostGIS ist SRID immer auf WGS84 (EPSG: 4326) voreingestellt.
Tableau unterstützt sowohl Live- als auch Extract-Verbindungen mit diesen Connectors.
Herstellen der Verbindung zu räumlichen Spalten
- Öffnen Sie Tableau und stellen Sie eine Verbindung zu Ihren Daten her.
Weitere Informationen über das Herstellen einer Verbindung zu Daten mithilfe unterstützter Connectoren finden Sie in den Connector-Beispielen für Microsoft SQL Server, PostgreSQL, Oracle, Pivotal Greenplum Database oder Snowflake. Ziehen Sie auf der Seite "Datenquelle" im linken Bereich unter "Tabelle" eine Tabelle mit räumlichen Daten in den Arbeitsbereich.
Räumliche Spalten werden mit demselben Namen angezeigt, den sie in Ihrer Datenbank haben.
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
- Öffnen Sie Tableau und stellen Sie eine Verbindung zu Ihrer Datenbank her.
Ziehen Sie auf der Seite "Datenquelle" im linken Bereich den Eintrag Neue benutzerdefinierte SQL in den Arbeitsbereich.
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.
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.[name] as SchoolName, P.[name] as PubSpaceName, S.geog_schools.STBuffer(<Parameters.Radius>) as Geog_School, P.geog_pub_space as Geog_Pub_Space FROM TestSpatial.dbo.seattle_public_schools S LEFT JOIN TestSpatial.dbo.seattle_pub_space P ON S.geog_schools.STBuffer(<Parameters.Radius>). STIntersects(P.geog_pub_space) = 1
Diese Beispielabfrage erzeugt eine Zeile für jeden Fall, in dem ein öffentliches Raumpolygon innerhalb der Radiusentfernung (in Metern) zu einer Schule liegt. 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
Mit dem Parameter können Sie die Beziehung zwischen Schulen und öffentlichen Räumen dynamisch anpassen.
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 Abwicklungsrichtung der Polygonpunkte (im Uhrzeigersinn oder entgegen dem Uhrzeigersinn) bestimmt, welche Punkte zurückgegeben werden. Sie können die Abwicklungsrichtung 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'
Diese Beispielabfrage filtert die Raumdaten vom Geometrie-Typ heraus, da Tableau keine Geometrie-Typ-Raumdaten für Microsoft SQL Server-Verbindungen 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.
RAWSQLAGG_SPATIAL("ST_ConvexHull(ST_Collect(%1))", [Geog])
RAWSQLAGG_SPATIAL("ST_ConcaveHull(ST_Collect(%1), %2, false)", [Geog], [ParameterValue])
Jede dieser Abfragen gibt einen Begrenzungsbereich um die angegebenen Datenpunkte zurück. ConcaveHull ist ein minimaler Begrenzungsbereich basierend auf der Genauigkeit, die in dieser Funktion der Parameterwert ist.
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.
Note: Die RAWSQL-Raumfunktionen sind nicht verfügbar, wenn eine Verbindung zu Oracle besteht.
Hinweis: Bei der Verwendung von PostGIS-spezifischen RAWSQL-Funktionen mit PostgreSQL + PostGIS können Fehler auftreten.
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
Fehlermeldung:
Beim Kommunizieren mit der Microsoft SQL Server-Datenquelle '<Name der Datenquelle>' ist ein Fehler aufgetreten.
Schlechte Verbindung: Tableau konnte sich nicht mit der Datenquelle verbinden.
[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.
Fehlermeldung:
Aktion konnte nicht abgeschlossen werden.
Die räumliche Operation führte zu einer MixedGeometry oder MixedGeography, die Tableau noch nicht unterstützt.
Die räumliche Operation führte zu einer MixedGeometry oder MixedGeography, die Tableau noch nicht unterstützt.
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.
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.
Fehlermeldungen und Lösungen für PostgreSQL + PostGIS, Oracle und Pivotal Greenplum + PostGIS
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_geography"HAVING (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, beseitigt.
In PostgreSQL + PostGIS können Sie sich mit einer Tabelle mit nicht unterstützten SRIDs verbinden, aber die Spalte Geometrie wird als "Unbekannt" angezeigt.
Lösung:
Exportieren Sie die räumlichen Daten aus PostgreSQL + PostGIS in ein Shapefile und verbinden Sie es in Tableau. Verbindungen zu räumlichen Dateien durchlaufen einen Datenumwandlungsprozess, der mehrere tausend Prognosen unterstützt.
Exportieren Sie die Daten aus PostgreSQL + PostGIS und transformieren Sie die Daten mit einem GIS-Tool wie QGIS oder ArcGIS. Laden Sie dann die Tabelle wieder in PostgreSQL + PostGIS zurück.
Fehlermeldung:
FEHLER: Array-Größe ü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 sie effizienter zu machen. 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:
- seattle_schools
- seattle_public_space
Schritt 1: Verbinden
Öffnen Sie Tableau Desktop, und stellen Sie eine Verbindung mit Microsoft SQL Server her.
Ziehen Sie auf der Seite "Datenquelle" im linken Bereich den Eintrag Neue benutzerdefinierte SQL in den Arbeitsbereich.
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.[name] as SchoolName, P.[name] as PubSpaceName, S.geog_schools.STBuffer(<Parameters.Radius>) as Geog_School, P.geog_pub_space as Geog_Pub_Space FROM TestSpatial.dbo.seattle_public_schools S FULL JOIN TestSpatial.dbo.seattle_public_space P ON S.geog_schools.STBuffer(<Parameters.Radius>). STIntersects(P.geog_pub_space) = 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
Wechseln Sie zu einem neuen Arbeitsblatt.
Doppelklicken Sie im Bereich Daten auf ein räumliches Feld.
In diesem Beispiel wird Geog_School verwendet. Bei einem Doppelklick wird sie automatisch zu Detail auf der Karte "Markierungen" hinzugefügt und eine Kartenansicht wird erstellt.
Ziehen Sie eine Dimension aus dem Bereich Daten zu Beschriftung auf der Karte "Markierungen". In diesem Beispiel wird School Name verwendet.
Wählen Sie Analyse > Berechnetes Feld erstellen aus.
Gehen Sie in dem anschließend geöffneten Berechnungs-Editor wie folgt vor:
Benennen Sie das berechnete Feld. In diesem Beispiel erhält das berechnete Feld den Namen "Intersection" (Schnittmenge).
Geben Sie eine RAWSQL-Formel ein. In diesem Beispiel wird die folgende Formel verwendet:
RAWSQL_SPATIAL ("Select %1.STIntersection(%2)", [Geog_School], [Geog_Pub_Space])
Diese Formel gibt eindeutige räumliche Daten basierend auf der Schnittmenge der beiden Geometrien zurück.
Klicken Sie auf OK, wenn Sie fertig sind.
Wählen Sie Analyse aus, und deaktivieren Sie dann Kennzahlen aggregieren.
Ziehen Sie aus dem Bereich Daten das neue berechnete Feld (in diesem Fall Intersection (Schnittmenge)) auf eine neue Ebene im Arbeitsblatt.
Die Karte wird mit einer neuen Ebene von Polygonen aus dem Feld "Intersection" (Schnittmenge) aktualisiert. Bei den Markierungen handelt es sich aufgrund der RAWSQL-Formel um eindeutige räumliche Formen.Ziehen Sie ein Dimensionsfeld aus dem Bereich Daten zu Detail auf der Karte "Markierungen". Dadurch werden die Markierungen disaggregiert.
In diesem Beispiel wird die Dimension PubSpaceName verwendet.
Ziehen Sie das gleiche Dimensionsfeld aus dem Bereich Daten zu Farbe auf der Karte "Markierungen".
In diesem Beispiel wird nun jedem öffentlichen Raum eine Farbe zugewiesen.
Formatieren Sie die Karte. Weitere Informationen finden Sie unter Anpassen der Darstellung der Karte.
In diesem Beispiel wird die folgende Formatierung angewendet:
Die Markierungen "School buffer" (Schulpuffer) (Geog_School) sind grau.
Die Beschriftungen der Markierungen "School Name" (Schulname) sind orange.
Der Hintergrundstil der Karte ist auf dunkel festgelegt.
Die Ebene "Straßen und Autobahnen" wird auf der Karte im Hintergrund angezeigt.
Somit ist die Karte nun fertig.
Siehe auch
Erstellen von Tableau-Karten aus räumlichen Dateien
Herstellen einer Verbindung zu einer benutzerdefinierten SQL-Abfrage
Pass-Through-Funktionen (RAWSQL)
Erste Schritte zu Berechnungen in Tableau