Conectar a dados espaciais em um banco de dados
Você pode usar as colunas espaciais armazenadas em seu banco de dados para criar visualizações de mapa no Tableau. Você pode se conectar a fontes de dados espaciais compatíveis e criar visualizações com elas para analisar dados espaciais, ou pode se conectar a consultas SQL ou RAWSQL personalizadas para realizar análises espaciais avançadas.
O Tableau é compatível com conexões diretas aos dados espaciais usando estes conectores:
- Amazon Redshift
- Microsoft SQL Server
- PostgreSQL + PostGIS
- Pivotal Greenplum + PostGIS
- Oracle
- Snowflake
Para obter informações sobre como usar esses conectores, consulte os exemplos de conector do Microsoft SQL Server, PostgreSQL, Pivotal Greenplum Database, Oracle ou Snowflake.
Dados espaciais e SRIDs compatíveis
Para o Microsoft SQL Server, somente os dados espaciais Tipo geografia são compatíveis.
PostgreSQL + PostGIS, Oracle e Pivotal Greenplum + PostGIS são compatíveis com os campos do tipo Geografia- e Geometria. Os campos de geometria devem especificar o tipo de geografia (por exemplo: POINT, LINESTRING) e SRID para serem reconhecidos como um campo espacial. Os campos Geografia devem especificar o tipo de geometria a ser reconhecido.
Observação: não serão no PostgreSQL + PostGIS, você pode se conectar a tabelas com tipos de geometria mistos (pontos, linhas e polígonos), mas o Tableau não os processará simultaneamente.
Os seguintes SRIDs são suportados por estes conectores:
NAD83 (EPSG:4269)
ETRS89 (EPSG:4258)
WGS84 (EPSG:4326)
No PostgreSQL + PostGIS, o SRID sempre será padronizado para WGS84 (EPSG:4326).
O Tableau aceita conexões em tempo real e de extração usando esses conectores.
Conectar-se a colunas espaciais
- Abra o Tableau e se conecte aos dados.
Para obter mais informações sobre como se conectar aos dados usando conectores compatíveis, consulte os exemplos de conector do Microsoft SQL Server, PostgreSQL, Oracle ou Pivotal Greenplum Database ou Snowflake. Na página Fonte de dados, do painel esquerdo em Tabela, arraste uma tabela que contenha os dados espaciais no canvas.
As colunas espaciais exibem o mesmo nome presentes em seu banco de dados.
Agora você está pronto para criar um mapa no Tableau usando os dados espaciais. Para obter mais informações sobre como criar mapas com dados espaciais, consulte Criar uma visualização de mapa de dados espaciais.
Usar SQL personalizado e RAWSQL para executar a análise espacial avançada
Conectar a uma consulta de SQL personalizado
- Abra o Tableau e se conecte ao banco de dados.
Na página Fonte de dados, do painel esquerdo, arraste Novo SQL personalizado no canvas.
Digite ou cole a sua consulta na caixa de diálogo Editar SQL personalizado exibida. Para obter exemplos do SQL personalizado que você pode usar com os dados espaciais, consulte Exemplos de consulta de SQL personalizado.
Ao terminar, clique em OK.
Para obter mais informações, consulte Conectar a uma consulta de SQL personalizado.
Exemplos de consulta de SQL personalizado
As consultas a seguir são exemplos. Observe que as consultas de SQL personalizado serão variadas, dependendo da fonte de dados.
Se os seus dados tiverem dois conjuntos de pontos, como escolas e parques, e você deseja mostrar onde há intersecção:
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
Essa consulta de exemplo produz uma linha para cada caso em que um polígono de espaço público está na distância de Raio (metros) da escola. O resultado da consulta tem esta aparência na grade de dados:
Observação: este exemplo faz referência a um parâmetro chamado "Raio”. Ele mede a distância (em metros) e tem as seguintes configurações:
- Tipo de dados: flutuante
- Valor atual: 600
- Valores permitidos: Intervalo
- Mínimo: 100
- Máximo 2.000
- Tamanho da etapa: 50
Usando o parâmetro, você pode ajustar a relação entre escolas e espaços públicos de forma dinâmica.
Para obter mais informações, consulte Usar parâmetros em uma consulta SQL personalizada.
Se você quer os dados somente ao redor de um determinado ponto
SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C WHERE C.geom.STIntersects(geography::STGeomFromText('POINT(-122.344706 47.650388)', 4326).STBuffer(1000))=1
Esta consulta de exemplo limita os dados a 1.000 metros ao redor do POINT. O raio pode ser um parâmetro, como o parâmetro usado no primeiro exemplo.
Ou, em vez de um ponto e um raio, um retângulo pode ser usado. Por exemplo:
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
A ordem contrária dos pontos do polígono (sentido horário em vez do sentido anti-horário) determina qual conjunto de pontos você obtém. Você pode reverter a ordem contrária com a função do SQL Server ReorientObject().
Se você obter um erro sobre os tipo de dados mistos
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'
Essa consulta de exemplo filtra dados espaciais do tipo geométrico, pois o Tableau não renderiza os dados especiais geométricos para conexões do Microsoft SQL Server. Você também pode selecionar outros tipos espaciais.
Se os seus dados renderizam muito lentamente no 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'
Essa consulta de exemplo pode reduzir bastante o tamanho dos dados. (Alguns objetos são reduzidos a Pontos e são descartados.)
Usar RAWSQL
Para usar RAWSQL com dados espaciais, você pode criar um campo calculado usando as funções RAWSQL_SPATIAL ou RAWSQLAGG_SPATIAL. Por exemplo:
RAWSQL_SPATIAL("Select %1.STIntersection(%2.STBuffer(200))",[school_geom], [park_geom])
Essa fórmula retorna dados espaciais exclusivos baseados na interseção dos dois valores.
RAWSQLAGG_SPATIAL("ST_ConvexHull(ST_Collect(%1))", [Geog])
RAWSQLAGG_SPATIAL("ST_ConcaveHull(ST_Collect(%1), %2, false)", [Geog], [ParameterValue])
Cada um desses retorna uma área delimitadora ao redor dos pontos de fornecidos. ConcaveHull é uma área de limite mínima baseada na precisão, sendo que nesta função é o valor do parâmetro.
Para obter mais informações sobre o uso de RAWSQL com dados espaciais, consulte Funções de passagem (RAWSQL). Para obter mais informações sobre como criar campos calculados, consulte Criar um campo calculado.
Observação: as funções espaciais RAWSQL não estão disponíveis quando conectadas ao Oracle.
Observação: é possível causar erros ao utilizar RAWSQL específicos de funções do PostGIS ao utilizar PostgreSQL + PostGIS.
Solucionar problemas de conexões espaciais
Problemas de desempenho
Ao trabalhar com colunas espaciais unidas, com um grande número de registros, as marcas duplicadas podem ocorrer. Isso geralmente resulta em baixo desempenho.
Para melhorar o desempenho, extraia a fonte de dados unida. Para obter mais informações, consulte Extrair seus dados.
Soluções e mensagens de erro do Microsoft SQL Server
Mensagem de erro:
Um erro ocorreu durante a comunicação com a fonte de dados do Microsoft SQL '<nome da fonte de dados>'.
Conexão ruim: o Tableau não se conectou à fonte de dados.
[Microsoft][ODBC Driver 13 para SQL Server][SQL Server]Conflito de tipo de operando: a geometria não é compatível com a geografia.
[Microsoft][ODBC Driver 13 para SQL Server][SQL Server]Não foi possível preparar uma ou mais instruções.
Solução:
Exporte os dados espaciais do Microsoft SQL Server para um Shapefile e conecte-os ao Tableau. As conexões de arquivo espacial passam por um processo de transformação de dados que suportam milhares de projeções.
Exporte os dados do Microsoft SQL Server transforme-os usando uma ferramenta GIS como QGIS ou ArcGIS. Em seguida, recarregue a tabela de volta ao Microsoft SQL Server.
Mensagem de erro:
Não foi possível concluir a ação
A operação espacial resultou em uma Geometria Mista ou Geografia Mista, que ainda não é aceita pelo Tableau.
A operação espacial resultou em uma Geometria Mista ou Geografia Mista, que ainda não é aceita pelo Tableau.
Solução:
Usar SQL personalizado para filtrar os dados. Para obter mais informações, consulte o exemplo de SQL personalizado Se você obter um erro sobre os tipo de dados mistos.
Mensagem de erro:
Ocorreu um erro durante a comunicação com a fonte de dados do Microsoft SQL Server '<nome da fonte de dados>'
Conexão ruim: o Tableau não se conectou à fonte de dados.
Não é possível executar uma função agregada em uma expressão que contém um agregado ou uma subconsulta.
Solução:
Desagregar medidas na visualização: selecione Análise e, em seguida, desmarque Agregar medidas.
Soluções e mensagens de erro do PostgreSQL + PostGIS, Oracle e Pivotal Greenplum + PostGIS
Mensagem de erro:
Ocorreu um erro durante a comunicação com a fonte de dados do PostgreSQL '<nome da fonte de dados>'
Conexão ruim: o Tableau não se conectou à fonte de dados.
Erro: operação em geometrias de SRID mistas;
Erro ao executar a consulta
<query> da <datasource>
ERRO: operação em geometrias de SRID mistas;
Erro ao executar a 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)
Solução:
Desagregar medidas na visualização: selecione Análise e, em seguida, desmarque Agregar medidas. Isso elimina a mensagem de erro e os dados em que o SRID não é compatível.
No PostgreSQL + PostGIS, é possível se conectar a uma tabela com SRIDs não compatíveis, mas a coluna Geometria será exibida como "Desconhecido".
Solução:
Exporte os dados espaciais do PostgreSQL + PostGIS para um Shapefile e conecte-os ao Tableau. As conexões de arquivo espacial passam por um processo de transformação de dados que suportam milhares de projeções.
Exporte os dados do PostgreSQL + PostGIS e transforme-os usando uma ferramenta GIS, como QGIS ou ArcGIS. Em seguida, recarregue a tabela de volta ao PostgreSQL + PostGIS.
Mensagem de erro:
ERRO: array size exceeds the maximum allowed (1073741823); ao executar a consulta"
SELECT ST_Collect(geom) FROM <data source>
Solução:
Reescreva o cálculo para ser mais eficiente. Consulte Práticas recomendadas para a criação de cálculos no Tableau ou Criar cálculos eficientes.
Exemplo - Criar um mapa com dados espaciais do Microsoft SQL Server
O exemplo a seguir demonstra como criar o mapa a seguir, mostrando escolas em até 600 metros dos parques em Seattle, Washington.
Este exemplo usa uma conexão do Microsoft SQL Server a um banco de dados chamado TestSpatial. As tabelas a seguir deste banco de dados são usadas:
- seattle_schools
- seattle_public_space
Etapa 1: conectar
Abra o Tableau Desktop e conecte-se ao Microsoft SQL Server.
Na página Fonte de dados, do painel esquerdo, arraste Novo SQL personalizado no canvas.
Digite ou cole uma consulta na caixa de diálogo Editar SQL personalizado exibida.
Para este exemplo, a consulta a seguir é usada:
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
Observação: este exemplo faz referência a um parâmetro chamado "Raio”. Para obter mais informações, consulte Usar parâmetros em uma consulta SQL personalizada.
O resultado desta consulta tem a seguinte aparência:
Etapa 2: criar mapa
Vá até uma nova planilha.
No painel Dados, clique duas vezes em um campo espacial.
Neste exemplo, Geog_School é usado. Ao clicar duas vezes com o botão do mouse, ele é automaticamente adicionado a Detalhe no cartão Marcas e uma visualização de mapa é criada.
No painel Dados, arraste um campo de dimensão para Rótulo no cartão Marcas. Neste exemplo, Nome da escola é usada.
Selecione Análise > Criar campo calculado.
No editor de cálculo aberto, faça o seguinte:
Nomeie o campo calculado. Neste exemplo, o campo calculado é chamado Interseção.
Insira uma formula RAWSQL. Este exemplo usa a seguinte fórmula:
RAWSQL_SPATIAL ("Select %1.STIntersection(%2)", [Geog_School], [Geog_Pub_Space])
Essa fórmula retorna dados espaciais exclusivos baseados na interseção das duas geometrias.
Ao terminar, clique em OK.
Selecione Análise e, em seguida, desmarque Agregar medidas.
No painel Dados, arraste o novo campo calculado (neste caso, Interseção) para uma nova camada na planilha.
O mapa é atualizado com uma nova camada de polígonos do campo Interseção. As marcas são formas espaciais exclusivas devido à fórmula RAWSQL.No painel Dados, arraste um campo de dimensão para Detalhes no cartão Marcas. Isso desagrega as marcas.
Neste exemplo, a dimensão PubSpaceName é usada.
No painel Dados, arraste o mesmo campo de dimensão para Cor no cartão Marcas.
Neste exemplo, cada espaço público agora recebe uma cor.
Formate o mapa. Para obter mais informações, consulte Personalizar a aparência do seu mapa.
Neste exemplo, a formatação a seguir é aplicada:
As marcas de buffer Escola (Geog_School) ficam cinza.
Os rótulos da marca de Nome da escola ficam brancos.
O estilo em segundo plano do mapa é definido para Escuro.
A camada de Ruas e estradas é mostrada no mapa em segundo plano.
O mapa agora está concluído.
Consulte também
Criar mapas do Tableau com arquivos espaciais
Conectar a uma consulta de SQL personalizado
Introdução a cálculos no Tableau