Обзор

В этом документе описывается, как создавать динамические геопространственные отчеты с помощью Places Insights и Looker Studio . Раскройте ценность ваших данных о местоположении, предоставив нетехническим заинтересованным сторонам возможность самостоятельно находить ответы на свои вопросы. Это руководство покажет вам, как превратить статические отчеты в интерактивные инструменты в стиле тепловых карт для анализа рынка, без необходимости писать SQL-запросы для каждого запроса. Обеспечьте доступ к сложным данным о местоположении, сократив разрыв между проектированием данных и бизнес-аналитикой.
Применение этой архитектурной модели открывает ряд ключевых преимуществ:
- Визуальное представление данных: преобразует данные Places Insights в интерактивные карты и диаграммы, которые мгновенно отображают пространственную плотность и тенденции.
- Упрощенное исследование данных без SQL: позволяет членам команды, таким как аналитики рынка или специалисты по планированию недвижимости, динамически фильтровать данные с использованием предопределенных параметров (например, изменяя «Город» или «Время суток» с помощью выпадающих списков). Они могут исследовать данные, не написав ни одной строки SQL-кода.
- Бесперебойное взаимодействие: стандартные функции обмена данными в Looker Studio позволяют безопасно распространять эти интерактивные аналитические данные.
Рабочий процесс решения
Предложенный рабочий процесс позволяет создать высокопроизводительную архитектуру для формирования отчетов. Он переходит от статической базовой модели к полностью динамическому приложению, обеспечивая корректность данных до усложнения системы.
Предварительные требования
Прежде чем начать, выполните следующие инструкции по настройке Places Insights. Вам потребуется доступ к 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;
Примечание о пространственной агрегации
В этом запросе используется функция из инструментария CARTO Analytics Toolbox ( carto-os ), доступного в Google Cloud BigQuery. Функция H3_FROMGEOGPOINT преобразует конкретные точки местоположения в ячейки H3 — систему, которая делит мир на гексагональные ячейки сетки.
Мы используем это преобразование, потому что функция «Заполненная карта» в Looker Studio требует использования многоугольников (фигур) для отображения цветов. Преобразуя точки в шестиугольные фигуры, мы можем визуализировать плотность предприятий в определенной области, вместо того чтобы отображать тысячи перекрывающихся точек.
Примечание о пороге агрегации
Для всех запросов Places Insights требуется предложение WITH AGGREGATION_THRESHOLD . Эта защита конфиденциальности гарантирует, что данные будут возвращены только в том случае, если агрегированное значение равно 5 или выше.
В контексте данной визуализации, если ячейка сетки H3 содержит менее 5 ресторанов, эта ячейка полностью исключается из результирующего набора и будет отображаться пустой на вашей карте.
Для реализации этого в Looker Studio:
- Создайте новый пустой отчет .
- Выберите BigQuery в качестве коннектора данных.
- В меню слева выберите пункт «Пользовательский запрос» и укажите идентификатор вашего платежного проекта .
- Вставьте приведенный выше статический базовый запрос в редактор.
- Снимите флажки «Использовать устаревший SQL» , «Включить диапазон дат» и «Включить параметры адреса электронной почты пользователя» .
- Нажмите «Добавить» .
1.2 Настройка геопространственной визуализации
После подключения данных настройте Looker Studio для корректного распознавания данных о границах H3:
- Добавьте визуализацию «Заполненная карта» на холст отчета, выбрав ее в меню «Добавить диаграмму» .
- Убедитесь, что для поля
h3_geo, содержащего геометрию полигона, установлен тип данных «Геопространственные данные».- Щелкните значок «Редактировать источник данных» (карандаш) рядом с именем вашего подключения.
- Если для параметра
h3_geoустановлено значение Text (ABC), воспользуйтесь выпадающим меню, чтобы выбрать Geo > Geospatial . - Нажмите «Готово» .
- Сопоставьте поле
h3_indexс полем Location (выступающим в качестве уникального идентификатора). - Сопоставьте поле
h3_geoс геопространственным полем (использующим геометрию полигона). - Сопоставьте поле
restaurant_countс метрикой цвета .
Это позволит отобразить карту плотности ресторанов по ячейкам H3. Более тёмно-синий цвет (цвет по умолчанию) указывает на ячейку с большим количеством ресторанов.

