Conectarse a datos espaciales en una base de datos

Puede utilizar columnas espaciales almacenadas en la base de datos para generar visualizaciones de mapas en Tableau. Puede conectarse a fuentes de datos espaciales compatibles y crear visualizaciones con ellas para analizar datos espaciales, o puede conectarse a consultas SQL o RAWSQL personalizadas para realizar análisis espaciales avanzados.

Tableau soporta conexiones directas a datos espaciales utilizando estos conectores:

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

Para obtener información acerca del uso de estos conectores, consulte los ejemplos de conectores de Microsoft SQL Server, PostgreSQL o Pivotal Greenplum Database, Oracle o Snowflake.

Datos espaciales y SRID admitidos

En Microsoft SQL Server solo se admiten datos espaciales de tipo geografía.

PostgreSQL + PostGIS, Oracle y Pivotal Greenplum + PostGIS soportan campos de tipo Geografía- y Geometría-. Los campos de geometría deben especificar el tipo de geometría (por ejemplo, PUNTO, CADENA DE LÍNEAS) y SRID para ser reconocidos como campos espaciales. Los campos de geografía deben especificar el tipo de geografía para ser reconocidos.

Nota: En PostgreSQL + PostGIS, puede conectarse a tablas con tipos de geometría mixtos (puntos, líneas y polígonos), pero Tableau no los representa simultáneamente.

Los siguientes SRID son compatibles con los conectores detallados:

  • NAD83 (EPSG:4269)

  • ETRS89 (EPSG:4258)

  • WGS84 (EPSG:4326)

En PostgreSQL + PostGIS, SRID siempre tiene el valor predeterminado WGS84 (EPSG: 4326).

Tableau admite conexiones tanto en tiempo real como por extracción utilizando estos conectores.

Conectarse a columnas espaciales

  1. Abra Tableau y conéctese a los datos.
    Para obtener más información sobre cómo conectarse a datos mediante conectores compatibles, consulte los ejemplos de conector de base de datos de Microsoft SQL Server, PostgreSQL Oracle, Pivotal Greenplum Database o Snowflake.
  2. En la página de fuente de datos, en el panel izquierdo debajo de Tabla, arrastre una tabla que contenga datos espaciales al lienzo.

    Las columnas espaciales mostrarán el mismo nombre que tienen en la base de datos.

    Ya puede crear un mapa en Tableau usando datos espaciales. Para obtener más información sobre cómo crear mapas a partir de archivos espaciales, consulte Crear una vista de mapa a partir de datos espaciales.

Usar SQL personalizado y RAWSQL para realizar análisis espaciales avanzados

Conectarse a una consulta de SQL personalizada

  1. Abra Tableau y conéctese a la base de datos.
  2. En la página de fuente de datos, en el panel izquierdo, arrastre Nueva personalización de SQL al lienzo.

  3. Escriba o pegue su consulta en el cuadro de diálogo Editar SQL personalizado que aparece. Para ver ejemplos de SQL personalizado que puede usar con datos espaciales, consulte Ejemplos de consulta de SQL personalizada.

  4. Cuando haya terminado, haga clic en Aceptar.

Para obtener más información, consulte Conectarse a una consulta de SQL personalizada.

Ejemplos de consulta de SQL personalizada

Las siguientes consultas son ejemplos. Tenga en cuenta que las consultas de SQL variarán según la fuente de datos.

Si sus datos tienen dos conjuntos de puntos, como colegios y parques, y desea mostrar la intersección:

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

Esta consulta de ejemplo generará una fila por cada caso en el que haya un polígono de espacio público a una distancia Radius (en metros) de un colegio. El resultado de la consulta que aparece en la cuadrícula de datos tiene este aspecto:

Nota: En este ejemplo se hace referencia a un parámetro denominado "Radius" (radio), que mide la distancia (en metros) y tiene las opciones siguientes:

  • Tipo de datos: coma flotante
  • Valor actual: 600
  • Valor admitido: intervalo
  • Mínimo: 100
  • Máximo: 2000
  • Tamaño de paso: 50

Usando el parámetro, puede ajustar la relación entre las escuelas y los espacios públicos de forma dinámica.

Para obtener más información, consulte Utilizar parámetros en una consulta de SQL personalizada.

Si solo desea datos alrededor de un punto determinado

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

En esta consulta de ejemplo, se limitan los datos a 1000 metros alrededor de POINT. El radio puede ser un parámetro, como el parámetro utilizado en el primer ejemplo.

En lugar de un punto y un radio, también puede usarse un rectángulo. Por ejemplo:

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

El sentido en el que se ordenan los puntos del polígono (en sentido horario o antihorario) determina el conjunto de datos obtenido. Puede invertir el sentido con la función de SQL Server ReorientObject().

