Обзор

В этом документе рассказывается, как создавать динамические отчеты с геопространственными данными с помощью Places Insights и Студии данных. Получайте ценную информацию о местоположении, позволяя сотрудникам без технических знаний отвечать на свои вопросы. В этом руководстве рассказывается, как превратить статические отчеты в интерактивные инструменты для анализа рынка в виде тепловых карт, не создавая SQL-запросы для каждого запроса. Получите доступ к сложным геоданным, чтобы объединить разработку данных и бизнес-аналитику.
Использование этого архитектурного шаблона дает ряд преимуществ:
- Визуализация данных. Преобразует данные Places Insights в интерактивные карты и диаграммы, которые наглядно показывают пространственную плотность и тенденции.
- Упрощенное исследование без SQL. Позволяет членам команды, например аналитикам рынка или планировщикам недвижимости, динамически фильтровать данные с помощью заранее заданных параметров (например, менять "Город" или "Время суток" с помощью раскрывающихся списков). Они могут изучать данные, не написав ни одной строки кода SQL.
- Удобная совместная работа. Стандартные функции Студии данных позволяют безопасно делиться интерактивными отчетами.
Рабочий процесс решения
Ниже описан рабочий процесс, который поможет вам создать эффективную архитектуру отчетов. Он переходит от статического базового уровня к полностью динамическому приложению, обеспечивая правильность данных до того, как вносить изменения.
Требования
Прежде чем начать, настройте Places Insights. Вам понадобится доступ к Студии данных – бесплатному инструменту.
Шаг 1. Определите базовые геопространственные показатели
Прежде чем добавлять интерактивность, создайте базовый запрос и убедитесь, что он правильно отображается в Студии данных. Используйте Places Insights и геопространственные возможности BigQuery, чтобы агрегировать данные в шестиугольные сетки с помощью системы индексации H3. В результате будет создан запрос, который можно использовать с типом карты "Заливка" в Data 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 – систему, которая делит мир на шестиугольные ячейки сетки.
Мы используем это преобразование, потому что для заливки цветом на заполненной карте в Студии данных требуются многоугольники (фигуры). Преобразуя точки в шестиугольники, мы можем визуализировать плотность компаний в определенной области, а не наносить тысячи перекрывающихся точек.
Примечание о пороге агрегирования
Для всех запросов к Places Insights требуется предложение WITH AGGREGATION_THRESHOLD.
Эта защита конфиденциальности гарантирует, что данные возвращаются только в том случае, если агрегированное количество составляет 5 или более.
Если в ячейке сетки H3 меньше пяти ресторанов, она полностью исключается из набора результатов и на карте будет пустой.
Чтобы реализовать это в Студии данных:
- Создайте новый пустой отчет.
- Выберите коннектор данных 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 во время выполнения. В редакторе источников данных Студии данных необходимо явно определить эти параметры как типизированные переменные.
В Data Studio выберите меню Ресурс и нажмите Управление добавленными источниками данных. На появившейся панели нажмите EDIT рядом с источником данных "Специальный SQL BigQuery", который мы добавили ранее.
В окне "Изменить подключение" нажмите Добавить параметр. Мы добавим три параметра со следующими значениями:
| Название параметра | Тип данных | Допустимые значения | Список значений (должен точно соответствовать базе данных) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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-часовой формат).
После того как вы настроите и сохраните все три параметра, измените подключение к пользовательскому 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:
Итоговый отчет должен выглядеть примерно так, как показано ниже. Если вы измените значение в одном из раскрывающихся списков, Студия данных запросит у сервиса "Аналитика мест" нужные данные и отобразит их на карте.

Шаг 3. Поделитесь результатами
Чтобы поделиться отчетом, используйте инструмент для предоставления доступа, встроенный в Студию данных. Это позволит зрителям динамически обновлять визуализацию на основе параметров, выбранных в раскрывающихся списках.
Заключение
Этот шаблон позволяет создать масштабируемый интерактивный инструмент для составления отчетов, который использует вычислительные мощности BigQuery для передачи агрегированных данных Places Insights в Студию данных. Такая архитектура позволяет избежать проблем, связанных с попытками визуализировать большие наборы необработанных данных, и предоставляет конечным пользователям возможность изучать данные по различным параметрам, таким как время, местоположение и тип бизнеса, практически в реальном времени. Это удобный инструмент для тех, кто не обладает техническими знаниями.
Дальнейшие действия
Чтобы получить другие варианты динамических отчетов, параметризируйте разные части схемы Places Insights:
- Динамический анализ конкурентов. Создайте параметр для названий
brand, чтобы пользователи могли мгновенно переключать тепловую карту между разными конкурентами и видеть их относительную насыщенность на рынке. Информацию о доступности данных для брендов можно найти в статье О статистике мест. - Интерактивный выбор участка. Добавьте параметры для
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 нужно добавить следующие данные:
Авторы
- Дэвид Шайнгартен | Инженер по связям с разработчиками
- Хенрик Вальве | Инженер DevX