Обзор

В этом документе описывается, как создавать динамические геопространственные отчеты с помощью Places Insights и Студии данных. Раскройте потенциал данных о местоположении, предоставив заинтересованным лицам, не имеющим технических знаний, возможность самостоятельно находить ответы на свои вопросы. В этом руководстве рассказывается, как превратить статические отчеты в интерактивные инструменты анализа рынка в виде тепловых карт, не создавая SQL-запросы для каждого отчета. Предоставьте доступ к сложным данным о местоположении, чтобы устранить разрыв между инженерией данных и бизнес-аналитикой.
Применение этого архитектурного шаблона дает несколько ключевых преимуществ:
- Визуальное представление данных. Преобразуйте данные Places Insights в интерактивные карты и диаграммы, которые сразу же показывают плотность и тенденции.
- Упрощенный анализ без SQL. Позволяет сотрудникам, например рыночным аналитикам или планировщикам недвижимости, динамически фильтровать данные с помощью предопределенных параметров (например, менять город или время суток с помощью раскрывающихся списков). Они могут исследовать данные, не написав ни одной строки SQL.
- Удобная совместная работа. Стандартные функции Студии данных позволяют безопасно делиться интерактивными отчетами.
Рабочий процесс решения
Ниже описан рабочий процесс, который позволяет создать эффективную архитектуру отчетов. Оно переходит от статического базового уровня к полностью динамическому приложению, обеспечивая правильность данных перед введением сложности.
Требования
Прежде чем начать, следуйте этим инструкциям, чтобы настроить Places Insights. Вам понадобится доступ к Студии данных – бесплатному инструменту.
Шаг 1. Создайте статическую геопространственную основу
Прежде чем добавлять интерактивность, создайте базовый запрос и убедитесь, что он правильно отображается в Студии данных. Используйте Places Insights и геопространственные возможности BigQuery, чтобы агрегировать данные в шестиугольные сетки с помощью системы индексирования H3. В результате вы получите выходные данные запроса, которые можно использовать для визуализации на картограмме в Студии данных.
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 (carto-os), который находится в открытом доступе в Google Cloud BigQuery. Функция H3_FROMGEOGPOINT преобразует определенные точки местоположения в ячейки H3 – систему, которая делит мир на шестиугольные ячейки сетки.
Это преобразование необходимо, поскольку для отображения цветов на картограмме в Студии данных требуются многоугольники (фигуры). Преобразуя точки в шестиугольные фигуры, мы можем визуализировать плотность предприятий в определенной области, а не наносить на график тысячи перекрывающихся точек.
Примечание о пороге агрегирования
Все запросы к Places Insights API должны содержать предложение WITH AGGREGATION_THRESHOLD.
Эта защита конфиденциальности гарантирует, что данные возвращаются, только если агрегированное количество равно 5 или больше.
В контексте этой визуализации, если ячейка сетки H3 содержит менее 5 ресторанов, эта ячейка полностью исключается из набора результатов и будет отображаться на карте пустой.
Чтобы реализовать это в Студии данных, выполните следующие действия:
- Создайте новый пустой отчет.
- Выберите BigQuery в качестве коннектора данных.
- В меню слева выберите CUSTOM QUERY (Специальный запрос) и укажите Project ID (Идентификатор проекта), связанный с платежным аккаунтом.
- Вставьте в редактор статический базовый запрос, приведенный выше.
- Снимите флажки Использовать прежнюю версию SQL, Включить диапазон дат и Включить адрес электронной почты читателя.
- Нажмите Добавить.
1.2. Настройка геопространственной визуализации
После подключения данных настройте Студию данных так, чтобы она правильно распознавала данные о границах H3:
- В меню Добавить диаграмму добавьте визуализацию Картограмма на лист отчета.
- Убедитесь, что для поля
h3_geo, содержащего геометрию многоугольника, задан тип данных Геопространственные данные.- Нажмите на значок Изменить источник данных (карандаш) рядом с названием подключения.
- Если для параметра
h3_geoзадано значение Текст (ABC), в раскрывающемся меню выберите Гео > Геопространственные данные. - Нажмите Готово.
- Сопоставьте поле
h3_indexс полем Местоположение (оно будет использоваться в качестве уникального идентификатора). - Сопоставьте поле
h3_geoс геопространственным полем (действующим как геометрия многоугольника). - Сопоставьте поле
restaurant_countс параметром Показатель цвета.
Будет отрисована карта плотности ресторанов по ячейкам H3. Темно-синий цвет (по умолчанию) указывает на ячейку с большим количеством ресторанов.

Шаг 2. Реализуйте динамические параметры
Чтобы сделать отчет интерактивным, мы добавим в него элементы управления, которые позволят пользователю выбирать следующие параметры:
- "Населенный пункт" – город, по которому создается отчет.
- День недели. Фильтрация мест по дням, когда они открыты, на основе записи
regular_opening_hoursв схеме. - Час дня. Фильтрует места по часам работы, сравнивая их со значениями полей
start_timeиend_time.
Для этого вы будете передавать выбранные пользователем параметры непосредственно в измененный запрос Places Insights во время выполнения. В редакторе источников данных Студии данных необходимо явно определить эти параметры как типизированные переменные.
В Студии данных откройте меню Ресурс и выберите Управление добавленными источниками данных. На появившейся панели нажмите на значок 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), значения, передаваемые из Студии данных, должны быть в строгом формате HH:MM:SS (24-часовой формат).
После того как вы настроите и сохраните все три параметра, измените подключение BigQuery Custom 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, которые соответствуют названиям параметров, которые мы только что настроили.
Вернитесь к листу отчета, чтобы сделать эти параметры доступными для конечного пользователя.
- Добавьте в отчет три элемента управления Раскрывающийся список.
- Для каждого элемента управления задайте Поле управления, соответствующее новым параметрам:
- Контрольная группа 1:
p_locality - Контрольная группа 2:
p_day_of_week - Контрольная группа 3:
p_hour_of_day
- Контрольная группа 1:
Итоговый отчет должен выглядеть примерно как на скриншоте ниже. При изменении значения в одном из раскрывающихся списков Студия данных запрашивает нужные данные у Places Insights, а затем визуализирует их на карте.

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