Si se produce un error sobre tipos de datos combinados

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'

En esta consulta de ejemplo se excluyen los datos espaciales de tipo de geometría, dado que Tableau no puede representar estos datos para conexiones de Microsoft SQL Server. También puede seleccionar otros tipos de datos espaciales.

Si sus datos se representan con demasiada lentitud en 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'

Esta consulta de ejemplo puede reducir en gran medida el tamaño de los datos. (Algunos objetos se reducen a puntos, y estos se descartan).

Usar RAWSQL

Para usar RAWSQL con datos espaciales, puede crear un campo calculado mediante las funciones RAWSQL_SPATIAL o RAWSQLAGG_SPATIAL. Por ejemplo: 

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

Esta fórmula indica datos espaciales únicos en función de la intersección de dos valores.

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

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

Cada uno de ellos devuelve un área delimitada alrededor de los puntos de datos suministrados. ConcaveHull es un área de delimitación mínima basada en la precisión, que en esta función es el valor del parámetro.

Para obtener más información sobre el uso de RAWSQL con datos espaciales, consulte Funciones de paso (RAWSQL). Para obtener más información sobre cómo crear campos calculados, consulte Crear un campo calculado.

Nota: Las funciones espaciales RAWSQL no están disponibles cuando se conectan a Oracle.

Nota: Es posible provocar errores cuando se usa RAWSQL específico para las funciones de PostGIS cuando se usa PostgreSQL + PostGIS.

Solución de problemas de conexiones espaciales

Problemas de rendimiento

Cuando se trabaja con columnas espaciales con un gran número de registros, podrían duplicarse marcas. Esto puede producir ralentizar el rendimiento.

Para mejorar el rendimiento, extraiga la fuente de datos vinculada. Para obtener más información, consulte Extraer los datos.

Soluciones y mensajes de error de Microsoft SQL Server

Cuando la tabla espacial usa una referencia espacial no admitida

Mensaje de error:

Se ha producido un error al comunicarse con la fuente de datos de Microsoft SQL Server "<nombre de la fuente de datos>".​
Conexión incorrecta: Tableau no ha podido conectarse a la fuente de datos.​
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash: geometry is incompatible with geography​(Conflicto de tipo de operando: la geometría es incompatible con la geografía).
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Statement(s) could not be prepared (No han podido prepararse las instrucciones).​

Solución:

  • Exporte los datos espaciales desde Microsoft SQL Server a un archivo de forma y conéctelo en Tableau. Las conexiones de archivos espaciales se someten a una transformación de datos que admite miles de proyecciones.

  • Exporte los datos desde Microsoft SQL Server y transfórmelos mediante una herramienta GIS, como QGIS o ArcGIS. A continuación, vuelva a cargar la tabla en Microsoft SQL Server. ​​

Cuando la tabla espacial incluye varios tipos de objetos espaciales

Mensaje de error:

Unable to complete action​(No se ha podido completar la acción).
La operación espacial ha dado como resultado un valor MixedGeometry o MixedGeography, que Tableau aún no admite.​
La operación espacial ha dado como resultado un valor MixedGeometry o MixedGeography, que Tableau aún no admite.​

Solución:

Use SQL personalizado para filtrar los datos. Para obtener más información, consulte el ejemplo de SQL personalizado Si se produce un error sobre tipos de datos combinados.

Cuando las medidas se agregan en la visualización

Mensaje de error:

Se ha producido un error al comunicarse con la fuente de datos de Microsoft SQL Server "<nombre de la fuente de datos>".
Conexión incorrecta: Tableau no ha podido conectarse a la fuente de datos.
No es posible usar una función de agregación con una expresión que contiene una agregación o una subconsulta.

Solución:

Desagregue las medidas de la visualización: seleccione Análisis y desmarque Agregar medidas.

Soluciones y mensaje de error de PostgreSQL + PostGIS, Oracle y Pivotal Greenplum + PostGIS

Cuando se utilizan SRID mixtos y uno de los SRID no es compatible

Mensaje de error:

Se ha producido un error al comunicarse con la fuente de datos de PostgreSQL "<nombre de la fuente de datos>".
Conexión incorrecta: Tableau no ha podido conectarse a la fuente de datos.
Error: funcionamiento en las geometrías SRID mixtas;
Error al ejecutar la consulta
<consulta> de <fuente de datos>
ERROR: funcionamiento en las geometrías SRID mixtas;
Error al ejecutar la consulta
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)

Solución:

Desagregue las medidas de la visualización: seleccione Análisis y desmarque Agregar medidas. Esto eliminará el mensaje de error y los datos en los que no se admite el SRID.

