데이터베이스의 공간 데이터에 연결

데이터베이스에 저장된 공간 열을 사용하여 Tableau의 맵 비주얼리제이션을 작성할 수 있습니다.

Tableau는 다음과 같은 커넥터를 사용하여 공간 데이터에 대한 직접 연결을 지원합니다.

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

이러한 커넥터 사용에 대한 자세한 내용은 Microsoft SQL Server, PostgreSQL 또는 Pivotal Greenplum Database 커넥터 예제를 참조하십시오.

지원되는 공간 데이터 및 SRID

Microsoft SQL Server의 경우 지리 유형 공간 데이터만 지원됩니다.

PostgreSQL + PostGISPivotal Greenplum + PostGIS는 지리 및 기하 도형 유형 필드를 지원합니다. 기하 도형 필드는 공간 필드로 인식되도록 지리적 유형(예: POINT, LINESTRING) 및 SRID를 지정해야 합니다. 지리 필드는 인식되도록 지리적 유형을 지정해야 합니다.

참고: PostgreSQL + PostGIS에서는 혼합 기하 도형 유형(점, 라인 및 다각형)을 사용하여 테이블에 연결할 수 있지만 Tableau는 이를 동시에 렌더링하지 않습니다.

다음 SRID가 이러한 커넥터에서 지원됩니다.

  • NAD83(EPSG:4269)

  • ETRS89(EPSG:4258)

  • WGS84(EPSG:4326)

PostgreSQL + PostGIS에서 SRID는 기본적으로 항상 WGS84(EPSG:4326)입니다.

Tableau는 이러한 커넥터를 사용하여 라이브 연결과 추출 연결을 모두 지원합니다.

공간 열에 연결

  1. Tableau를 열고 데이터에 연결합니다. 지원되는 커넥터를 사용하여 데이터에 연결하는 방법에 대한 자세한 내용은 Microsoft SQL Server, PostgreSQL 또는 Pivotal Greenplum Database 커넥터 예제를 참조하십시오.
  2. 데이터 원본 페이지의 왼쪽 패널에 있는 테이블 아래에서 공간 데이터가 포함된 테이블을 캔버스에 끌어 놓습니다.

    공간 열에는 데이터베이스에 있는 것과 동일한 이름이 표시됩니다.

    이제 Tableau에서 공간 데이터를 사용하여 맵을 작성할 준비가 되었습니다. 공간 파일에서 맵을 만드는 방법에 대한 자세한 내용은 공간 데이터에서 맵 뷰 작성을 참조하십시오.

사용자 지정 SQL 및 RAWSQL을 사용하여 고급 공간 분석 수행

사용자 지정 SQL 쿼리에 연결

  1. Tableau를 열고 데이터베이스에 연결합니다.
  2. 데이터 원본 페이지의 왼쪽 패널에 있는 새 사용자 지정 SQL을 캔버스에 끌어 놓습니다.

  3. 사용자 지정 SQL 편집 대화 상자가 나타나면 쿼리를 입력하거나 붙여 넣습니다. 공간 데이터에 사용할 수 있는 사용자 지정 SQL의 예에 대해서는 사용자 지정 SQL 쿼리 예를 참조하십시오.

  4. 작업을 마쳤으면 확인을 클릭합니다.

자세한 내용은 사용자 지정 SQL 쿼리에 연결을 참조하십시오.

사용자 지정 SQL 쿼리 예

다음 쿼리는 예입니다. 사용자 지정 SQL 쿼리는 데이터 원본에 따라 달라진다는 것에 주의하십시오.

데이터에 두 요소 집합(예: School 및 Park)이 있으며 두 요소 집합이 상호 작용하는 위치를 표시하려는 경우:

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

이 예제 쿼리는 Park가 School에서 지정된 Radius 거리(미터) 내에 포함되는 모든 사례에 대해 행을 생성합니다. 쿼리 결과는 데이터 그리드에서 다음과 같습니다.

참고: 이 예에서는 "Radius"라는 매개 변수를 참조하십시오. 이 매개 변수는 거리(미터)를 측정하며 설정은 다음과 같습니다.

  • 데이터 유형: 실수
  • 현재 값: 600
  • 허용 가능한 값: 범위
  • 최소값: 100
  • 최대값 2,000
  • 단계 크기: 50

