Ansluta till spatiala data i en databas

Du kan använda spatiala kolumner som är lagrade i din databas för att bygga kartvisualiseringar i Tableau. Du kan ansluta till spatiala datakällor som stöds och skapa visualiseringar med dem för att analysera spatiala data, eller så kan du ansluta till anpassade SQL- eller RAWSQL-frågor för att utföra avancerad spatial analys.

Tableau stöder direkta anslutningar till spatiala data med hjälp av följande kopplingar:

  • Amazon Redshift
  • Microsoft SQL Server
  • PostgreSQL + PostGIS
  • Pivotal Greenplum + PostGIS
  • Oracle
  • Snowflake

Information om hur du använder de här kopplingarna finns i kopplingsexemplen för Microsoft SQL Server, PostgreSQL, Pivotal Greenplum-databas, Oracle eller Snowflake.

Spatiala data och SRID som stöds

För Microsoft SQL Server stöds endast spatiala data av typen Geografi.

PostgreSQL + PostGIS, Oracle och Pivotal Greenplum + PostGIS stöder fält av typen Geografi och Geometri. Geometrifält måste specificera geotypen (till exempel POINT, LINESTRING) och SRID för att identifieras som ett spatialt fält. Geografifält måste specificera geotypen för att kunna identifieras.

Obs! I PostgreSQL + PostGIS kan du ansluta till tabeller med blandade geometrityper (punkter, linjer och polygoner), men de återges inte samtidigt i Tableau.

Följande SRID stöds av de här kopplingarna:

  • NAD83 (EPSG:4269)

  • ETRS89 (EPSG:4258)

  • WGS84 (EPSG:4326)

I PostgreSQL + PostGIS är SRID alltid WGS84 (EPSG:4326) som standard.

Tableau stöder både liveanslutningar och extraktanslutningar med hjälp av de här kopplingarna.

Ansluta till spatiala kolumner

  1. Öppna Tableau och anslut till dina data.
    Mer information om hur du ansluter till data med hjälp av kopplingar som stöds finns i kopplingsexemplen för Microsoft SQL Server, PostgreSQL, Oracle, Pivotal Greenplum-databas eller Snowflake.
  2. På sidan Datakälla i den vänstra rutan under Tabell drar du en tabell som innehåller spatiala data till arbetsytan.

    Spatiala kolumner visar samma namn som de har i din databas.

    Du är nu redo att bygga en karta i Tableau med hjälp av spatiala data. Mer information om hur du skapar kartor från spatialfiler finns i Skapa en kartvy från rumsliga data.

Använda anpassad SQL och RAWSQL för att utföra avancerad spatial analys

Ansluta till en anpassad SQL-fråga

  1. Öppna Tableau och anslut till din databas.
  2. Dra Ny anpassad SQL i rutan till vänster på sidan Datakälla till arbetsytan.

  3. Skriv eller klistra in din fråga i dialogrutan Redigera anpassad SQL som visas. Exempel på anpassad SQL som du kan använda med spatiala data finns i Exempel på anpassade SQL-frågor.

  4. Klicka på OK när du är klar.

Mer information finns i Ansluta till en anpassad SQL-fråga

Exempel på anpassade SQL-frågor

Följande frågor är exempel. Observera att anpassade SQL-frågor varierar från datakälla till datakälla.

Om dina data har två uppsättningar punkter, t.ex. skolor och parker, och du vill visa var de korsar varandra:

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

Den här exempelfrågan producerar en rad för varje fall där en polygon för offentligt rum ligger inom radieavstånd (meter) från en skola. Resultatet från frågan ser ut så här i datarutnätet:

Obs! Det här exemplet refererar till en parameter med namnet ”Radius”. Den mäter avstånd (meter) och har följande inställningar:

  • Datatyp: flyttal
  • Nuvarande värde: 600
  • Tillåtna värden: intervall
  • Minst: 100
  • Max: 2 000
  • Stegstorlek: 50

Med hjälp av parametern kan du justera förhållandet mellan skolor och offentliga rum dynamiskt.

Mer information finns i Använda parametrar i en anpassad SQL-fråga.

Om du bara vill ha data runt en viss punkt

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

Det här exemplet begränsar data till 1 000 meter runt punkten. Radien kan vara en parameter såsom parametern som användes i det första exemplet.

Eller också kan en rektangel användas snarare än en punkt och radie. Till exempel:

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

Vridningsordningen för polygonpunkterna (medurs eller moturs) avgör vilken uppsättning punkter du får. Med SQL Server-funktionen ReorientObject() kan du vända på vridningsordningen.

Om du får ett felmeddelande om blandade datatyper

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'

Den här exempelfrågan filtrerar bort spatiala data av geometrityp, eftersom Tableau inte kan återge spatiala data av geometrityp för Microsoft SQL Server-anslutningar. Du kan också välja andra spatiala typer.

