H3별 관심 장소 수 쿼리

PLACES_COUNT_PER_H3 함수는 관심 장소 (POI) 데이터를 지정된 해상도의 표준화된 H3 공간 그리드 셀로 집계합니다. 이 함수는 지역 밀도 분석, 경쟁 매핑, 육각형 등치선 히트맵 생성에 권장되는 경로입니다.

PLACES_COUNT_PER_H3 함수를 호출하려면 함수가 테이블을 반환하므로 SQL FROM 절을 사용합니다.

문법 및 매개변수

SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_H3`(
  filters
)

매개변수

  • PROJECT_NAME: Google Cloud 프로젝트 이름입니다. 프로젝트 이름을 지정하지 않으면 쿼리가 기본적으로 활성 프로젝트로 지정됩니다.
  • LINKED_DATASET_NAME: 구독한 장소 통계 데이터 세트의 이름입니다 (예: places_insights___us).
  • filters(JSON): 키-값 필터 매개변수가 포함된 JSON_OBJECT를 사용하여 구성된 JSON 객체입니다.

필수 JSON 필터

  • geography(GEOGRAPHY): 색인을 생성할 경계 검색 영역 (점, 선 문자열 또는 다각형)입니다.
  • h3_resolution (INTEGER): H3 셀 해상도 수준입니다 (지원되는 값 범위는 0~11).

선택적 JSON 필터

  • 각 셀 내에서 계산된 장소를 필터링하는 types, business_status, price_level, min_rating과 같은 추가 매개변수 필터 매개변수의 전체 목록을 참조하세요.

출력 테이블 스키마

이 함수는 대상 도형과 교차하는 H3 셀 색인당 하나의 행이 있는 BigQuery 테이블을 반환합니다.

열 이름 데이터 유형 설명
h3_cell_index STRING 셀의 고유한 H3 색인 식별자입니다.
geography GEOGRAPHY H3 셀의 물리적 경계를 나타내는 다각형입니다.
count INTEGER 이 특정 H3 셀 내에서 일치하는 운영 장소의 정확한 총 개수입니다. 일치하는 장소가 없으면 0입니다.
sample_place_ids ARRAY<STRING> 이 셀 내에 있는 최대 250개의 장소 ID 배열로, Places API를 사용하여 직접 정답 쿼리를 사용 설정합니다.

PLACES_COUNT_PER_H3을 사용하여 리전별 관심 장소 밀도 집계

이 함수는 필터에 지정된 경계 지리 정보를 처리하고, 타겟 해상도에서 교차하는 모든 H3 육각형을 식별하며, 각 육각형의 정확한 장소 수와 장소 ID를 반환합니다.

예: 뉴욕주의 휠체어 이용 가능 식료품점 및 편의점 수 계산

이 쿼리는 H3 해상도 수준 8을 사용하여 뉴욕주에서 운영 중인 휠체어 이용 가능 편의점과 식료품점을 집계합니다. 뉴욕주의 경계 도형은 bigquery-public-data.geo_us_boundaries.states 공개 데이터 세트에서 동적으로 쿼리됩니다.

-- Query POI count per H3 cell intersecting the New York State polygon boundary
SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', (
        -- Dynamically retrieve the boundary geography for New York State
        SELECT state_geom
        FROM `bigquery-public-data.geo_us_boundaries.states`
        WHERE state = 'NY'
        LIMIT 1
      ),
      'types', ['grocery_store', 'convenience_store'],
      'business_status', ['OPERATIONAL'],
      'h3_resolution', 8,
      'wheelchair_accessible_entrance', TRUE
  )
)
ORDER BY count DESC;

대답 형식

쿼리는 셀을 공간 수에 직접 매핑하는 행별 테이블을 생성합니다.

H3 쿼리의 BigQuery 결과

예: 브랜드별로 필터링된 H3 셀당 장소 수 계산

다음 예에서는 brand_ids 필터를 사용하여 스타벅스 "1413758728321880760" 및 던킨 "1314981297593671295"과 같은 특정 브랜드의 장소 수와 샘플 장소 ID를 검색합니다.

DECLARE geo GEOGRAPHY;

-- Get the geography for New York City.
SET geo = (SELECT geometry FROM `bigquery-public-data.overture_maps.division_area`
  WHERE country = 'US' AND subtype = 'locality' AND names.primary = 'New York'  LIMIT 1);

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', geo,
      'h3_resolution', 8,
      'brand_ids', ["1413758728321880760", "1314981297593671295"],
      'business_status', ['OPERATIONAL']
    )
);

Looker Studio에서 H3 결과를 동적으로 시각화하기

다음 이미지는 Looker Studio에서 등치 지역도로 표시된 PLACES_COUNT_PER_H3의 데이터를 보여줍니다. H3 셀이 어두울수록 결과의 집중도가 높습니다.

뉴욕에서 휠체어 이용이 가능한 편의점과 식료품점을 필터링하는 채워진 지도입니다.

데이터를 Looker Studio로 가져오려면 다음 단계를 따르세요.

  1. BigQuery에서 위의 함수를 실행하여 결과를 생성합니다.
  2. BigQuery 결과 창에서 다음에서 열기 -> Looker Studio를 클릭합니다. 결과는 Looker Studio로 자동으로 가져옵니다.
  3. Looker Studio는 기본 보고서 페이지를 만들고 결과의 제목, 표, 막대 그래프로 초기화합니다.

    Looker Studio의 기본 보고서

  4. 페이지의 모든 항목을 선택하고 삭제합니다.

  5. 삽입 -> 음영 지도를 클릭하여 보고서에 음영 지도를 추가합니다.

  6. 차트 유형 -> 설정에서 아래와 같이 필드를 구성합니다.

    Looker Studio의 히트맵 설정

  7. 채워진 지도가 위와 같이 표시됩니다. 원하는 경우 차트 유형 -> 스타일을 선택하여 지도의 모양을 추가로 구성할 수 있습니다.

Places Insights 결과를 시각화하는 방법에 관한 자세한 내용은 쿼리 결과 시각화를 참고하세요.

예시: 특정 필터를 사용하여 H3 셀별로 이전 관심 장소 수 쿼리

이 예시에서는 snapshot_date 필터를 사용하여 특정 스냅샷 월의 H3 공간 그리드에서 이전 관심 장소 수를 쿼리하는 방법을 보여줍니다. 위치 주변의 버퍼를 사용하여 지리적 검색 영역을 정의하고, 특정 regular_opening_hours와 함께 max_ev_charge_connector_count를 사용하여 EV 충전 커넥터 수에 대한 추가 기준을 적용합니다.

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
    'geography', ST_BUFFER(ST_GEOGPOINT(-74.0060, 40.7128), 5000), -- 5km radius around NYC
    'h3_resolution', 8,
    'business_status', ['OPERATIONAL'],
    'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM)
    'max_ev_charge_connector_count', 3, -- Maximum connector count
    'regular_opening_hours', JSON_OBJECT(
      'monday', [JSON_OBJECT('start_time', '09:00', 'end_time', '12:00')]
    )
  )
);