H3 빠른 시작(Databricks SQL)

이 페이지에서는 다음 H3 지리 공간적 함수 빠른 시작 작업을 보여 줍니다.

  • 지리적 위치 데이터 세트를 Unity 카탈로그에 로드하는 방법입니다.
  • 위도 및 경도 열을 H3 셀 열로 변환하는 방법입니다.
  • 우편 번호 다각형 또는 다중다각형 WKT 열을 H3 셀 열로 변환하는 방법.
  • 라과디아 공항에서 맨해튼의 금융 지구로 픽업 및 하차 분석을 쿼리하는 방법.
  • 맵에서 H3 집계 수를 렌더링하는 방법입니다.

Notebook 및 쿼리 예제

Unity 카탈로그 데이터 준비

이 Notebook에서 다음을 수행합니다.

  • Databricks 파일 시스템에서 공용 택시 데이터 집합을 설정합니다.
  • NYC 우편 번호 데이터 세트를 설정합니다.

메모

NYC 우편 번호 셰이프 파일을 다운로드하려면 무료 NYC OpenData 계정이 필요합니다. 데이터 세트 페이지에 로그인하고, Shapefile을 다운로드하고, 설치 Notebook을 실행하기 전에 작업 영역에 업로드합니다. Notebook의 자동화된 다운로드 단계에는 인증이 필요합니다.

Unity 카탈로그 데이터 준비

노트북 가져오기

Databricks Runtime 11.3 LTS 이상을 사용하는 Databricks SQL 쿼리

쿼리 1: 기본 데이터가 설정되었는지 확인합니다. Notebook을 참조하세요.

use catalog geospatial_docs;
use database nyc_taxi;
show tables;
-- Verify initial data is setup (see instructions in setup notebook)
-- select format_number(count(*),0) as count from yellow_trip;
-- select * from nyc_zipcode;

쿼리 2: H3 NYC 우편 번호 - 해상도 12을 적용합니다.

use catalog geospatial_docs;
use database nyc_taxi;
-- drop table if exists nyc_zipcode_h3_12;
create table if not exists nyc_zipcode_h3_12
  cluster by (cell)
as (
  select
    explode(h3_polyfillash3(geom_wkt, 12)) as cell,
    zipcode,
    po_name,
    county
  from
    nyc_zipcode
);
-- optional: compact clustered data
optimize nyc_zipcode_h3_12;
select
  *
from
  nyc_zipcode_h3_12;

쿼리 3: H3 Taxi Trips - 해상도 12을 적용합니다.

use catalog geospatial_docs;
use database nyc_taxi;
-- drop table if exists yellow_trip_h3_12;
create table if not exists yellow_trip_h3_12
  cluster by (pickup_cell)
as (
  select
    h3_longlatash3(pickup_longitude, pickup_latitude, 12) as pickup_cell,
    h3_longlatash3(dropoff_longitude, dropoff_latitude, 12) as dropoff_cell,
    *
  except
    (
      rate_code_id,
      store_and_fwd_flag
    )
  from
    yellow_trip
);
-- optional: compact clustered data
-- optimize yellow_trip_h3_12;
select
  *
from
  yellow_trip_h3_12
 where pickup_cell is not null;

쿼리 4: H3 LGA 픽업 - 라과디아(LGA)에서 25M 픽업

use catalog geospatial_docs;
use database nyc_taxi;
create
or replace view lga_pickup_h3_12 as (
  select
    t.*
  except(cell),
    s.*
  from
    yellow_trip_h3_12 as s
    inner join nyc_zipcode_h3_12 as t on s.pickup_cell = t.cell
  where
    t.zipcode = '11371'
);
select
  format_number(count(*), 0) as count
from
  lga_pickup_h3_12;
-- select
  --   *
  -- from
  --   lga_pickup_h3_12;

쿼리 5: H3 금융 지구 하차 - 금융 지구에서 34M 총 하차

use catalog geospatial_docs;
use database nyc_taxi;
create
or replace view fd_dropoff_h3_12 as (
  select
    t.*
  except(cell),
    s.*
  from
    yellow_trip_h3_12 as s
    inner join nyc_zipcode_h3_12 as t on s.dropoff_cell = t.cell
  where
    t.zipcode in ('10004', '10005', '10006', '10007', '10038')
);
select
  format_number(count(*), 0) as count
from
  fd_dropoff_h3_12;
-- select * from fd_dropoff_h3_12;

쿼리 6: H3 LGA-FD - FD에서 827K 하차(LGA에서 픽업 포함)

use catalog geospatial_docs;
use database nyc_taxi;
create
or replace view lga_fd_dropoff_h3_12 as (
  select
    *
  from
    fd_dropoff_h3_12
  where
    pickup_cell in (
      select
        distinct pickup_cell
      from
        lga_pickup_h3_12
    )
);
select
  format_number(count(*), 0) as count
from
  lga_fd_dropoff_h3_12;
-- select * from lga_fd_dropoff_h3_12;

쿼리 7: 우편 번호별 LGA-FD - 우편 번호 + 가로 막대형 차트별 FD 하차 수

use catalog geospatial_docs;
use database nyc_taxi;
select
  zipcode,
  count(*) as count
from
  lga_fd_dropoff_h3_12
group by
  zipcode
order by
  zipcode;

쿼리 8: H3별 LGA-FD - H3 셀 별 FD 드롭 오프 숫자 세기 + 맵 마커 시각화

use catalog geospatial_docs;
use database nyc_taxi;
select
  zipcode,
  dropoff_cell,
  h3_centerasgeojson(dropoff_cell) :coordinates [0] as dropoff_centroid_x,
  h3_centerasgeojson(dropoff_cell) :coordinates [1] as dropoff_centroid_y,
  format_number(count(*), 0) as count_disp,
  count(*) as `count`
from
  lga_fd_dropoff_h3_12
group by
  zipcode,
  dropoff_cell
order by
  zipcode,
  `count` DESC;

LGA-FD H3 개수 1

LGA-FD H3 개수 2

Databricks Runtime 11.3 LTS 이상용 Notebook

빠른 시작-Python: H3 NYC Taxi LaGuardia에서 맨해튼까지

노트북 가져오기

Notebooks + kepler.gl 내에서 Spark Python 바인딩을 사용하는 Databricks SQL과 동일한 빠른 시작 구조입니다.

빠른 시작-Scala: H3 NYC Taxi LaGuardia에서 맨해튼까지

노트북 가져오기

Python을 셀을 통해 Notebooks + kepler.gl 내에서 Spark Scala 바인딩을 사용하는 Databricks SQL과 동일한 빠른 시작 구조입니다.

빠른 시작-SQL: H3 NYC Taxi LaGuardia에서 맨해튼까지

노트북 가져오기

Python을 셀을 통해 Notebooks + kepler.gl 내에서 Spark SQL 바인딩을 사용하는 Databricks SQL과 동일한 빠른 시작 구조입니다.