자세한 내용은 사용자 지정 SQL 쿼리에 매개 변수 사용을 참조하십시오.

특정 요소 주변의 데이터만 필요한 경우

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

이 예제 쿼리에서는 요소를 기준으로 1000까지로 데이터를 제한합니다. 반경은 첫 번째 예에 사용된 매개 변수와 같이 매개 변수일 수 있습니다.

또한 요소와 반경 대신 직사각형을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

참고: 다각형 요소의 진행 순서(시계 방향 및 시계 반대 방향)에 따라 얻는 요소 집합이 달라집니다. SQL Server 함수 ReorientObject()를 사용하여 진행 순서를 반전시킬 수 있습니다.

혼합된 데이터 유형과 관련된 오류가 발생하는 경우

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'

이 예제 쿼리에서는 Tableau가 Microsoft SQL Server 연결의 기하 도형 유형 공간 데이터를 렌더링할 수 없기 때문에 기하 도형 유형 공간 데이터가 필터링됩니다. 다른 공간 유형도 선택할 수 있습니다.

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'

이 예제 쿼리를 사용하면 데이터 크기가 크게 줄어들 수 있습니다. (일부 개체가 요소로 줄어들며 이러한 요소는 무시됩니다.)

RAWSQL 사용

공간 데이터와 함께 RAWSQL을 사용하려면 RAWSQL_SPATIAL 또는 RAWSQLAGG_SPATIAL 함수를 사용하여 계산된 필드를 만들 수 있습니다. 예를 들면 다음과 같습니다. 

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

이 수식은 두 값의 교집합에 기반하는 고유한 공간 데이터를 반환합니다.

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

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

이들 각각은 제공된 데이터 요소를 둘러싸는 경계 영역을 반환합니다. ConcaveHull은 이 함수의 매개 변수 값인 정밀도를 기반으로 하는 최소 경계 영역입니다.

공간 데이터와 함께 RAWSQL을 사용하는 것에 대한 자세한 내용은 통과 함수(RAWSQL)를 참조하십시오. 계산된 필드를 만드는 방법에 대한 자세한 내용은 계산된 필드 만들기를 참조하십시오.

참고: PostgreSQL + PostGIS를 사용할 때 PostGIS 함수와 관련된 RAWSQL을 사용하면 오류가 발생할 수 있습니다.

공간 연결 문제 해결

성능 문제

많은 수의 레코드가 있는 조인된 공간 열로 작업하는 경우 중복 마크가 발생할 수 있습니다. 이로 인해 성능이 저하될 수 있습니다.

성능을 향상시키려면 조인된 데이터 원본을 추출하십시오. 자세한 내용은 데이터 추출을 참조하십시오.

Microsoft SQL Server 오류 메시지 및 솔루션

공간 테이블이 지원되지 않는 공간 참조를 사용하는 경우

오류 메시지:

Microsoft SQL Server 데이터 원본 '<데이터 원본 이름>'와(과) 통신하는 동안 오류가 발생했습니다.
잘못된 연결: 데이터 원본에 연결할 수 없습니다.​
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]피연산자 유형 충돌: 기하 도형은 지리와 호환되지 않습니다.
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]문을 준비할 수 없습니다.​

해결 방법:

  • Microsoft SQL Server에서 공간 데이터를 모양 파일로 내보내고 Tableau에서 모양 파일에 연결합니다. 공간 파일 연결은 수천 개의 투영을 지원하는 데이터 변환 프로세스를 거칩니다.​

  • Microsoft SQL Server에서 데이터를 내보내고 QGIS 또는 ArcGIS 같은 GIS 도구를 사용하여 데이터를 변환합니다. 그런 다음 Microsoft SQL Server에서 테이블을 다시 로드합니다. ​​

공간 테이블에 여러 유형의 공간 개체가 포함된 경우

오류 메시지:​

