쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

예제: 지리 공간 쿼리

포커스 모드
예제: 지리 공간 쿼리 - Amazon Athena

이 주제의 예제에서는 GitHub에서 사용 가능한 샘플 데이터에서 두 개의 테이블을 생성하고 데이터를 기반으로 테이블을 쿼리합니다. 샘플 데이터는 단지 설명을 위한 것이며 정확하지 않을 수 있으며 다음 파일에 있습니다.

  • earthquakes.csv – 캘리포니아에서 발생한 지진이 수록되어 있습니다. 예제 earthquakes 테이블에서는 이 데이터의 필드를 사용합니다.

  • california-counties.jsonESRI 호환 GeoJSON 형식으로 캘리포니아 주의 카운티 데이터가 수록되어 있습니다. 데이터에는 AREA, PERIMETER, STATE, COUNTYNAME 같은 여러 필드가 포함되어 있지만 예제 counties 테이블에서는 Name(문자열) 및 BoundaryShape(이진) 두 개만 사용합니다.

    참고

    Athena는 com.esri.json.hadoop.EnclosedEsriJsonInputFormat을 사용하여 JSON 데이터를 지리 공간 이진 형식으로 변환합니다.

다음 코드 예제는 earthquakes라는 테이블을 생성합니다.

CREATE external TABLE earthquakes ( earthquake_date string, latitude double, longitude double, depth double, magnitude double, magtype string, mbstations string, gap string, distance string, rms string, source string, eventid string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/my-query-log/csv/';

다음 코드 예제는 counties라는 테이블을 생성합니다.

CREATE external TABLE IF NOT EXISTS counties ( Name string, BoundaryShape binary ) ROW FORMAT SERDE 'com.esri.hadoop.hive.serde.EsriJsonSerDe' STORED AS INPUTFORMAT 'com.esri.json.hadoop.EnclosedEsriJsonInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/my-query-log/json/';

다음 쿼리 예제는 countiesearthquake 테이블에 CROSS JOIN 함수를 사용합니다. 이 예제에서는 ST_CONTAINS를 사용하여 경계에 지진 장소(ST_POINT로 지정됨)가 포함된 카운티를 쿼리합니다. 쿼리는 해당 카운티를 이름별로 그룹화하고 개수별로 정렬한 다음 내림차순으로 반환합니다.

SELECT counties.name, COUNT(*) cnt FROM counties CROSS JOIN earthquakes WHERE ST_CONTAINS (ST_GeomFromLegacyBinary(counties.boundaryshape), ST_POINT(earthquakes.longitude, earthquakes.latitude)) GROUP BY counties.name ORDER BY cnt DESC

이 쿼리가 반환하는 값:

+------------------------+ | name | cnt | +------------------------+ | Kern | 36 | +------------------------+ | San Bernardino | 35 | +------------------------+ | Imperial | 28 | +------------------------+ | Inyo | 20 | +------------------------+ | Los Angeles | 18 | +------------------------+ | Riverside | 14 | +------------------------+ | Monterey | 14 | +------------------------+ | Santa Clara | 12 | +------------------------+ | San Benito | 11 | +------------------------+ | Fresno | 11 | +------------------------+ | San Diego | 7 | +------------------------+ | Santa Cruz | 5 | +------------------------+ | Ventura | 3 | +------------------------+ | San Luis Obispo | 3 | +------------------------+ | Orange | 2 | +------------------------+ | San Mateo | 1 | +------------------------+

추가 리소스

지리 공간 쿼리에 대한 추가 예제는 다음 블로그 게시물을 참조하세요.

이 페이지에서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.