Обзор

В этом документе описывается, как создавать динамические геопространственные отчеты с помощью Аналитики мест и Студии данных. Раскройте потенциал своих геоданных, предоставив заинтересованным лицам, не имеющим технических знаний, возможность самостоятельно находить ответы на свои вопросы. В этом руководстве рассказывается, как превратить статические отчеты в интерактивные инструменты для анализа рынка в стиле тепловых карт, не создавая 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 должны содержать предложение 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