개요

이 문서에서는 장소 통계 및 Looker Studio를 사용하여 동적인 지리 공간 보고서를 빌드하는 방법을 설명합니다. 기술적 배경이 없는 이해관계자가 직접 질문에 답할 수 있도록 지원하여 위치 데이터의 가치를 창출하세요. 이 가이드에서는 요청마다 SQL을 작성하지 않고도 정적 보고서를 시장 분석을 위한 대화형 히트맵 스타일 도구로 전환하는 방법을 보여줍니다. 복잡한 위치 데이터에 대한 액세스를 지원하여 데이터 엔지니어링과 비즈니스 인텔리전스 간의 격차를 해소합니다.
이 아키텍처 패턴을 채택하면 다음과 같은 여러 주요 이점을 누릴 수 있습니다.
- 시각적 데이터 표현: 장소 통계 데이터를 공간 밀도와 추세를 즉시 전달하는 대화형 지도와 차트로 변환합니다.
- SQL 없이 간소화된 탐색: 시장 분석가 또는 부동산 기획자와 같은 팀 구성원이 미리 정의된 매개변수를 사용하여 데이터를 동적으로 필터링할 수 있습니다 (예: 드롭다운을 사용하여 '도시' 또는 '시간대' 변경). SQL을 한 줄도 작성하지 않고 데이터를 탐색할 수 있습니다.
- 원활한 공동작업: 표준 Looker Studio 공유 기능을 사용하면 이러한 대화형 통계를 안전하게 배포할 수 있습니다.
솔루션 워크플로
다음 워크플로는 성능이 우수한 보고 아키텍처를 설정합니다. 정적 기준에서 완전한 동적 애플리케이션으로 이동하여 복잡성을 도입하기 전에 데이터 정확성을 보장합니다.
기본 요건
시작하기 전에 이 안내에 따라 장소 통계를 설정하세요. 무료 도구인 Looker Studio에 대한 액세스 권한이 필요합니다.
1단계: 정적 지리공간 기준 설정
상호작용을 도입하기 전에 기본 쿼리를 설정하고 Looker Studio에서 올바르게 렌더링되는지 확인합니다. Places Insights 및 BigQuery의 지리 공간 기능을 사용하여 H3 색인 시스템을 통해 데이터를 육각형 그리드로 집계합니다. 이렇게 하면 시각화를 위해 Looker Studio의 채워진 지도 카트 유형과 함께 사용할 수 있는 쿼리 출력이 생성됩니다.
1.1 데이터 연결
다음 정적 쿼리를 사용하여 초기 연결을 설정합니다. 데이터 파이프라인을 검증하기 위해 고정된 위치 (런던)와 카테고리 (레스토랑)를 타겟팅합니다.
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
-- Note: Change 'gb' to your target country code (e.g., 'us')
`places_insights___gb.places`
WHERE
'London' IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
공간 집계 관련 참고사항
이 쿼리는 BigQuery에서 사용할 수 있는 공개 CARTO Spatial Extension (carto-os)을 사용합니다. H3_FROMGEOGPOINT 함수는 특정 위치 포인트를 H3 셀로 변환합니다. H3 셀은 세계를 육각형 그리드 셀로 나누는 시스템입니다.
Looker Studio의 채워진 지도에서 색상을 렌더링하려면 다각형(모양)이 필요하므로 이 변환이 사용됩니다. 포인트를 육각형 모양으로 변환하면 겹치는 점을 수천 개 표시하는 대신 특정 지역의 비즈니스 밀도를 시각화할 수 있습니다.
집계 기준 참고사항
모든 장소 통계 쿼리에는 WITH AGGREGATION_THRESHOLD 절이 필요합니다.
이 개인 정보 보호 기능을 사용하면 집계된 수가 5 이상인 경우에만 데이터가 반환됩니다.
이 시각화의 맥락에서 H3 그리드 셀에 레스토랑이 5개 미만으로 포함된 경우 해당 셀은 결과 집합에서 완전히 생략되며 지도에 빈 상태로 표시됩니다.
Looker Studio에서 이를 구현하려면 다음 단계를 따르세요.
- 새 빈 보고서를 만듭니다.
- 데이터 커넥터로 BigQuery를 선택합니다.
- 왼쪽 메뉴에서 맞춤 쿼리를 선택하고 결제 프로젝트 ID를 선택합니다.
- 위의 정적 기본 쿼리를 편집기에 붙여넣습니다.
- Legacy SQL 사용, 기간 사용 설정, 조회자 이메일 주소 사용 설정 매개변수를 선택 해제합니다.
- 추가를 클릭합니다.
1.2 지리 공간 시각화 구성
데이터가 연결되면 Looker Studio에서 H3 경계 데이터를 올바르게 인식하도록 구성합니다.
- 차트 추가 메뉴에서 채워진 지도 시각화를 보고서 캔버스에 추가합니다.
- 다각형 지오메트리가 포함된
h3_geo필드가 지리정보 데이터 유형으로 설정되어 있는지 확인합니다.- 연결 이름 옆에 있는 데이터 소스 수정 (연필) 아이콘을 클릭합니다.
h3_geo이 텍스트 (ABC)로 설정된 경우 드롭다운 메뉴를 사용하여 지리 > 지리공간을 선택합니다.- 완료를 클릭합니다.
h3_index필드를 위치 (고유 식별자 역할을 함)에 매핑합니다.h3_geo필드를 지리정보 필드 (다각형 지오메트리 역할을 함)에 매핑합니다.restaurant_count필드를 색상 측정항목에 매핑합니다.
이렇게 하면 H3 셀별 음식점 밀도의 지도가 렌더링됩니다. 어두운 파란색(기본 색상 옵션)은 식당 수가 많은 셀을 나타냅니다.