Om dina data återges för långsamt i 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'

Den här exempelfrågan kan minska datastorleken avsevärt. (Vissa objekt reduceras till punkter och dessa tas bort.)

Använda RAWSQL

Om du vill använda RAWSQL med spatiala data kan du skapa ett beräknat fält med hjälp av funktionerna RAWSQL_SPATIAL eller RAWSQLAGG_SPATIAL. Till exempel: 

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

Den här formeln returnerar unika spatiala data baserat på skärningspunkten mellan två värden.

RAWSQLAGG_SPATIAL("ST_ConvexHull(ST_Collect(%1))", [Geog])

RAWSQLAGG_SPATIAL("ST_ConcaveHull(ST_Collect(%1), %2, false)", [Geog], [ParameterValue])

Var och en av dessa returnerar ett avgränsningsområde runt de tillhandahållna datapunkterna. ConcaveHull är ett minsta avgränsningsområde baserat på precisionen som är parametervärdet i den här funktionen.

Mer information om hur du använder RAWSQL med hjälp av spatiala data finns i Genomflödesfunktioner (RAWSQL). Mer information om hur du skapar beräknade fält finns i Skapa ett beräknat fält.

Obs! Spatiala RAWSQL-funktioner är inte tillgängliga när du är ansluten till Oracle.

Obs! Fel kan orsakas om du använder RAWSQL som är specifikt för PostGIS-funktioner när du använder PostgreSQL + PostGIS.

Felsökning av spatiala anslutningar

Prestandaproblem

När du arbetar med kopplade spatiala kolumner med ett stort antal poster kan dubbla markeringar förekomma. Det kan resultera i långsam prestanda.

Extrahera den kopplade datakällan för att förbättra prestandan. Mer information finns i Extrahera data.

Felmeddelanden och lösningar för Microsoft SQL Server

När spatialtabellen använder en spatialreferens som inte stöds

Felmeddelande:

Ett fel uppstod vid kommunikation med Microsoft SQL Server-datakällan '<data source name>'.
Dålig anslutning: Tableau kunde inte ansluta till datakällan.
[Microsoft][ODBC-drivrutin 13 för SQL Server][SQL Server]Operandtypskonflikt: geometri är inkompatibel med geografi
[Microsoft][ODBC-drivrutin 13 för SQL Server][SQL Server]Meddelande(n) kunde inte förberedas.

Lösning:

  • Exportera spatiala data från Microsoft SQL Server till en formfil och anslut till den i Tableau. Spatialfilanslutningar går igenom en dataomvandlingsprocess som stöder tusentals projektioner.

  • Exportera aktuella data från Microsoft SQL Server och omvandla dem med hjälp av ett GIS-verktyg som QGIS eller ArcGIS. Läs sedan in tabellen igen på Microsoft SQL Server. ​

När den spatiala tabellen innehåller flera typer av spatiala objekt

Felmeddelande:

Det går inte att slutföra åtgärden
Spatialåtgärden resulterade i en MixedGeometry eller MixedGeography, vilket Tableau inte stöder ännu.​
Spatialåtgärden resulterade i en MixedGeometry eller MixedGeography, vilket Tableau inte stöder ännu.​

Lösning:

Använd anpassad SQL för att filtrera data. Mer information finns i Anpassad SQL-exemplet Om du får ett felmeddelande om blandade datatyper.

När mätvärden aggregeras i visualiseringen

Felmeddelande:

Ett fel uppstod vid kommunikation med Microsoft SQL Server-datakällan '<data source name>'
Dålig anslutning: Tableau kunde inte ansluta till datakällan.
Det går inte att utföra en aggregeringsfunktion på ett uttryck som innehåller en aggregering eller en underfråga.

Lösning:

Uppdelade mätvärden i visualiseringen: Välj Analys och rensa sedan Aggregera mätvärden.

Felmeddelanden och lösningar för PostgreSQL + PostGIS, Oracle och Pivotal Greenplum + PostGIS

När blandade SRID används och något av SRID:na inte stöds

Felmeddelande:

Ett fel uppstod vid kommunikation med PostgreSQL-datakällan '<data source name>'.
Dålig anslutning: Tableau kunde inte ansluta till datakällan.
Fel: Drift med blandade SRID-geometrier;
Fel vid körning av frågan
<fråga> från <datakälla>
FEL: Drift med blandade SRID-geometrier;
Fel vid körning av frågan
VÄLJ ST_ForceCollection(ST_Collect(”mixed_SRID_geography”.”location”::geometry)) SOM ”clct:location:nk”
FRÅN ”public”.”mixed_SRID_geography” ”mixed_SRID_geography”SOM HAR (ANTAL(1) > 0)

Lösning:

Uppdelade mätvärden i visualiseringen: Välj Analys och rensa sedan Aggregera mätvärden. Det här eliminerar felmeddelandet och de data där SRID inte stöds.

När spatialtabellen använder en spatialreferens som inte stöds

I PostgreSQL + PostGIS kan du ansluta till en tabell med SRID som inte stöds, men kolumnen Geometri visas som ”Okänd”

Lösning:

  • Exportera spatiala data från PostgreSQL + PostGIS till en formfil och anslut till den i Tableau. Spatialfilanslutningar går igenom en dataomvandlingsprocess som stöder tusentals projektioner.

  • Exportera aktuella data från PostgreSQL + PostGIS och omvandla dem med hjälp av ett GIS-verktyg som QGIS eller ArcGIS. Läs sedan in tabellen igen på PostgreSQL + PostGIS. ​

När ett resultat från en fråga överskrider gränsen på 1 GB

Felmeddelande:

FEL: matrisstorleken överskrider den maximalt tillåtna (1073741823); Fel vid körning av frågan”
VÄLJ ST_Collect(geom) FRÅN <datakälla>

Lösning:

Skriv om beräkningen så att den blir mer effektiv. Se Bästa praxis för att skapa beräkningar i Tableau eller Skapa effektiva beräkningar.

 

Exempel – bygga en karta från spatiala Microsoft SQL Server-data

Följande exempel visar hur man skapar kartan nedan som visar skolor inom 600 meter från parker i Seattle, Washington.

I det här exemplet används en Microsoft SQL Server-anslutning till en databas som kallas TestSpatial. Följande tabeller från den här databasen används:

  • seattle_schools
  • seattle_public_space

Steg 1: Ansluta

  1. Öppna Tableau Desktop och anslut till Microsoft SQL Server.

  2. Dra Ny anpassad SQL i rutan till vänster på sidan Datakälla till arbetsytan.

  3. Skriv eller klistra in en fråga i dialogrutan Redigera anpassad SQL som visas.

    I det här exemplet används följande fråga:

    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

    Obs! Det här exemplet refererar till en parameter med namnet ”Radius”. Mer information finns i Använda parametrar i en anpassad SQL-fråga.

    Resultatet från frågan ser ut så här:

Steg 2: Bygga kartan

  1. Gå till ett nytt arbetsblad.

  2. Dubbelklicka på ett spatialt fält i rutan Data.

    I det här exemplet används Geog_School. När du dubbelklickar på det läggs det till automatiskt på Detalj på kortet Markeringar och en kartvy skapas.

  3. Dra ett dimensionsfält från rutan Data till Etikett på kortet Markeringar. I det här exemplet används Skolnamn.

  4. Välj Analys > Skapa beräknat fält.

  5. Gör följande i den beräkningsredigerare som visas:

    • Ge det kalkylerade fältet ett namn. I det här exemplet heter det beräknade fältet Skärningspunkt.

    • Ange en RAWSQL-formel. I det här exemplet används följande formel:

      RAWSQL_SPATIAL ("Select %1.STIntersection(%2)", [Geog_School], [Geog_Pub_Space])

      Den här formeln returnerar unika spatiala data baserat på skärningspunkten mellan två geometrier.

    • Klicka på OK när du är klar.

  6. Välj Analys och avmarkera sedan Aggregera mätvärden.

  7. I rutan Data drar du det nya beräknade fältet (i det här fallet skärningspunkten) till ett nytt lager i arbetsbladet.


    Kartan uppdateras med ett nytt lager av polygoner från fältet Skärningspunkt. Markeringarna är unika spatiala former på grund av RAWSQL-formeln.

  8. Dra ett dimensionsfält från rutan Data till Detalj på kortet Markeringar. Det här delar upp markeringarna.

    I det här exemplet används dimensionen PubSpaceName.

  9. Dra samma dimensionsfält från rutan Data till Färg på kortet Markeringar.

    I det här exemplet får varje offentligt rum nu en färg.

  1. Formatera kartan. Mer information finns i Anpassa kartans utseende.

    I det här exemplet används följande formatering:

    • Skolbuffertmarkeringarna (Geog_School) är gråfärgade.

    • Markeringsetiketterna Skolnamn är vitfärgade.

    • Stilen för bakgrundskartan är inställd på Mörk.

    • Lagret Gator, vägar och motorvägar visas på bakgrundskartan.

    Kartan är nu klar.

Se även

Skapa Tableau-kartor från filer från spatialfiler

Ansluta till en anpassad SQL-fråga

Genomflödesfunktioner (RAWSQL)

Komma igång med beräkningar i Tableau

Spatiala kopplingar sakta ner och returnera inverterade resultat med KML eller SQL spatiala data importerade från shapefil eller GeoJSON

 

Tack för din feedback!Din feedback har skickats in. Tack!