Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Router
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Managed Service for YDB
    • SpeechKit
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • Container Registry
    • Managed Service for Prometheus®
    • Message Queue
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Cloud Apps
    • Yandex AI Studio
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Yandex Cloud Video
    • Stackland
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • DataSphere
    • Vision OCR
    • Translate
    • Cloud Registry
    • SmartCaptcha
    • Cloud Desktop
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Managed Service for GitLab
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Serverless Integrations
    • IoT Core
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Query
RU
  • Закрытие сервиса Yandex Query
    • Все руководства
    • Миграция с Yandex Query
    • Обработка логов Cloud Logging
    • Обработка потока изменений Debezium
    • Визуализация данных из Object Storage в DataLens
    • Обработка аудитных логов Audit Trails
    • Обработка файлов детализации в сервисе Yandex Cloud Billing
    • Анализ данных с помощью Jupyter
    • Автоматизация задач с помощью Managed Service for Apache Airflow™
    • Анализ данных с помощью Query
    • Работа с данными в Object Storage
    • Работа с данными в Managed Service for ClickHouse®
    • Работа с данными в Managed Service for PostgreSQL
    • Федеративные запросы к данным
    • Поиск событий Yandex Cloud в Query
  • Управление доступом
  • Правила тарификации
  • Интеграции
  • Аудитные логи Audit Trails
  • Вопросы и ответы
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Как выбрать целевое решение
  • Прямое чтение из Object Storage
  • Перед началом работы
  • Прочитайте данные
  • Yandex Managed Service for YDB
  • Соответствие сущностей
  • Перед началом работы
  • Федеративные запросы: чтение файлов из Object Storage
  • Колоночные таблицы: загрузка данных в базу
  • Соединения с базами данных
  • Проверьте результат
  • Если что-то пошло не так
  1. Практические руководства
  2. Миграция с Yandex Query

Миграция с Yandex Query

Статья создана
Yandex Cloud
Обновлена 2 октября 2026 г.
Открыть в Markdown
  • Как выбрать целевое решение
  • Прямое чтение из Object Storage
    • Перед началом работы
    • Прочитайте данные
  • Yandex Managed Service for YDB
    • Соответствие сущностей
    • Перед началом работы
    • Федеративные запросы: чтение файлов из Object Storage
    • Колоночные таблицы: загрузка данных в базу
    • Соединения с базами данных
  • Проверьте результат
  • Если что-то пошло не так

Важно

С 13 октября 2026 года сервис Yandex Query будет недоступен для новых пользователей.

Текущие пользователи смогут создавать и изменять сущности до 10 ноября 2026 года. После этого сервис перейдет в режим read-only, а 14 декабря 2026 года прекратит работу. Подробнее о сроках и порядке закрытия читайте на странице Закрытие сервиса Yandex Query.

После закрытия Yandex Query вы можете работать с данными одним из следующих способов:

  • Прямое чтение из Object Storage. Читайте данные из бакета S3-совместимыми утилитами, библиотеками или вашим приложением.
  • Yandex Managed Service for YDB. Выполняйте федеративные запросы к файлам в Object Storage через внешние источники данных и внешние таблицы. Результаты можно записывать в выходной бакет.

Важно

Соединения, привязки к данным и запросы Yandex Query автоматически не переносятся. Создайте их заново по инструкции ниже. Закрытие Yandex Query не затрагивает данные в бакетах Object Storage.

Руководство описывает перенос аналитических запросов. Для потоковых запросов Yandex Query прямого аналога в Yandex Cloud нет.

Как выбрать целевое решениеКак выбрать целевое решение

В разделе приведено краткое сравнение способов работы с данными после закрытия Yandex Query.

Сценарий

Как вы используете Yandex Query

Прямое чтение из Object Storage

Читаете файлы, например детализацию биллинга в CSV-формате, и обрабатываете их в приложении.

Федеративные запросы в Yandex Managed Service for YDB

Регулярно выполняете аналитические запросы к файлам в бакете, храните тексты запросов в коде или используете привязки к данным.

