Skip to main content
Foursquare OS Places содержит более 100 миллионов коммерческих точек интереса (POI), включая магазины, рестораны, парки, игровые площадки и памятники. В этом руководстве вы подключите ClickHouse к каталогу Iceberg Foursquare, изучите набор данных и загрузите его в таблицу, оптимизированную для геопространственных запросов. Набор данных доступен на портале Foursquare Places и бесплатен для использования по лицензии Apache 2.0.
Foursquare изменил способ доступа к OS Places. В предыдущих версиях этого руководства выполнялись запросы к файлам с фиксированной датой в публичном S3 бакете; теперь доступ предоставляется через портал Foursquare Places и аутентифицированный каталог Iceberg. Подробнее см. документацию Foursquare по доступу к OS Places.

Перед началом работы

Перед выполнением запросов из этого руководства вам потребуются:
  • аккаунт на портале Foursquare Places
  • токен доступа, созданный на вкладке Access Data набора данных OS Places

Подключение к каталогу Foursquare

Не разглашайте свой токен доступа. Запустите клиент ClickHouse, затем замените <YOUR_ACCESS_TOKEN> в следующем запросе своим токеном:
Query
База данных каталога доступна только для чтения. Таблица places_os отражает текущую опубликованную версию Foursquare, а не версию Parquet, привязанную к определённой дате, поэтому её строки и схема могут меняться со временем. Поэтому запросы без предложения ORDER BY могут возвращать другие строки выборки, чем показанные в этом руководстве результаты.

Проверьте подключение

Выполните запрос, возвращающий одну строку из Iceberg-таблицы places_os:
Query
Response

Изучение данных

Пример строки содержит несколько полей со значением null. Добавьте фильтры, чтобы получить более полную строку:
Query
Response
Используйте DESCRIBE, чтобы просмотреть схему таблицы:
Query
Response

Загрузите данные в ClickHouse

Чтобы сохранить данные, создайте таблицу на сервере clickhouse-server или в ClickHouse Cloud. Создайте таблицу MergeTree со столбцами, закодированными по словарю, и материализованными координатами в проекции Web Mercator:
Query
Несколько столбцов используют тип данных LowCardinality, который хранит повторяющиеся значения с кодированием с использованием словаря. Такое представление может значительно повысить производительность SELECT-запросов. Два материализованных столбца типа UInt32mercator_x и mercator_y — преобразуют широту и долготу в проекцию Web Mercator, что упрощает разбиение карты на тайлы:
Выражения вычисляют следующие значения. mercator_x Этот столбец преобразует значение долготы в координату X в проекции Меркатора:
  • longitude + 180 сдвигает диапазон долготы с [-180, 180] к [0, 360].
  • Деление на 360 нормализует значение до диапазона от 0 до 1.
  • Умножение на 0xFFFFFFFF — максимальное 32-битное беззнаковое целое число — масштабирует нормализованное значение до всего диапазона 32-битного целого числа.
mercator_y Этот столбец преобразует значение широты в координату Y в проекции Меркатора:
  • latitude + 90 сдвигает диапазон широты с [-90, 90] к [0, 180].
  • Деление на 360 и умножение на pi преобразуют значение в радианы для тригонометрических функций.
  • log(tan(...)) применяет основную формулу проекции Меркатора.
  • Умножение на 0xFFFFFFFF масштабирует результат до всего диапазона 32-битного целого числа.
Указание MATERIALIZED предписывает ClickHouse вычислять эти значения при вставке данных, без необходимости включать эти столбцы в исходные данные. Таблица упорядочена по mortonEncode(mercator_x, mercator_y), что создаёт кривую заполнения пространства Z-порядка и упорядочивает данные по пространственной близости:
Два индекса minmax дополнительно ускоряют пространственную фильтрацию:
Загрузите текущий выпуск OS Places в таблицу:
Этот запрос считывает и сохраняет более 100 миллионов строк. Его выполнение может занять значительное время, потребовать места в хранилище и повлечь расходы в ClickHouse Cloud. При повторном запуске добавляются те же данные, поэтому перед повторным импортом убедитесь, что foursquare_mercator пуста.
Query
Явные списки столбцов источника и пункта назначения предотвращают несоответствие импортированных значений при изменении порядка столбцов в каталоге. Запрос исключает unresolved_flags, поскольку этот столбец не нужен локальной таблице, и отфильтровывает строки без координат, так как их нельзя разместить на карте. Другие допускающие NULL значения источника остаются NULL в локальной таблице.

Визуализируйте данные

Модель доступа Foursquare изменилась с момента создания этих визуализаций. исходное интерактивное представление Places создано до введения текущей модели доступа и приведено для исторической справки, однако оно может больше не отображать данные Places. Изображения ниже сохранены в качестве исторических примеров.
Во время корпоративного хакатона сооснователь и CTO ClickHouse Алексей Миловидов использовал ClickHouse, чтобы создать следующие визуализации на основе набора данных Foursquare.
Последнее изменение 14 августа 2026 г.