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.

Tableau soporta conexiones directas a datos espaciales utilizando estos conectores:

  • Microsoft SQL Server
  • PostgreSQL + PostGIS
  • Pivotal Greenplum + PostGIS
  • Oracle

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

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, PostgreSQLOracle o Pivotal Greenplum Database.
  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.[common nam] as SchoolName, P.[common nam] as ParkName, S.geom.STBuffer(<Parameters.Radius>) as school_geom, P.geom as park_geom FROM TestSpatial.dbo.seattleelementaryschools S LEFT JOIN TestSpatial.dbo.allseattleparks P on S.geom.STBuffer(<Parameters.Radius>).STIntersects(P.geom) = 1

Esta consulta de ejemplo generará una fila por cada caso en el que haya un parque 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

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

Nota: 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).
The spatial operation resulted in a MixedGeometry or MixedGeography, which Tableau does not support yet (La operación espacial ha dado como resultado un valor MixedGeometry o MixedGeography, que Tableau aún no admite).​
The spatial operation resulted in a MixedGeometry or MixedGeography, which Tableau does not support yet (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:

  • seattleelementaryschools
  • allseattleparks

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.[common nam] as SchoolName, P.[common nam] as ParkName, S.geom.STBuffer(<Parameters.Radius>) as school_geom, P.geom as park_geom FROM TestSpatial.dbo.seattleelementaryschools S LEFT JOIN TestSpatial.dbo.allseattleparks P on S.geom.STBuffer(<Parameters.Radius>).STIntersects(P.geom) = 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 school_geom. 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 una dimensión a Etiqueta en la tarjeta Marcas. En este ejemplo se utiliza School Name (Nombre del colegio).

  4. En el estante Filas, mantenga presionado el botón Control (Comando en Mac) mientras hace clic y arrastra Latitud (generado) hacia la derecha. De este modo se copia el campo.

    Aparece un mapa duplicado debajo del primer mapa y la tarjeta Marcas se actualiza con dos pestañas Latitud (generado). La pestaña superior se corresponde con el mapa superior y la pestaña inferior se corresponde con el mapa inferior.

  5. En la tarjeta Marcas, haga clic en la pestaña Latitud (generado) inferior y elimine los campos arrastrándolos de nuevo al panel Datos.

    El mapa inferior se actualiza a un mapa en blanco.

  6. Seleccione Análisis > Crear campo calculado.

  7. 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.STBuffer(200))",[school_geom], [park_geom])

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

    • Cuando haya terminado, haga clic en Aceptar.

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

  9. En el panel datos, arrastre el nuevo campo calculado (en este caso, Intersection) a Detalle en la tarjeta Marcas.

    El mapa inferior se actualiza con nuevas marcas. Recuerde que las marcas son formas espaciales únicas debido a la fórmula RAWSQL.

  10. En el panel Datos, arrastre una dimensión a Detalle en la tarjeta Marcas. Esta operación desagrega las marcas.

    En este ejemplo se utiliza la dimensión ParkName.

  11. En el panel Datos, arrastre la misma dimensión a Color en la tarjeta Marcas.

    En este ejemplo se asigna un color a cada parque.

  12. En el estante Filas, haga doble clic con el botón derecho en el campo Longitud (generado) a la derecha y seleccione Eje doble.

    Ahora, los mapas están combinados y los datos se dividen en capas. Para obtener más información, consulte Crear mapas de eje doble (con capas) en Tableau.

  13. 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 nombre de colegio son de color gris.

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

    • 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

¡Gracias por sus comentarios!