Колоночные таблицы в Yandex Managed Service for YDB

Строите дашборды с частым обновлением или многократно читаете одни и те же данные.

Выбирайте прямое чтение из Object Storage, если:

  • обработка данных уже реализована в вашем приложении;
  • запросы простые и не требуют SQL;
  • вы читаете файлы нерегулярно или однократно.

Выбирайте федеративные запросы в Yandex Managed Service for YDB, если:

  • данные должны оставаться в бакете;
  • вы хотите сохранить SQL-запросы и привычную модель работы с внешними данными;
  • одни и те же файлы не читаются многократно.

Выбирайте колоночные таблицы в Yandex Managed Service for YDB, если:

  • одни и те же данные используются в регулярных запросах или дашбордах;
  • важна скорость повторяющихся аналитических запросов;
  • вы готовы загружать данные из бакета в базу данных.

Совет

Если вы использовали Yandex Query для SQL-запросов к файлам в Object Storage, начните с федеративных запросов в Yandex Managed Service for YDB. Этот вариант требует меньше изменений в запросах и не требует переносить исходные данные из бакета.

Модели оплаты отличаются. В Yandex Query оплачивается объем данных, прочитанных запросами. При прямом чтении из Object Storage оплачиваются операции и исходящий трафик. В Yandex Managed Service for YDB оплачиваются выделенные вычислительные ресурсы и хранилище базы данных независимо от числа запросов. Подробнее о стоимости ресурсов читайте в разделах Правила тарификации Object Storage и Правила тарификации Yandex Managed Service for YDB.

Прямое чтение из Object StorageПрямое чтение из Object Storage

Сценарий подходит, если всю необходимую обработку данных вы выполняете на своей стороне.

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

  1. Создайте сервисный аккаунт, от имени которого будет выполняться чтение.

  2. Назначьте сервисному аккаунту роль storage.viewer на бакет или каталог, в котором он находится.

  3. Создайте статический ключ доступа для сервисного аккаунта.

    Сохраните значения key_id и secret: секретный ключ больше не будет показан.

Прочитайте данныеПрочитайте данные

AWS CLI
Python
  1. Настройте AWS CLI с ключом сервисного аккаунта.

  2. Посмотрите список файлов:

    aws --endpoint-url=https://storage.yandexcloud.net \
      s3 ls s3://<имя_бакета>/<префикс>/
    
  3. Скачайте файлы:

    aws --endpoint-url=https://storage.yandexcloud.net \
      s3 cp s3://<имя_бакета>/<префикс>/ ./data/ --recursive
    

Пример читает CSV-файлы с заданным префиксом и считает сумму по колонке, как это делал бы запрос SELECT service_name, SUM(cost) ... GROUP BY service_name в Yandex Query. Названия колонок сверьте с заголовком ваших файлов.

import boto3
import pandas as pd

s3 = boto3.client(
    "s3",
    endpoint_url="https://storage.yandexcloud.net",
    aws_access_key_id="<идентификатор_ключа>",
    aws_secret_access_key="<секретный_ключ>",
)

frames = []
paginator = s3.get_paginator("list_objects_v2")
for page in paginator.paginate(Bucket="<имя_бакета>", Prefix="<префикс>/"):
    for obj in page.get("Contents", []):
        if obj["Key"].endswith(".csv"):
            body = s3.get_object(Bucket="<имя_бакета>", Key=obj["Key"])["Body"]
            frames.append(pd.read_csv(body))

df = pd.concat(frames)
print(df.groupby("service_name")["cost"].sum().sort_values(ascending=False))

Yandex Managed Service for YDBYandex Managed Service for YDB

Соответствие сущностейСоответствие сущностей

Yandex Query

Yandex Managed Service for YDB

Соединение с Object Storage

Внешний источник данных CREATE EXTERNAL DATA SOURCE с SOURCE_TYPE = "ObjectStorage"

Привязка к данным

Внешняя таблица CREATE EXTERNAL TABLE

Обращение к привязке bindings.<имя_привязки>

Обращение к внешней таблице по имени: <имя_таблицы>