Cuando la tabla espacial usa una referencia espacial no admitida

En PostgreSQL + PostGIS, puede conectarse a una tabla con SRID no compatibles, pero la columna de geometría se mostrará como "Desconocido".

Solución:

  • Exporte los datos espaciales desde PostgreSQL + PostGIS a un archivo de forma y conéctelo en Tableau. Las conexiones de archivos espaciales se someten a una transformación de datos que admite miles de proyecciones.

  • Exporte los datos desde PostgreSQL + PostGIS y transfórmelos mediante una herramienta GIS, como QGIS o ArcGIS. A continuación, vuelva a cargar la tabla en PostgreSQL + PostGIS. ​​

Cuando un resultado de consulta excede el límite de 1 GB

Mensaje de error:

ERROR: el tamaño de la matriz supera el máximo permitido (1073741823); Error al ejecutar la consulta"
SELECT ST_Collect(geom) FROM <data source>

Solución:

Vuelva a escribir el cálculo para que sea más eficaz. Consulte Prácticas recomendadas para crear cálculos en Tableau o Crear cálculos eficientes.

 

Ejemplo: crear un mapa a partir de datos espaciales de Microsoft SQL Server

Este ejemplo describe cómo crear el mapa siguiente, que muestra colegios a menos de 600 metros de un parque en Seattle (EE. UU.).

Este ejemplo usa una conexión de Microsoft SQL Server a una base de datos llamada TestSpatial. Se utilizan las tablas siguientes de esta base de datos:

  • seattle_schools
  • seattle_public_space

Paso 1: conectarse

  1. Abra Tableau Desktop y conéctese a Microsoft SQL Server.

  2. En la página de fuente de datos, en el panel izquierdo, arrastre Nueva personalización de SQL al lienzo.

  3. Escriba o pegue la consulta en el cuadro de diálogo Editar SQL personalizado que aparece.

    Para este ejemplo, se utiliza la consulta siguiente:

    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: En este ejemplo se hace referencia a un parámetro denominado "Radius" (radio), Para obtener más información, consulte Utilizar parámetros en una consulta de SQL personalizada.

    El resultado de la consulta tiene este aspecto:

Paso 2: crear el mapa

  1. Vaya a una nueva hoja de trabajo.

  2. En el panel Datos, haga doble clic en un campo espacial.

    En este ejemplo se utiliza Geog_School. Al hacer doble clic en él, se añade automáticamente a Detalle en la tarjeta Marcas y se crea una vista de mapa.

  3. En el panel Datos, arrastre un campo de dimensión a Etiqueta en la tarjeta Marcas. En este ejemplo se utiliza School Name (Nombre del colegio).

  4. Seleccione Análisis > Crear campo calculado.

  5. En el editor de cálculo que se abre, haga lo siguiente:

    • Asigne un nombre al campo calculado. En este ejemplo el campo calculado se llama Intersection.

    • Introduzca una fórmula RAWSQL. En este ejemplo se utiliza la siguiente fórmula:

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

      Esta fórmula indica datos espaciales únicos en función de la intersección de dos geometrías.

    • Cuando haya terminado, haga clic en Aceptar.

  6. Seleccione Análisis y, a continuación, desmarque Agregar medidas.

  7. En el panel Datos, arrastre el nuevo campo calculado (en este caso, Intersection) a una nueva capa en la hoja de trabajo.


    El mapa se actualiza con una nueva capa de polígonos del campo Intersección. Las marcas son formas espaciales únicas debido a la fórmula RAWSQL.

  8. En el panel Datos, arrastre un campo de dimensión a Detalle en la tarjeta Marcas. Esta operación desagrega las marcas.

    En este ejemplo se utiliza la dimensión PubSpaceName.

  9. En el panel Datos, arrastre el mismo campo de dimensión a Color en la tarjeta Marcas.

    En este ejemplo se asigna un color a cada espacio público.

  1. Dé un formato al mapa. Para obtener más información, consulte Personalizar el aspecto del mapa.

    Para este ejemplo, se utiliza el formato siguiente:

    • Las marcas del búfer de colegio (Geog_School) son de color gris.

    • Las etiquetas de marca del nombre de colegio son de color blanco.

    • El estilo del fondo del mapa se establece a Oscuro.

    • La capa de calles y carreteras se muestra en el mapa de fondo.

    El mapa ya está terminado.

Consulte también

Crear mapas de Tableau a partir de archivos espaciales

Conectarse a una consulta de SQL personalizada

Funciones de paso (RAWSQL)

Comenzar a usar los cálculos en Tableau

Unión espacial lenta y devuelve resultados invertidos utilizando KML o SQL Datos espaciales importados de archivos de forma o GeoJSON

 

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!