동작을 완료할 수 없습니다.​
공간 작업에서 아직 지원되지 않는 MixedGeometry 또는 MixedGeography가 발생했습니다.​
공간 작업에서 아직 지원되지 않는 MixedGeometry 또는 MixedGeography가 발생했습니다.​

해결 방법:

사용자 지정 SQL을 사용하여 데이터를 필터링합니다. 자세한 내용은 혼합된 데이터 유형과 관련된 오류가 발생하는 경우 사용자 지정 SQL 예를 참조하십시오.

측정값이 비주얼리제이션에 집계되는 경우

오류 메시지:

Microsoft SQL Server 데이터 원본 '<데이터 원본 이름>'와(과) 통신하는 동안 오류가 발생했습니다.
잘못된 연결: 데이터 원본에 연결할 수 없습니다.
집계 또는 하위 쿼리가 포함된 식에 집계 함수를 수행할 수 없습니다.

해결 방법:

비주얼리제이션의 측정값 집계 해제: 분석을 선택하고 측정값 집계를 선택 취소합니다.

PostgreSQL + PostGIS 및 Pivotal Greenplum + PostGIS 오류 메시지 및 솔루션

혼합 SRID를 사용하고 SRID 중 하나가 지원되지 않는 경우

오류 메시지:

PostgreSQL 데이터 원본 '<데이터 원본 이름>'과(와) 통신하는 동안 오류가 발생했습니다.
잘못된 연결: 데이터 원본에 연결할 수 없습니다.
오류: 혼합 SRID 기하에 대한 작업;
쿼리를 실행하는 동안 오류가 발생했습니다.
<데이터 원본>의 <쿼리>
오류: 혼합 SRID 기하에 대한 작업;
쿼리를 실행하는 동안 오류가 발생했습니다.
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)

해결 방법:

비주얼리제이션의 측정값 집계 해제: 분석을 선택하고 측정값 집계를 선택 취소합니다. 이렇게 하면 SRID가 지원되지 않는 오류 메시지와 데이터가 제거됩니다.

공간 테이블이 지원되지 않는 공간 참조를 사용하는 경우

PostgreSQL + PostGIS에서는 지원되지 않는 SRID가 있는 테이블에 연결할 수 있지만 기하 도형 열은 "알 수 없음"으로 표시됩니다.

해결 방법:

  • PostgreSQL + PostGIS에서 공간 데이터를 모양 파일로 내보내고 Tableau에서 모양 파일에 연결합니다. 공간 파일 연결은 수천 개의 투영을 지원하는 데이터 변환 프로세스를 거칩니다.​

  • PostgreSQL + PostGIS에서 데이터를 내보내고 QGIS 또는 ArcGIS 같은 GIS 도구를 사용하여 데이터를 변환합니다. 그런 다음 PostgreSQL + PostGIS에서 테이블을 다시 로드합니다. ​​

쿼리 결과가 1GB 제한을 초과하는 경우

오류 메시지:

오류: 배열 크기가 허용된 최대 크기를 초과함(1073741823); 쿼리를 실행하는 동안 오류가 발생했습니다."
SELECT ST_Collect(geom) FROM <데이터 원본>

해결 방법:

보다 효율적인 계산이 되도록 계산을 다시 작성합니다. Tableau에서 계산을 만드는 최상의 방법 또는 효율적인 계산 만들기를 참조하십시오.

 

예 - Microsoft SQL Server 공간 데이터에서 맵 작성

다음 예제에서는 워싱턴주 시애틀에서 공원을 중심으로 600미터 이내에 있는 학교를 보여 주는 아래와 같은 맵을 만드는 방법에 대해 설명합니다.

이 예제에서는 TestSpatial이라는 데이터베이스에 대한 Microsoft SQL Server 연결을 사용합니다. 이 데이터베이스의 다음과 같은 테이블이 사용됩니다.

  • seattleelementaryschools
  • allseattleparks