2단계: 동적 매개변수 구현
보고서를 대화형으로 만들기 위해 사용자가 다음 옵션 중에서 선택할 수 있는 컨트롤이 보고서에 추가됩니다.
- 지역: 보고서에서 중점을 두는 도시를 제어합니다.
- 요일: 스키마의
regular_opening_hours레코드를 활용하여 영업일을 기준으로 장소를 필터링합니다. - 시간대:
start_time및end_time필드와 비교하여 영업시간을 기준으로 장소를 필터링합니다.
이렇게 하려면 런타임에 수정된 Places Insights 쿼리에 사용자가 선택한 매개변수를 직접 전달합니다. Looker Studio의 데이터 소스 편집기에서 이러한 매개변수를 유형이 지정된 변수로 명시적으로 정의해야 합니다.
Looker Studio에서 리소스 메뉴를 선택한 다음 추가된 데이터 소스 관리를 클릭합니다. 표시되는 패널에서 앞에서 추가한 BigQuery 맞춤 SQL 데이터 소스에 대해 EDIT를 선택합니다.
'연결 수정' 창에서 매개변수 추가를 선택합니다. 아래 값을 사용하여 매개변수 3개를 추가합니다.
| 매개변수 이름 | 데이터 유형 | 허용된 값 | 값 목록 (DB와 정확히 일치해야 함) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
p_locality |
텍스트 | 값 목록 |
|
||||||||||||||||
p_day_of_week |
텍스트 | 값 목록 |
|
||||||||||||||||
p_hour_of_day |
텍스트 | 값 목록 |
|
p_hour_of_day 매개변수의 구성 예시

p_hour_of_day 매개변수의 경우 Value 열에 주의해야 합니다.
SQL 쿼리에서 CAST(@p_hour_of_day AS TIME)를 사용하므로 Looker Studio에서 전달되는 값은 엄격한 HH:MM:SS 형식 (24시간 시계)이어야 합니다.
세 매개변수를 모두 설정하고 저장한 후 BigQuery 맞춤 SQL 연결을 수정하여 @ 구문을 사용하여 이러한 변수를 참조합니다.
연결 수정을 클릭하고 아래 수정된 쿼리를 붙여넣으면 됩니다.
SELECT
h3_index,
`carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
restaurant_count
FROM (
SELECT WITH AGGREGATION_THRESHOLD
`carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
COUNT(*) AS restaurant_count
FROM
`places_insights___gb.places`
WHERE
-- Dynamic locality filter based on parameter
@p_locality IN UNNEST(locality_names)
AND 'restaurant' IN UNNEST(types)
AND business_status = 'OPERATIONAL'
AND EXISTS (
SELECT 1
FROM UNNEST(
CASE @p_day_of_week
WHEN 'monday' THEN regular_opening_hours.monday
WHEN 'tuesday' THEN regular_opening_hours.tuesday
WHEN 'wednesday' THEN regular_opening_hours.wednesday
WHEN 'thursday' THEN regular_opening_hours.thursday
WHEN 'friday' THEN regular_opening_hours.friday
WHEN 'saturday' THEN regular_opening_hours.saturday
WHEN 'sunday' THEN regular_opening_hours.sunday
END
) AS hours
WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
)
GROUP BY
h3_index
)
ORDER BY
restaurant_count DESC;
'다시 연결'을 클릭하여 수정한 내용을 저장합니다. 수정된 쿼리에서 방금 설정한 매개변수 이름과 관련된 @p_hour_of_day와 같은 새 변수를 확인합니다.
보고서 캔버스로 돌아가 최종 사용자에게 이러한 매개변수를 표시합니다.
- 보고서에 드롭다운 목록 컨트롤 3개를 추가합니다.
- 각 컨트롤에 대해 새로 만든 매개변수에 해당하는 컨트롤 필드를 설정합니다.
- 컨트롤 1:
p_locality - 제어 2:
p_day_of_week - 관리 3:
p_hour_of_day
- 컨트롤 1:
최종 보고서는 다음과 같습니다. 드롭다운 컨트롤 중 하나의 값을 변경하면 Looker Studio에서 지도에 시각화하기 전에 Places Insights에서 요청된 데이터를 가져옵니다.

