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

  1. 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.
  2. 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

  1. Apri Tableau ed esegui la connessione al database.
  2. Nel riquadro di sinistra della pagina Origine dati, trascina Nuovo SQL personalizzato sul canvas.

  3. 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.

  4. 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

Quando la tabella spaziale utilizza un riferimento spaziale non supportato

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 con​la 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. ​​

Quando la tabella spaziale include più tipi di oggetti spaziali

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.

Quando le misure vengono aggregate nella visualizzazione

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

Quando utilizzi SRID misti e uno degli SRID non è supportato

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.

Quando la tabella spaziale utilizza un riferimento spaziale non supportato

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. ​​

Quando un risultato delle query supera il limite di 1 GB

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

  1. Apri Tableau Desktop ed esegui la connessione a Microsoft SQL Server.

  2. Nel riquadro di sinistra della pagina Origine dati, trascina Nuovo SQL personalizzato sul canvas.

  3. 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

  1. Passa a un nuovo foglio di lavoro.

  2. 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.

  3. Dal riquadro Dati, trascina un campo dimensione su Etichette nella scheda Indicatori. In questo esempio viene utilizzato il Nome della scuola.

  4. Seleziona Analisi > Crea campo calcolato.

  5. 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.

  6. Seleziona Analisi, quindi deseleziona Aggrega misure.

  7. 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.

  8. 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.

  9. Dal riquadro Dati, trascina lo stesso campo dimensione in Colore nella scheda Indicatori.

    In questo esempio, a ogni spazio pubblico viene assegnato un colore.

  1. 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

Unione spaziale lenta e restituisce risultati invertiti utilizzando dati spaziali KML o SQL importati da Shapefile o GeoJSON

 

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!