Перейти к основному содержанию
azureBlobStorage — табличная функция, которая позволяет быстро и удобно выполнять приём данных из Azure Blob Storage в ClickHouse. Однако её использование не всегда подходит по следующим причинам:
  • Ваши данные могут храниться не в Azure Blob Storage — например, в Azure SQL Database, Microsoft SQL Server или Cosmos DB.
  • Политики безопасности могут полностью запрещать внешний доступ к Blob Storage — например, если учетная запись хранения закрыта и не имеет публичной конечной точки.
В таких случаях можно использовать Azure Data Factory вместе с HTTP-интерфейсом ClickHouse, чтобы отправлять данные из сервисов Azure в ClickHouse. Этот метод меняет направление потока: вместо того чтобы ClickHouse получал данные из Azure, Azure Data Factory отправляет их в ClickHouse. Такой подход обычно требует, чтобы ваш экземпляр ClickHouse был доступен из публичного интернета.
Можно не открывать экземпляр ClickHouse для доступа из интернета, если использовать Self-hosted Integration Runtime в Azure Data Factory. Такая конфигурация позволяет передавать данные по частной сети. Однако это выходит за рамки данной статьи. Дополнительную информацию см. в официальном руководстве: Создание и настройка Self-hosted Integration Runtime

Превращение ClickHouse в REST-сервис

Azure Data Factory поддерживает отправку данных во внешние системы по HTTP в формате JSON. Мы можем использовать эту возможность, чтобы напрямую вставлять данные в ClickHouse через HTTP-интерфейс ClickHouse. Подробнее см. в документации по HTTP-интерфейсу ClickHouse. Для этого примера нам нужно лишь указать целевую таблицу, задать формат входных данных JSON и включить параметры, позволяющие более гибко разбирать временные метки.
Чтобы отправить этот запрос в составе HTTP-запроса, просто передайте его в виде URL-кодированной строки в параметре query вашей конечной точки ClickHouse:
Azure Data Factory может автоматически выполнять это кодирование с помощью встроенной функции encodeUriComponent, поэтому вам не придется делать это вручную.
Теперь вы можете отправлять на этот URL данные в формате JSON. Данные должны соответствовать структуре целевой таблицы. Вот простой пример с использованием curl для таблицы с тремя столбцами: col_1, col_2 и col_3.
Вы также можете отправлять JSON-массив объектов или JSON Lines (JSON-объекты, разделённые символом новой строки). Azure Data Factory использует формат JSON-массива, который идеально работает с входным форматом JSONEachRow в ClickHouse. Как видите, на этом шаге вам не нужно делать ничего особенного со стороны ClickHouse. HTTP-интерфейс уже предоставляет всё необходимое, чтобы работать как REST-подобная конечная точка — никакая дополнительная настройка не требуется. Теперь, когда ClickHouse работает как REST-конечная точка, пора настроить Azure Data Factory для работы с ней. На следующих шагах мы создадим экземпляр Azure Data Factory, настроим Linked Service для вашего экземпляра ClickHouse, определим Dataset для REST-приемника и создадим активность Copy Data для отправки данных из Azure в ClickHouse.

Создание экземпляра Azure Data Factory

В этом руководстве предполагается, что у вас есть доступ к учётной записи Microsoft Azure, а подписка и группа ресурсов уже настроены. Если Azure Data Factory у вас уже настроен, этот шаг можно смело пропустить и перейти к следующему, используя существующий сервис.
  1. Войдите в Microsoft Azure Portal и нажмите Create a resource.
  2. На панели Categories слева выберите Analytics, затем нажмите Data Factory в списке популярных сервисов.
  3. Выберите подписку и группу ресурсов, введите имя для нового экземпляра Data Factory, выберите регион и оставьте версию V2.
  4. Нажмите Review + Create, затем Create, чтобы запустить развертывание.
После успешного завершения развертывания вы сможете начать использовать новый экземпляр Azure Data Factory.

Создание новой связанной службы на основе REST

  1. Войдите в Azure Portal и откройте свой экземпляр Data Factory.
  2. На странице обзора Data Factory нажмите Launch Studio.
  3. В меню слева выберите Manage, затем перейдите в Linked services и нажмите + New, чтобы создать новую связанную службу.
  4. В строке поиска New linked service введите REST, выберите REST и нажмите Continue, чтобы создать экземпляр коннектора REST.
  5. На панели конфигурации связанной службы введите имя новой службы, нажмите поле Base URL, затем нажмите Add dynamic content (эта ссылка появляется только после выбора поля).
  6. На панели динамического содержимого можно создать параметризованный URL, который позволит позже задать запрос при создании датасетов для разных таблиц — так связанную службу можно использовать повторно.
  7. Нажмите ”+” рядом с полем фильтра и добавьте новый параметр, назовите его pQuery, установите тип String и задайте значение по умолчанию SELECT 1. Нажмите Save.
  8. В поле выражения введите следующий текст и нажмите OK. Замените your-clickhouse-url.com на фактический адрес вашего экземпляра ClickHouse.
  9. Вернувшись в основную форму, выберите базовую аутентификацию, введите имя пользователя и пароль, которые используются для подключения к вашему HTTP-интерфейсу ClickHouse, затем нажмите Test connection. Если всё настроено правильно, вы увидите сообщение об успешном подключении.
  10. Нажмите Create, чтобы завершить настройку.