1단계: 연결

  1. Tableau Desktop을 열고 Microsoft SQL Server에 연결합니다.

  2. 데이터 원본 페이지의 왼쪽 패널에 있는 새 사용자 지정 SQL을 캔버스에 끌어 놓습니다.

  3. 사용자 지정 SQL 편집 대화 상자가 나타나면 쿼리를 입력하거나 붙여 넣습니다.

    이 예에서 다음과 같은 쿼리를 사용합니다.

    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

    참고: 이 예에서는 "Radius"라는 매개 변수를 참조하십시오. 자세한 내용은 사용자 지정 SQL 쿼리에 매개 변수 사용을 참조하십시오.

    이 쿼리 결과는 다음과 같습니다.

2단계: 맵 작성

  1. 새 워크시트로 이동합니다.

  2. 데이터 패널에서 공간 필드를 두 번 클릭합니다.

    이 예에서는 school_geom을 사용합니다. 필드를 두 번 클릭하면 마크 카드의 세부 정보에 자동으로 추가되고 맵 뷰가 만들어집니다.

  3. 데이터 패널에서 차원을 마크 카드의 레이블로 끌어 놓습니다. 이 예에서는 School Name을 사용합니다.

  4. 행 선반에서 위도(생성됨)을 Ctrl-클릭(Mac의 경우 Command-클릭)하고 오른쪽에 끌어 놓습니다. 이렇게 하면 필드가 복사됩니다.

    첫 번째 맵 아래에 복제된 맵이 나타나고 두 개의 위도(생성됨) 탭으로 마크 카드가 업데이트됩니다. 상단 탭은 상단 맵용이고 하단 탭은 하단 맵용입니다.

  5. 마크 카드에서 하단 위도(생성됨) 탭을 클릭하고 데이터 패널로 다시 끌어 놓아 필드를 제거합니다.

    하단 맵이 비어 있는 맵으로 업데이트됩니다.

  6. 분석 > 계산된 필드 만들기를 선택합니다.

  7. 계산 에디터가 열리면 다음을 수행합니다.

    • 계산된 필드의 이름을 지정합니다. 이 예에서 계산된 필드의 이름은 Intersection입니다.

    • RAWSQL 수식을 입력합니다. 이 예에서는 다음 수식을 사용합니다.

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

      이 수식은 두 값의 교집합에 기반하는 고유한 공간 데이터를 반환합니다.

    • 작업을 마쳤으면 확인을 클릭합니다.

  8. 분석을 선택한 다음 측정값 집계를 선택 취소합니다.

  9. 데이터 패널에서 새 계산된 필드(이 경우 Intersection)를 마크 카드의 세부 정보에 끌어 놓습니다.

    하단 맵이 새 마크로 업데이트됩니다. 마크는 RAWSQL 수식으로 인해 고유한 공간 모양입니다.

  10. 데이터 패널에서 차원을 마크 카드의 세부 정보로 끌어 놓습니다. 이렇게 하면 마크의 집계가 해제됩니다.

    이 예에서 ParkName 차원을 사용합니다.

  11. 데이터 패널에서 동일한 차원을 마크 카드의 색상으로 끌어 놓습니다.

    이제 이 예의 각 공원에 색상이 할당됩니다.

  12. 행 선반에서 오른쪽에 있는 위도(생성됨) 필드를 마우스 오른쪽 단추로 클릭하고 이중 축을 선택합니다.

    이제 맵이 결합되고 데이터가 겹쳐집니다. 자세한 내용은 Tableau에서 이중 축(겹쳐진) 맵 만들기를 참조하십시오.

  13. 맵에 서식을 지정합니다. 자세한 내용은 맵 디자인 사용자 지정을 참조하십시오.

    이 예에서는 다음과 같은 서식을 적용합니다.

    • School Name 마크는 회색으로 표시됩니다.

    • School Name 마크 레이블은 주황색으로 표시됩니다.

    • 맵 배경 스타일은 어둡게로 설정됩니다.

    • Streets 및 Highways 계층은 배경 맵에 표시됩니다.

    이제 맵이 완성되었습니다.

참고 항목

공간 파일에서 Tableau 맵 만들기

사용자 지정 SQL 쿼리에 연결

통과 함수(RAWSQL)

Tableau 계산 시작하기

의견을 주셔서 감사합니다! 피드백을 제출하는 동안 오류가 발생했습니다. 다시 시도하거나 메시지를 보내십시오.