3단계: 결과 공유
Looker Studio에 내장된 공유 도구를 사용하여 보고서를 공유합니다. 이를 통해 시청자는 드롭다운 목록에서 선택한 매개변수를 기반으로 시각화 요소를 동적으로 업데이트할 수 있습니다.
결론
이 패턴은 BigQuery의 컴퓨팅 성능을 활용하여 집계된 장소 통계 데이터를 Looker Studio에 제공하는 확장 가능한 대화형 보고 도구를 만듭니다. 이 아키텍처는 대규모 원시 데이터 세트를 시각화하려고 할 때 발생하는 문제를 방지하고 최종 사용자가 시간, 위치, 비즈니스 유형과 같은 다양한 측정기준에서 데이터를 거의 실시간으로 탐색할 수 있는 유연성을 제공합니다. 이는 비기술적 이해관계자가 데이터를 유연하게 탐색할 수 있도록 지원하는 강력한 도구입니다.
다음 단계
장소 통계 스키마의 여러 부분을 매개변수화하여 다양한 동적 보고서를 살펴봅니다.
- 동적 경쟁업체 분석: 사용자가 다양한 경쟁업체 간에 히트맵을 즉시 전환하여 시장에서의 상대적 포화도를 확인할 수 있도록
brand이름의 매개변수를 만듭니다. 브랜드 데이터 사용 가능 여부는 장소 통계 데이터 정보를 참고하세요. - 대화형 사이트 선택:
price_level(예: '보통'과 '비쌈') 및 최소rating를 제공하여 부동산 팀이 특정 인구통계 프로필과 일치하는 지역을 동적으로 필터링할 수 있습니다. - 맞춤 유역: 도시 이름으로 필터링하는 대신 사용자가 맞춤 연구 지역을 정의할 수 있도록 합니다.
- 반경 기반: p_latitude, p_longitude, p_radius_meters의 세 가지 숫자 매개변수를 만듭니다. 좌표는 지오코딩 API를 비롯한 Google Maps Platform API에서 가져올 수 있습니다. 쿼리에서 다음을 ST_DWITHIN 함수에 삽입합니다.
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
- 다각형 기반: 복잡한 맞춤 도형 (예: 영업 지역)의 경우 사용자가 기하학 텍스트를 쉽게 입력할 수 없습니다. 대신 모양 지오메트리와 친숙한 이름 (예:
'Zone A')를 사용합니다. Looker Studio에서 텍스트 매개변수
p_zone_name를 만들어 사용자가 구역을 선택할 수 있도록 하고 하위 쿼리를 사용하여ST_CONTAINS함수의 지오메트리를 가져옵니다.
- 반경 기반: p_latitude, p_longitude, p_radius_meters의 세 가지 숫자 매개변수를 만듭니다. 좌표는 지오코딩 API를 비롯한 Google Maps Platform API에서 가져올 수 있습니다. 쿼리에서 다음을 ST_DWITHIN 함수에 삽입합니다.
참여자
- David Szajngarten | 개발자 관계 엔지니어
- 헨리크 밸브 | DevX 엔지니어