Шаг 2: Реализация динамических параметров
Для повышения интерактивности отчета мы добавим в него элементы управления, позволяющие пользователю выбирать из следующих вариантов:
- Местоположение: Определяет город, на котором сосредоточено внимание в отчете.
- День недели: Фильтрует заведения по дню их работы, используя запись
regular_opening_hoursв схеме. - Час дня: Фильтрует места на основе их часов работы, сравнивая данные с полями
start_timeиend_time.
Для этого вам потребуется передавать выбранные пользователем параметры непосредственно в модифицированный запрос Places Insights во время выполнения. В редакторе источников данных Looker Studio необходимо явно определить эти параметры как типизированные переменные.
В Looker Studio выберите меню «Ресурсы» , затем нажмите «Управление добавленными источниками данных ». В появившейся панели выберите EDIT напротив источника данных BigQuery Custom SQL, который мы добавили ранее.
В окне «Редактировать соединение» выберите «ДОБАВИТЬ ПАРАМЕТР» . Мы добавим три параметра со значениями, указанными ниже.
| Имя параметра | Тип данных | Допустимые значения | Список значений (должен точно соответствовать данным в базе данных) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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-часовой формат времени).
После того как вы настроили и сохранили все три параметра, измените ваше пользовательское SQL-подключение BigQuery, чтобы оно ссылалось на эти переменные с использованием синтаксиса @ .
Это делается путем нажатия кнопки «Редактировать подключение» и вставки измененного запроса, приведенного ниже:
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 , которые соответствуют именам параметров, которые мы только что настроили.
Вернитесь к холсту отчета, чтобы отобразить эти параметры для конечного пользователя:
- Добавьте в свой отчет три элемента управления в виде выпадающих списков .
- Для каждого элемента управления установите поле «Управление» в соответствии с созданными вами параметрами:
- Контроль 1:
p_locality - Контрольная группа 2:
p_day_of_week - Контрольная точка 3:
p_hour_of_day
- Контроль 1:
Итоговый отчет должен выглядеть следующим образом. Изменение значения в одном из выпадающих списков запустит в Looker Studio запрос на получение необходимых данных из Places Insights перед визуализацией на карте.

Шаг 3: Поделитесь результатами
Для публикации отчета используйте встроенный в Looker Studio инструмент обмена . Это позволит пользователям динамически обновлять визуализацию в зависимости от параметров, выбранных ими из выпадающих списков.
Заключение
Эта модель создает масштабируемый интерактивный инструмент отчетности, который использует вычислительные мощности BigQuery для предоставления агрегированных данных Places Insights в Looker Studio. Такая архитектура позволяет избежать проблем, связанных с визуализацией огромных массивов необработанных данных, и предоставляет конечным пользователям возможность изучать данные по различным параметрам, таким как время, местоположение и тип бизнеса, практически в режиме реального времени. Это мощный инструмент, предоставляющий нетехническим заинтересованным сторонам возможность гибко изучать данные.
Следующие шаги
Изучите другие варианты динамических отчетов, параметризуя различные части схемы Places Insights:
- Динамический анализ конкурентов: создайте параметр для названий
brand, позволяющий пользователям мгновенно переключать тепловую карту между различными конкурентами, чтобы увидеть их относительную насыщенность на рынке. См. раздел «О данных Places Insights» для получения информации о доступности данных по брендам. - Интерактивный выбор местоположения: добавьте параметры для
price_level(например, «Умеренный» или «Дорогой») и минимальногоrating, чтобы позволить командам по недвижимости динамически фильтровать районы, соответствующие определенным демографическим профилям. - Пользовательские зоны охвата: Вместо фильтрации по названию города, позвольте пользователям определять собственные зоны исследования.
- На основе радиуса: создайте три числовых параметра: p_latitude, p_longitude и p_radius_meters. Координаты можно получить из API платформы Google Maps, включая API геокодирования. В вашем запросе передайте эти данные в функцию ST_DWITHIN:
-
ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
-
- Использование полигонов: Для сложных пользовательских фигур (например, территорий продаж) пользователям сложно вводить текст с геометрическими данными. Вместо этого создайте в BigQuery таблицу поиска, содержащую геометрические данные ваших фигур и понятное имя (например, «Зона А»). Создайте текстовый параметр
p_zone_nameв Looker Studio, чтобы пользователи могли выбирать зону, и используйте подзапрос для получения геометрии для функцииST_CONTAINS.
- На основе радиуса: создайте три числовых параметра: p_latitude, p_longitude и p_radius_meters. Координаты можно получить из API платформы Google Maps, включая API геокодирования. В вашем запросе передайте эти данные в функцию ST_DWITHIN:
Авторы
- Дэвид Шайнгартен | Инженер по связям с разработчиками
- Хенрик Вэлв | Инженер DevX