Теперь в списке должна отображаться ваша новая связанная служба на основе REST.

Создание нового набора данных для HTTP-интерфейса ClickHouse

Теперь, когда у нас настроена связанная служба для HTTP-интерфейса ClickHouse, мы можем создать набор данных, который Azure Data Factory будет использовать для отправки данных в ClickHouse. В этом примере мы выполним вставку небольшой части данных датчиков окружающей среды.
  1. Откройте консоль запросов ClickHouse по своему выбору — это может быть веб-интерфейс ClickHouse Cloud, CLI-клиент или любой другой интерфейс, который вы используете для выполнения запросов, — и создайте целевую таблицу:
  2. В Azure Data Factory Studio выберите Author на левой панели. Наведите указатель на элемент Dataset, нажмите значок с тремя точками и выберите New dataset.
  3. В строке поиска введите REST, выберите REST и нажмите Continue. Введите имя набора данных и выберите связанную службу, созданную на предыдущем шаге. Нажмите OK, чтобы создать набор данных.
  4. Теперь в разделе Datasets на панели Factory Resources слева должен отображаться только что созданный набор данных. Выберите его, чтобы открыть свойства. Вы увидите параметр pQuery, который был определён в связанной службе. Нажмите текстовое поле Value. Затем нажмите Add dynamic content.
  5. В открывшуюся панель вставьте следующий запрос:
Все одинарные кавычки ' в запросе необходимо заменить на две одинарные кавычки ''. Это требуется парсером выражений Azure Data Factory. Если не экранировать их, ошибка может не появиться сразу — но позже всё завершится сбоем, когда вы попытаетесь использовать или сохранить набор данных. Например, 'best_effort' должно быть записано как ''best_effort''.
  1. Нажмите OK, чтобы сохранить выражение. Нажмите Test connection. Если всё настроено правильно, появится сообщение Connection successful. Нажмите Publish all в верхней части страницы, чтобы сохранить изменения.

Настройка примера набора данных

В этом примере мы будем использовать не полный Environmental Sensors Dataset, а лишь небольшую выборку, доступную по ссылке Sensors Dataset Sample.
Чтобы не перегружать это руководство деталями, мы не будем подробно рассматривать точные шаги по созданию исходного набора данных в Azure Data Factory. Вы можете загрузить пример данных в любой выбранный вами сервис хранения — например, в Azure Blob Storage, Microsoft SQL Server или даже в файл другого формата, поддерживаемого Azure Data Factory.
Загрузите набор данных в Azure Blob Storage (или другой предпочитаемый сервис хранения), затем в Azure Data Factory Studio перейдите на панель Factory Resources. Создайте новый набор данных, указывающий на загруженные данные. Нажмите Publish all, чтобы сохранить изменения.

Создание действия Copy Data для передачи данных в ClickHouse

Теперь, когда мы настроили входной и выходной наборы данных, можно настроить действие Copy Data, чтобы перенести данные из нашего тестового набора данных в таблицу sensors в ClickHouse.
  1. Откройте Azure Data Factory Studio и перейдите на вкладку Author. В панели Factory Resources наведите указатель на Pipeline, нажмите значок с тремя точками и выберите New pipeline.
  2. В панели Activities разверните раздел Move and transform и перетащите действие Copy data на холст.
  3. Выберите вкладку Source и укажите исходный набор данных, который вы создали ранее.
  4. Перейдите на вкладку Sink и выберите набор данных ClickHouse, созданный для таблицы sensors. Установите для Request method значение POST. Убедитесь, что для HTTP compression type установлено значение None.
HTTP-сжатие работает некорректно в действии Copy Data в Azure Data Factory. Когда оно включено, Azure отправляет полезную нагрузку, состоящую только из нулевых байтов, — вероятно, это ошибка сервиса. Обязательно оставьте сжатие отключенным.
Мы рекомендуем оставить размер батча по умолчанию — 10 000, или даже увеличить его. Подробнее см. в разделе Выбор стратегии вставки / Батч-вставки при синхронном режиме.
  1. Нажмите Debug в верхней части холста, чтобы запустить конвейер. После короткого ожидания действие будет поставлено в очередь и выполнено. Если всё настроено правильно, задача должна завершиться со статусом Success.
  2. После завершения нажмите Publish all, чтобы сохранить изменения в конвейере и наборах данных.

Дополнительные ресурсы

Последнее изменение 25 июня 2026 г.