Connettersi ai dati spaziali in un database
Puoi utilizzare le colonne spaziali archiviate nel database per creare visualizzazioni di mappe in Tableau. Puoi connetterti a origini dati spaziali supportate e creare visualizzazioni con esse per analizzare i dati spaziali oppure puoi connetterti a query SQL o RAWSQL personalizzate per eseguire analisi spaziali avanzate.
Tableau supporta connessioni dirette ai dati spaziali utilizzando questi connettori:
- Amazon Redshift
- Microsoft SQL Server
- PostgreSQL + PostGIS
- Pivotal Greenplum + PostGIS
- Oracle
- Snowflake
Per informazioni sull’utilizzo di questi connettori, consulta gli esempi dei connettori Microsoft SQL Server, PostgreSQL, Database Pivotal Greenplum, Oracle o Snowflake.
Dati spaziali e SRID supportati
Per Microsoft SQL Server sono supportati solo dati spaziali di tipo geografico.
PostgreSQL + PostGIS, Oracle e Pivotal Greenplum + PostGIS supportano i campi di tipo geografico e geometrico. I campi geometrici devono specificare il tipo geografico (ad esempio, POINT, LINESTRING) e lo SRID per essere riconosciuti come campo spaziale. I campi geografici devono specificare il tipo geografico per essere riconosciuti.
Nota: in PostgreSQL + PostGIS puoi connetterti alle tabelle con entrambi i tipi di geometria mista (punti, linee e poligoni), ma Tableau non ne eseguirà contemporaneamente il rendering.
Questi SRID sono supportati dai connettori seguenti:
NAD83 (EPSG:4269)
ETRS89 (EPSG:4258)
WGS84 (EPSG:4326)
In PostgreSQL + PostGIS, lo SRID corrisponde sempre a WGS84 (EPSG: 4326).
Tableau supporta le connessioni live o di estrazione utilizzando questi connettori.
Connettersi a colonne spaziali
- Apri Tableau ed esegui la connessione ai dati.
Per maggiori informazioni su come connetterti ai dati tramite i connettori supportati, consulta gli esempi dei connettori Microsoft SQL Server, PostgreSQL, Oracle, Database Pivotal Greenplum o Snowflake. Nel riquadro a sinistra alla voce Tabella della pagina Origine dati, trascina una tabella contenente dati spaziali nel canvas.
Le colonne spaziali mostrano lo stesso nome presente nel database.
Ora puoi creare una mappa in Tableau utilizzando dati spaziali. Per maggiori informazioni su come creare mappe da file spaziali, consulta Creare una vista mappa da dati spaziali.
Utilizzo di SQL personalizzato e RAWSQL per l’esecuzione di analisi spaziali avanzate
Connettersi a una query SQL personalizzata
- Apri Tableau ed esegui la connessione al database.
Nel riquadro di sinistra della pagina Origine dati, trascina Nuovo SQL personalizzato sul canvas.
Digita o incolla la query nella finestra di dialogo Modifica SQL personalizzato che viene visualizzata. Per esempi di SQL personalizzato da utilizzare con i dati spaziali, consulta Esempi di query di SQL personalizzata.
Al termine, fai clic su OK.
Per maggiori informazioni, consulta Connettersi a una query SQL personalizzata.
Esempi di query di SQL personalizzata
Di seguito sono riportati alcuni esempi. Nota che le query di SQL personalizzato variano a seconda dell’origine dati.
Se i dati hanno due insiemi di punti, ad esempio scuole e parchi, e vuoi indicare dove si intersecano:
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
In questa query di esempio viene restituita una riga per ogni caso in cui un poligono di spazio pubblico si trova entro un raggio di distanza (metri) da una scuola. Il risultato della query si presenta in questo modo nella griglia di dati:
Nota: questo esempio fa riferimento a un parametro chiamato "Raggio". Misura la distanza (metri) e ha le seguenti impostazioni:
- Tipo di dati: mobile
- Valore corrente: 600
- Valori consentiti: intervallo
- Minimo: 100
- Massimo 2.000
- Dimensione passaggio: 50
Utilizzando il parametro è possibile regolare dinamicamente il rapporto tra scuole e spazi pubblici.
Per maggiori informazioni, consulta Utilizzare parametri in una query SQL personalizzata.
Se desideri inserire solo dati attorno a un determinato punto
SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C WHERE C.geom.STIntersects(geography::STGeomFromText('POINT(-122.344706 47.650388)', 4326).STBuffer(1000))=1
Questa query di esempio imposta un limite ai dati su 1000 metri attorno al POINT. Il raggio può essere un parametro, come il parametro utilizzato nel primo esempio.
In alternativa, anziché un punto e un raggio, puoi utilizzare un rettangolo. Ad esempio:
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
L’ordine di winding dei punti del poligono (in senso orario rispetto a quello in senso antiorario) determina l’insieme di punti ottenuto. Puoi invertire l’ordine di winding con la funzione ReorientObject di SQL Server().
In caso di errore riguardo ai tipi di dati misti
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 questa query di esempio vengono filtrati i dati spaziali di tipo geometrico poiché Tableau non è in grado di eseguire il rendering di dati spaziali di tipo geometrico per le connessioni di Microsoft SQL Server. Puoi anche selezionare altri tipi di dati spaziali.
In caso di rendering dei dati troppo lento 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'
Questa query di esempio può ridurre notevolmente le dimensioni dei dati (alcuni oggetti sono ridotti a punti e conseguentemente ignorati).
Usare RAWSQL
Per usare RAWSQL con i dati spaziali, puoi creare un campo calcolato utilizzando le funzioni RAWSQL_SPATIAL o RAWSQLAGG_SPATIAL. Ad esempio:
RAWSQL_SPATIAL("Select %1.STIntersection(%2.STBuffer(200))",[school_geom], [park_geom])
Questa formula restituisce dati spaziali univoci basati sull’intersezione di due valori.
RAWSQLAGG_SPATIAL("ST_ConvexHull(ST_Collect(%1))", [Geog])
RAWSQLAGG_SPATIAL("ST_ConcaveHull(ST_Collect(%1), %2, false)", [Geog], [ParameterValue])
Ognuno di essi restituisce un’area di delimitazione intorno ai punti dati forniti. ConcaveHull è un’area di delimitazione minima basata sulla precisione, che in questa funzione è il valore del parametro.
Per maggiori informazioni sull’utilizzo di RAWSQL con dati spaziali, consulta Funzioni pass-through (RAWSQL). Per maggiori informazioni su come creare campi calcolati, consulta Creare un campo calcolato.
Nota: le funzioni spaziali RAWSQL non sono disponibili durante la connessione a Oracle.
Nota: è possibile che gli errori vengano causati quando si utilizza un RAWSQL specifico per le funzioni PostGIS durante l’utilizzo di PostgreSQL + PostGIS.
Risolvere problemi relativi alle connessioni spaziali
Problemi di prestazioni
Quando si lavora con colonne spaziali unite con un numero elevato di record, possono presentarsi indicatori duplicati. Ciò può comportare prestazioni ridotte.
Per migliorare le prestazioni, estrai l’origine dati unita. Per maggiori informazioni, consulta Estrarre i dati.
Soluzioni e messaggi di errore di Microsoft SQL Server
Messaggio di errore:
An error occurred while communicating with the Microsoft SQL Server data source '<data source name>'.(Si è verificato un errore durante la comunicazione con l’origine dati Microsoft SQL Server "<nome origine dati>".)
Bad Connection: Tableau couldn’t connect to the data source (Problema di connessione: Tableau non è in grado di stabilire un collegamento all’origine dati.)
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash: geometry is incompatible with geography([Microsoft][Driver ODBC 13 per SQL Server][SQL Server]Conflitto del tipo di operando: la geometria è incompatibile conla geografia)
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Statement(s) could not be prepared.([Microsoft][ODBC Driver 13 for SQL Server][SQL Impossibile preparare l’istruzione.)
Soluzione:
Esporta i dati spaziali da Microsoft SQL Server in un file di forma e connettilo a Tableau. Le connessioni dei file spaziali attraversano un processo di trasformazione dei dati che supporta migliaia di proiezioni.
Esporta i dati da Microsoft SQL Server e trasformali utilizzando uno strumento GIS come QGIS o ArcGIS. Quindi ricarica la tabella in Microsoft SQL Server.
Messaggio di errore:
Unable to complete action(Impossibile completare l’azione)
The spatial operation resulted in a MixedGeometry or MixedGeography, which Tableau doesn’t support yet.(L’operazione spaziale ha prodotto una MixedGeometry o una MixedGeography, che Tableau non supporta ancora.)
The spatial operation resulted in a MixedGeometry or MixedGeography, which Tableau doesn’t support yet.(L’operazione spaziale ha prodotto una MixedGeometry o una MixedGeography, che Tableau non supporta ancora.)
Soluzione:
Utilizza SQL personalizzato per filtrare i dati. Per maggiori informazioni, consulta l’esempio di SQL personalizzato In caso di errore riguardo ai tipi di dati misti.
Messaggio di errore:
An error occurred while communicating with the Microsoft SQL Server data source '<data source name>' (Si è verificato un errore durante la comunicazione con l’origine dati Microsoft SQL Server "<nome origine dati>")
Bad Connection: Tableau could not connect to the data source. (Problema di connessione: Tableau non è in grado di stabilire un collegamento all’origine dati.)
Impossibile eseguire una funzione di aggregazione su un’espressione contenente un’aggregazione o una sottoquery.
Soluzione:
Disaggrega le misure nella visualizzazione: seleziona Analisi, quindi deseleziona Aggrega misure.
Soluzioni e messaggi di errore di PostgreSQL + PostGIS, Oracle e Pivotal Greenplum + PostGIS
Messaggio di errore:
An error occurred while communicating with the PostgreSQL data source '<data source name>'. (Si è verificato un errore durante la comunicazione con l’origine dati PostgreSQL "<nome origine dati>".)
Bad Connection: Tableau could not connect to the data source. (Problema di connessione: Tableau non è in grado di stabilire un collegamento all’origine dati.)
Error: Operation on mixed SRID geometries; (Errore: operazione su geometrie SRID miste;)
Error while executing the query (Errore durante l’esecuzione della query)
<query> from <datasource> (<query> da <originedati>)
ERROR: Operation on mixed SRID geometries; (ERRORE: operazione su geometrie SRID miste;)
Error while executing the query (Errore durante l’esecuzione della query)
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)
Soluzione:
Disaggrega le misure nella visualizzazione: seleziona Analisi, quindi deseleziona Aggrega misure. In questo modo vengono eliminati il messaggio di errore e i dati in cui non è supportato il SRID.
In PostgreSQL + PostGIS, puoi connetterti a una tabella con SRID non supportati, ma la colonna Geometria viene visualizzata come "Sconosciuto".
Soluzione:
Esporta i dati spaziali da PostgreSQL + PostGIS in un file shapefile e connettilo a Tableau. Le connessioni dei file spaziali attraversano un processo di trasformazione dei dati che supporta migliaia di proiezioni.
Esporta i dati da PostgreSQL + PostGIS e trasformali utilizzando uno strumento GIS come QGIS o ArcGIS. Quindi ricarica la tabella in PostgreSQL + PostGIS.
Messaggio di errore:
ERROR: array size exceeds the maximum allowed (1073741823); Error while executing the query" (ERRORE: le dimensioni della matrice superano il massimo consentito (1073741823); Errore durante l’esecuzione della query")
SELECT ST_Collect(geom) FROM <data source>
Soluzione:
Riscrivi il calcolo in modo che sia più efficiente. Consulta Procedure consigliate per la creazione di calcoli in Tableau o Creare calcoli efficienti.
Esempio: creare una mappa a partire dai dati spaziali di Microsoft SQL Server
Nell’esempio seguente viene illustrato come creare la mappa seguente, che mostra le scuole a una distanza di 600 metri dai parchi di Seattle, nello stato di Washington.
In questo esempio viene utilizzata una connessione di Microsoft SQL Server a un database denominato TestSpatial. Vengono utilizzate le tabelle seguenti di questo database:
- seattle_schools
- seattle_public_space
Fase 1: Eseguire la connessione
Apri Tableau Desktop ed esegui la connessione a Microsoft SQL Server.
Nel riquadro di sinistra della pagina Origine dati, trascina Nuovo SQL personalizzato sul canvas.
Digita o incolla una query nella finestra di dialogo Modifica SQL personalizzato che viene visualizzata.
In questo esempio, viene utilizzata la query seguente:
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
Nota: questo esempio fa riferimento a un parametro chiamato "Raggio". Per maggiori informazioni, consulta Utilizzare parametri in una query SQL personalizzata.
Il risultato della query si presenta in seguito in questo modo:
Fase 2: Creare la mappa
Passa a un nuovo foglio di lavoro.
Nel riquadro Dati fai doppio clic su un campo spaziale.
In questo esempio viene utilizzato Geog_School. Quando fai doppio clic, viene automaticamente aggiunto a Dettagli nella scheda Indicatori e viene creata una vista mappa.
Dal riquadro Dati, trascina un campo dimensione su Etichette nella scheda Indicatori. In questo esempio viene utilizzato il Nome della scuola.
Seleziona Analisi > Crea campo calcolato.
Nell’editor di calcolo che si apre, esegui le seguenti operazioni:
Associa un nome al campo calcolato. In questo esempio il campo calcolato è denominato Intersezione.
Immetti una formula RAWSQL. Questo esempio utilizza la seguente formula:
RAWSQL_SPATIAL ("Select %1.STIntersection(%2)", [Geog_School], [Geog_Pub_Space])
Questa formula restituisce dati spaziali univoci basati sull’intersezione di due geometrie.
Al termine, fai clic su OK.
Seleziona Analisi, quindi deseleziona Aggrega misure.
Dal riquadro Dati, trascina il nuovo campo calcolato (in questo caso, Intersezione) su un nuovo livello nel foglio di lavoro.
La mappa si aggiorna con un nuovo livello di poligoni dal campo Intersezione. Gli indicatori sono forme spaziali univoche a causa della formula RAWSQL.Dal riquadro Dati, trascina un campo dimensione su Dettagli nella scheda Indicatori. In questo modo vengono disaggregati gli indicatori.
In questo esempio, viene utilizzata la dimensione PubSpaceName.
Dal riquadro Dati, trascina lo stesso campo dimensione in Colore nella scheda Indicatori.
In questo esempio, a ogni spazio pubblico viene assegnato un colore.
Formatta la mappa. Per maggiori informazioni, consulta Personalizzare l’aspetto della mappa
In questo esempio, viene utilizzata la formattazione seguente:
Gli indicatori del buffer della scuola (Geog_School) sono colorati in grigio.
Le etichette dell’indicatore del nome della scuola sono colorate in bianco.
Lo stile dello sfondo della mappa è impostato su Scuro.
Il livello Strade e autostrade viene visualizzato sulla mappa dello sfondo.
La mappa è adesso completata.
Vedi anche
Creare mappe Tableau da file spaziali
Connettersi a una query SQL personalizzata
Funzioni pass-through (RAWSQL)
Introduzione ai calcoli in Tableau