Аутентификация через сервисный аккаунт

Статический ключ доступа сервисного аккаунта, сохраненный в секретах базы данных

Чтение файлов по маске, партиционирование, partition projection

Поддерживаются с тем же синтаксисом

Форматы csv_with_names, tsv_with_names, json_each_row, json_list, json_as_string, parquet, raw

Поддерживаются

Запись результата в бакет INSERT INTO <соединение>.<путь>

Поддерживается с тем же синтаксисом

Соединения с Managed Service for PostgreSQL, Managed Service for ClickHouse®, Managed Service for MySQL® и Yandex MPP Analytics for PostgreSQL

Федеративные запросы к внешним базам данных

Потоковые запросы к Yandex Data Streams

Нет аналога

Соединение с Monitoring

Нет аналога

Сохраненные запросы

Храните тексты запросов в своем репозитории

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

  1. Создайте базу данных Yandex Managed Service for YDB с выделенными ресурсами в том же облаке, где находятся бакеты с данными.

    Примечание

    Внешние источники данных доступны только в базах данных с выделенными ресурсами. В базе данных в режиме Serverless запрос к внешнему источнику завершится ошибкой External data sources are disabled.

  2. Назначьте пользователю, который будет переносить запросы, роль ydb.editor на базу данных.

  3. Создайте сервисный аккаунт и статический ключ доступа, как описано в разделе Прямое чтение из Object Storage. Если запросы записывают результаты в бакет, дополнительно назначьте сервисному аккаунту роль storage.uploader.

  4. Сохраните тексты запросов, параметры соединений и привязок из Yandex Query: имена, пути в бакете, формат, сжатие, схему и настройки партиционирования.

Федеративные запросы: чтение файлов из Object StorageФедеративные запросы: чтение файлов из Object Storage

Сценарий повторяет работу Yandex Query: данные остаются в бакете, база читает их при каждом запросе.

Создайте внешний источник данныхСоздайте внешний источник данных

  1. Сохраните статический ключ в секретах базы данных:

    CREATE SECRET s3_key_id WITH (value = "<идентификатор_ключа>");
    CREATE SECRET s3_secret_key WITH (value = "<секретный_ключ>");
    
  2. Создайте внешний источник данных. Чтобы не менять тексты запросов, назовите его так же, как соединение в Yandex Query:

    CREATE EXTERNAL DATA SOURCE <имя_соединения> WITH (
        SOURCE_TYPE = "ObjectStorage",
        LOCATION = "https://storage.yandexcloud.net/<имя_бакета>/",
        AUTH_METHOD = "AWS",
        AWS_ACCESS_KEY_ID_SECRET_PATH = "s3_key_id",
        AWS_SECRET_ACCESS_KEY_SECRET_PATH = "s3_secret_key",
        AWS_REGION = "kz1"
    );
    

    Для публичного бакета секреты не нужны: укажите AUTH_METHOD = "NONE" и не указывайте параметры AWS_*.

  3. Проверьте, что база читает бакет:

    SELECT *
    FROM <имя_соединения>.`<путь>/`
    WITH (
        FORMAT = "csv_with_names",
        WITH_INFER = "true"
    )
    LIMIT 10;
    

Перенесите привязки к даннымПеренесите привязки к данным

Для каждой привязки создайте внешнюю таблицу с теми же колонками, форматом и сжатием:

CREATE EXTERNAL TABLE <имя_привязки> (
    date Date NOT NULL,
    service_name Utf8,
    cost Double
) WITH (
    DATA_SOURCE = "<имя_соединения>",
    LOCATION = "<путь>/",
    FORMAT = "csv_with_names",
    COMPRESSION = "gzip"
);

Если в привязке настроено партиционирование или partition projection, перенесите параметры PARTITIONED_BY и projection.* без изменений.

Перенесите запросыПеренесите запросы

Запросы к соединениям переносятся без изменений, если имя внешнего источника совпадает с именем соединения. В запросах к привязкам уберите префикс bindings.:

Yandex Query
Yandex Managed Service for YDB
SELECT service_name, SUM(cost) AS total
FROM bindings.`billing`
WHERE date >= Date("2026-09-01")
GROUP BY service_name
ORDER BY total DESC;
SELECT service_name, SUM(cost) AS total
FROM billing
WHERE date >= Date("2026-09-01")
GROUP BY service_name
ORDER BY total DESC;

Запросы можно выполнять в консоли управления, с помощью YDB CLI или SDK. Например, чтобы сохранить результат в CSV-файл:

ydb \
  --endpoint <эндпоинт_базы_данных> \
  --database <путь_к_базе_данных> \
  sql -s 'SELECT service_name, SUM(cost) AS total FROM billing GROUP BY service_name' \
  --format csv > result.csv

Учтите производительностьУчтите производительность

Скорость федеративного запроса ограничена пропускной способностью сети узлов базы данных при чтении из Object Storage. Yandex Query распределял чтение по общему пулу узлов, поэтому в базе с небольшим числом узлов тот же запрос может выполняться дольше. Если скорость важна, увеличьте число узлов базы данных или перенесите данные в колоночные таблицы.

Колоночные таблицы: загрузка данных в базуКолоночные таблицы: загрузка данных в базу

Если одни и те же файлы читаются много раз (например, дашбордом с автообновлением), загрузите их в колоночную таблицу. Запросы к колоночной таблице не читают бакет повторно.

  1. Создайте колоночную таблицу:

    CREATE TABLE billing_data (
        date Date NOT NULL,
        resource_id Utf8 NOT NULL,
        service_name Utf8,
        cost Double,
        PRIMARY KEY (date, resource_id)
    )
    PARTITION BY HASH(date, resource_id)
    WITH (STORE = COLUMN);
    
  2. Загрузите данные из внешней таблицы:

    INSERT INTO billing_data
    SELECT date, resource_id, service_name, cost
    FROM billing;
    
  3. Чтобы догружать новые файлы, запускайте такой же запрос по расписанию с фильтром по дате или пути, например из функции Cloud Functions с триггером-таймером.

  4. Переключите запросы и дашборды с внешней таблицы на billing_data.

Соединения с базами данныхСоединения с базами данных

Соединения Yandex Query с Managed Service for PostgreSQL, Managed Service for ClickHouse®, Managed Service for MySQL® и Yandex MPP Analytics for PostgreSQL переносятся во внешние источники данных соответствующего типа. Синтаксис запросов SELECT * FROM <источник>.<таблица> не меняется. Параметры подключения описаны в разделе Федеративные запросы.

Проверьте результатПроверьте результат

  1. Выполните каждый перенесенный запрос на одном и том же наборе файлов в Yandex Query и в новом решении.

  2. Сравните число строк и контрольные суммы по ключевым колонкам:

    SELECT COUNT(*) AS rows, SUM(cost) AS total_cost
    FROM billing
    WHERE date BETWEEN Date("2026-09-01") AND Date("2026-09-30");
    
  3. Переключите на новое решение дашборды, расписания и приложения, которые обращались к Yandex Query.

Если что-то пошло не такЕсли что-то пошло не так

Ошибка или симптом

Что проверить

External data sources are disabled

База данных создана в режиме Serverless. Создайте базу данных с выделенными ресурсами.

Access Denied при чтении бакета

Роль storage.viewer у сервисного аккаунта, значения ключа в секретах и значение LOCATION. Оно должно заканчиваться на /.

Ошибка разбора данных

Типы и обязательность колонок в схеме. Если в файле нет колонки с NOT NULL, запрос завершится ошибкой.

Запрос выполняется дольше, чем в Yandex Query

Число узлов базы данных. Для повторяющихся запросов используйте колоночные таблицы.

Если решить проблему не удалось, обратитесь в техническую поддержку и приложите:

  • идентификатор базы данных;
  • текст запроса и текст ошибки;
  • время ошибки и идентификатор запроса, если он есть в выводе.

Была ли статья полезна?

Предыдущая
Все руководства
Следующая
Обработка логов Cloud Logging
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»