Verbinding maken met ruimtelijke data in een database
U kunt ruimtelijke kolommen die in uw database zijn opgeslagen, gebruiken om kaartvisualisaties te maken in Tableau. U kunt verbinding maken met ondersteunde ruimtelijke databronnen en hiermee visualisaties maken om ruimtelijke data te analyseren. U kunt ook verbinding maken met aangepaste SQL- of RAWSQL-query's om geavanceerde ruimtelijke analyses uit te voeren.
Tableau ondersteunt directe verbindingen met ruimtelijke data via de volgende connectoren:
- Amazon Redshift
- Microsoft SQL Server
- PostgreSQL met PostGIS
- Pivotal Greenplum met PostGIS
- Oracle
- Snowflake
Zie de voorbeelden van connectoren voor Microsoft SQL Server, PostgreSQL, Pivotal Greenplum Database, Oracle ofSnowflake voor meer informatie over het gebruik van deze connectoren.
Ondersteunde ruimtelijke data en SRID's
Voor Microsoft SQL-server worden alleen ruimtelijke data van het type Geografie ondersteund.
PostgreSQL met PostGIS, Oracle en Pivotal Greenplum met PostGIS ondersteunen velden van het type Geografie en Geometrie. Geometrievelden moeten het geotype (bijvoorbeeld POINT, LINESTRING) en SRID verstrekken om als ruimtelijk veld te worden herkend. Geografievelden moeten het te herkennen geotype opgeven.
Opmerking: in PostgreSQL met PostGIS kunt u verbinding maken met tabellen met beide typen gemengde geometrie (punten, lijnen en polygonen). Maar Tableau kan deze niet tegelijkertijd weergeven.
De volgende SRID's worden ondersteund door deze connectoren:
NAD83 (EPSG:4269)
ETRS89 (EPSG:4258)
WGS84 (EPSG:4326)
In PostgreSQL PostGIS is SRID standaard altijd WGS84 (EPSG: 4326).
Tableau ondersteunt zowel live- als extractverbindingen met behulp van deze connectoren.
Verbinding maken met ruimtelijke kolommen
- Open Tableau en maak verbinding met uw data.
Zie de voorbeelden van connectoren voor Microsoft SQL Server, PostgreSQL, Oracle, Pivotal Greenplum Database of Snowflake voor meer informatie over hoe u verbinding kunt maken met data met behulp van ondersteunde connectoren. Sleep op de pagina Databron, in het linkerdeelvenster onder Tabel, een tabel met ruimtelijke data naar het canvas.
Ruimtelijke kolommen hebben dezelfde naam als in uw database.
U bent nu klaar om een kaart in Tableau te maken met behulp van ruimtelijke data. Zie Een kaartweergave maken op basis van ruimtelijke data voor meer informatie over het maken van kaarten uit ruimtelijke bestanden.
Aangepaste SQL en RAWSQL gebruiken om geavanceerde ruimtelijke analyses uit te voeren
Verbinding maken met een aangepaste SQL-query
- Open Tableau en maak verbinding met uw database.
Op de pagina Databron sleept u in het linkerdeelvenster Nieuwe aangepaste SQL op het canvas.
Typ of plak uw query in het dialoogvenster Aangepaste SQL bewerken dat wordt getoond. Zie Voorbeelden van aangepaste SQL-query's voor voorbeelden van aangepaste SQL die u met ruimtelijke data kunt gebruiken.
Klik op OK als u klaar bent.
Zie Verbinding maken met een aangepaste SQL-query voor meer informatie.
Voorbeelden van aangepaste SQL-query's
De volgende zoekopdrachten zijn voorbeelden. Houd er rekening mee dat aangepaste SQL-query's per databron kunnen verschillen.
Als uw data twee puntenreeksen bevatten, zoals scholen en parken, en u wilt laten zien waar deze elkaar kruisen:
SELECTEER S.[naam] als SchoolNaam, P.[naam] als PubSpaceNaam, S.geog_schools.STBuffer(<Parameters.Radius>) als Geog_School, P.geog_pub_space als Geog_Pub_Space VANUIT TestSpatial.dbo.seattle_public_schools S JOIN LINKS TestSpatial.dbo.seattle_pub_space P OP S.geog_schools.STBuffer(<Parameters.Radius>). STIntersects(P.geog_pub_space) = 1
Met deze voorbeeldquery wordt een rij gegenereerd voor elk geval waarin een veelhoek voor openbare ruimte zich binnen een straal (in meters) van een school bevindt. Het resultaat van de query ziet er in het dataraster als volgt uit:
Opmerking: in dit voorbeeld wordt verwezen naar een parameter met de naam 'Radius'. Deze meet afstand (meters) en heeft de volgende instellingen:
- Datatype: zwevend
- Huidige waarde: 600
- Toegestane waarden: bereik
- Minimum: 100
- Maximum: 2.000
- Stapgrootte: 50
Met de parameter kunt u de relatie tussen scholen en openbare ruimten dynamisch aanpassen.
Zie Parameters in een aangepaste SQL-query gebruiken voor meer informatie.
Als u alleen data wilt rond een bepaald punt
SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C WHERE C.geom.STIntersects(geography::STGeomFromText('POINT(-122.344706 47.650388)', 4326).STBuffer(1000))=1
Met deze voorbeeldquery worden de data beperkt tot 1.000 meter rondom het PUNT. De straal kan een parameter zijn, zoals de parameter die in het eerste voorbeeld wordt gebruikt.
In plaats van een punt en een straal kan ook een rechthoek worden gebruikt. Bijvoorbeeld:
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
De volgorde waarin de punten van de veelhoek worden gedraaid (met de klok mee of tegen de klok in) bepaalt welke puntenset u krijgt. U kunt de volgorde van het draaien omkeren met de SQL Server-functie ReorientObject().
Als u een foutmelding krijgt over gemengde datatypen
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'
Met deze voorbeeldquery worden de ruimtelijke data van het type Geometrie eruit gefilterd, omdat Tableau geen ruimtelijke data van het type geometrie kan weergeven voor Microsoft SQL Server-verbindingen. U kunt ook andere ruimtelijke typen selecteren.
Als uw data te langzaam worden weergegeven in Tableau
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'
Met deze voorbeeldquery kunt u de datagrootte aanzienlijk verkleinen. (Sommige objecten worden gereduceerd tot punten, en deze worden verwijderd.)
RAWSQL gebruiken
Als u RAWSQL met ruimtelijke data wilt gebruiken, kunt u een berekend veld maken met de functies RAWSQL_SPATIAL of RAWSQLAGG_SPATIAL. Bijvoorbeeld:
RAWSQL_SPATIAL("Select %1.STIntersection(%2.STBuffer(200))",[school_geom], [park_geom])
Deze formule retourneert unieke ruimtelijke data op basis van de kruising van twee waarden.
RAWSQLAGG_SPATIAL("ST_ConvexHull(ST_Collect(%1))", [Geog])
RAWSQLAGG_SPATIAL("ST_ConcaveHull(ST_Collect(%1), %2, false)", [Geog], [ParameterValue])
Deze retourneren beide een begrenzingsgebied rond de geleverde datapunten. ConcaveHull is een minimaal begrenzingsgebied op basis van de precisie, die in deze functie de parameterwaarde is.
Zie Pass-through-functies (RAWSQL) voor meer informatie over het gebruik van RAWSQL met ruimtelijke data. Zie Een berekend veld maken voor meer informatie over hoe u berekende velden kunt maken.
Opmerking: ruimtelijke RAWSQL-functies zijn niet beschikbaar wanneer verbonden met Oracle.
Opmerking: het is mogelijk dat er fouten ontstaan bij het specifieke gebruik van RAWSQL voor PostGIS-functies bij het gebruik van PostgreSQL met PostGIS.
Problemen met ruimtelijke verbindingen oplossen
Prestatieproblemen
Bij het werken met samengevoegde ruimtelijke kolommen met een groot aantal records kunnen dubbele markeringen ontstaan. Dit kan resulteren in trage prestaties.
Om de prestaties te verbeteren, extraheert u de gekoppelde databron. Zie Uw data extraheren voor meer informatie.
Microsoft SQL Server-foutmeldingen en oplossingen
Foutbericht:
Er is een fout opgetreden tijdens de communicatie met de Microsoft SQL Server-databron '<databronnaam>'.
Onjuiste verbinding: Tableau kon geen verbinding maken met de databron
[Microsoft][ODBC-stuurprogramma 13 voor SQL Server][SQL Server]Operandtypeconflict: geometrie is niet compatibel met geografie
[Microsoft][ODBC-stuurprogramma 13 voor SQL Server][SQL Server]Transactie(s) konden niet worden voorbereid.
Oplossing:
Exporteer de ruimtelijke data van Microsoft SQL Server naar een Shapefile en maak hier verbinding mee in Tableau. Verbindingen met ruimtelijke bestanden doorlopen een proces voor dataveranderingen dat duizenden projecties ondersteunt.
Exporteer de data uit Microsoft SQL Server en transformeer de data met een GIS-tool zoals QGIS of ArcGIS. Laad de tabel vervolgens opnieuw in Microsoft SQL Server.
Foutberichten:
Kan actie niet voltooien
De ruimtelijke bewerking resulteerde in een MixedGeometry of MixedGeography, wat nog niet door Tableau wordt ondersteund.
De ruimtelijke bewerking resulteerde in een MixedGeometry of MixedGeography, wat nog niet door Tableau wordt ondersteund.
Oplossing:
Gebruik aangepaste SQL om de data te filteren. Zie het aangepaste SQL-voorbeeld Als u een foutmelding krijgt over gemengde datatypen voor meer informatie.
Foutbericht:
Er is een fout opgetreden tijdens de communicatie met de Microsoft SQL Server-databron '<databronnaam>'
Onjuiste verbinding: Tableau kan geen verbinding maken met de databron.
Kan geen geaggregeerde functie uitvoeren voor een expressie die een aggregatie of subquery bevat.
Oplossing:
Het aggregeren van meetwaarden in de visualisatie opheffen: selecteer Analyse en wis dan Meetwaarden aggregeren.
Foutmeldingen en oplossingen voor PostgreSQL met PostGIS, Oracle en Pivotal Greenplum met PostGIS
Foutbericht:
Er is een fout opgetreden tijdens de communicatie met de PostgreSQL-databron '<databronnaam>'.
Onjuiste verbinding: Tableau kan geen verbinding maken met de databron.
Fout: bewerking op gemengde SRID-geometrieën;
Fout tijdens het uitvoeren van de query
<query> van <databron>
FOUT: bewerking op gemengde SRID-geometrieën;
Fout tijdens het uitvoeren van de query
SELECTEER ST_ForceCollection(ST_Collect("mixed_SRID_geography"."location"::geometry)) ALS "clct:location:nk"
VAN "public"."mixed_SRID_geography" "mixed_SRID_geography"HAVING (COUNT(1) > 0)
Oplossing:
Het aggregeren van meetwaarden in de visualisatie opheffen: selecteer Analyse en wis dan Meetwaarden aggregeren. Hierdoor worden de foutmelding en de data verwijderd waarbij de SRID niet wordt ondersteund.
In PostgreSQL met PostGIS kunt u verbinding maken met een tabel met niet-ondersteunde SRID's. Maar de kolom Geometrie wordt dan weergegeven als 'Onbekend'.
Oplossing:
Exporteer de ruimtelijke data van PostgreSQL met PostGIS naar een Shapefile en maak hier verbinding mee in Tableau. Verbindingen met ruimtelijke bestanden doorlopen een proces voor dataveranderingen dat duizenden projecties ondersteunt.
Exporteer de data uit PostgreSQL met PostGIS en transformeer de data met behulp van een GIS-tool zoals QGIS of ArcGIS. Laad de tabel vervolgens opnieuw in PostgreSQL met PostGIS.
Foutbericht:
”FOUT: arraygrootte overschrijdt het maximaal toegestane (1073741823); fout tijdens uitvoeren van de query”
SELECTEER ST_Collect(geom) VAN <data source>
Oplossing:
Schrijf de berekening opnieuw om deze efficiënter te maken. Zie Best practices voor het maken van berekeningen in Tableau of Efficiënte berekeningen maken.
Voorbeeld: een kaart van ruimtelijke data maken vanuit Microsoft SQL Server
Het volgende voorbeeld laat zien hoe u de onderstaande kaart kunt maken. Hierop worden scholen binnen 600 meter van parken in Seattle (VS) weergegeven.
In dit voorbeeld wordt een Microsoft SQL Server-verbinding met een database met de naam TestSpatial gebruikt. De volgende tabellen uit deze database worden gebruikt:
- seattle_schools
- seattle_public_space
Stap 1: verbinding maken
Open Tableau Desktop en maak verbinding met Microsoft SQL Server.
Op de pagina Databron sleept u in het linkerdeelvenster Nieuwe aangepaste SQL op het canvas.
Typ of plak een query in het dialoogvenster Aangepaste SQL bewerken dat wordt getoond.
Voor dit voorbeeld wordt de volgende query gebruikt:
SELECTEER S.[name] as SchoolName, P.[name] als PubSpaceName, S.geog_schools.STBuffer(<Parameters.Radius>) als Geog_School, P.geog_pub_space as Geog_Pub_Space FROM TestSpatial.dbo.seattle_public_schools S VOLLEDIGE JOIN TestSpatial.dbo.seattle_public_space P OP S.geog_schools.STBuffer(<Parameters.Radius>). STIntersects(P.geog_pub_space) = 1
Opmerking: in dit voorbeeld wordt verwezen naar een parameter met de naam 'Radius'. Zie Parameters in een aangepaste SQL-query gebruiken voor meer informatie.
Het resultaat van de query ziet er als volgt uit:
Stap 2: de kaart bouwen
Ga naar een nieuw werkblad.
In het deelvenster Data dubbelklikt u op een ruimtelijk veld.
In dit voorbeeld wordt Geog_School gebruikt. Wanneer u hierop dubbelklikt, wordt het automatisch toegevoegd aan Detail op de kaart Markeringen en wordt een kaartweergave gemaakt.
Sleep vanuit het deelvenster Data een dimensieveld naar Label op de kaart Markeringen. In dit voorbeeld wordt School Name gebruikt.
Selecteer Analyse > Berekend veld maken.
Doe het volgende in de berekeningseditor die wordt geopend:
Geef het berekende veld een naam. In dit voorbeeld heeft het berekende veld de naam Intersection (kruispunt).
Voer een RAWSQL-formule in. In dit voorbeeld wordt de volgende formule gebruikt:
RAWSQL_SPATIAL ("Select %1.STIntersection(%2)", [Geog_School], [Geog_Pub_Space])
Deze formule retourneert unieke ruimtelijke data op basis van de kruising van twee geometrieën.
Klik op OK als u klaar bent.
Selecteer Analyse en wis dan Meetwaarde aggregeren.
Sleep vanuit het deelvenster Data het nieuwe berekende veld (in dit geval: Intersection) naar een nieuwe laag op het werkblad.
De kaart wordt bijgewerkt met een nieuwe laag veelhoeken uit het veld Intersection. Dankzij de RAWSQL-formule zijn de markeringen unieke ruimtelijke vormen.Sleep vanuit het deelvenster Data een dimensieveld naar Detail op de kaart Markeringen. Hierdoor wordt het aggregeren van de markeringen opgeheven.
In dit voorbeeld wordt de dimensie PubSpaceNaam gebruikt.
Sleep vanuit het deelvenster Data hetzelfde dimensieveld naar Kleur op de kaart Markeringen.
In dit voorbeeld wordt aan elke openbare ruimte nu een kleur toegewezen.
Formatteer de kaart. Zie De vormgeving van uw kaarten aanpassen voor meer informatie.
In dit voorbeeld wordt de volgende opmaak toegepast:
De buffermarkeringen van School (Geog_School) zijn grijs gekleurd.
De markeringslabels met de School Name zijn wit gekleurd.
De achtergrondstijl van de kaart is ingesteld op Donker.
De laag Streets and Highways wordt weergegeven op de achtergrondkaart.
De kaart is nu klaar.
Zie ook
Tableau-kaarten maken op basis van bestanden met ruimtelijke data
Verbinding maken met een aangepaste SQL-query
Pass-through-functies (RAWSQL)
Aan de slag met berekeningen in Tableau