# О Discovery API

Платформа dbt | Starter, Enterprise, Enterprise+

При каждом запуске проекта dbt генерирует и сохраняет информацию о нём. Эти метаданные содержат сведения о моделях, источниках и других узлах проекта, а также результаты их выполнения. С помощью Discovery API в dbt вы можете запрашивать эту подробную информацию, чтобы лучше понимать свой DAG и данные, которые он формирует.

Используя метаданные в dbt, вы можете создавать системы мониторинга данных и оповещений, исследования происхождения данных и автоматизированной отчётности. Это поможет вам улучшить поиск данных, их качество и работу конвейеров в вашей организации.

Вы можете обращаться к Discovery API с помощью [разовых запросов](https://docs.getdbt.tech/docs/dbt-apis/discovery-querying.md), собственных приложений, широкого набора [интеграций партнёрской экосистемы](https://www.getdbt.com/product/integrations/) (например, для BI и аналитики, каталогизации и управления данными, контроля качества и наблюдаемости), а также используя такие возможности dbt, как [статистика времени выполнения моделей](https://docs.getdbt.tech/docs/deploy/run-visibility.md#model-timing-tab) и [плитки состояния данных](https://docs.getdbt.tech/docs/explore/data-tile.md).

Информацию о квотах запросов и механизме ограничения их частоты см. в разделе [Ограничения частоты запросов API](https://docs.getdbt.tech/docs/dbt-apis/rate-limits.md).

[![Обширная экосистема интеграций ](/img/docs/dbt-platform/discovery-api/discovery-api-figure.png?v=2 "Обширная экосистема интеграций ")](#)Обширная экосистема интеграций

Вы можете запрашивать метаданные dbt:

* На уровне [окружения](https://docs.getdbt.tech/docs/environments-in-dbt.md) — как для получения последнего состояния (используйте эндпоинт `environment`), так и для получения исторических результатов запусков (используйте `modelHistoricalRuns`) проекта dbt в рабочей среде.
* На уровне задания — для получения результатов конкретного запуска задания dbt для заданного типа ресурса, например `models` или `test`.

## Предварительные требования

* У вас должна быть [мультитенантная](https://docs.getdbt.tech/docs/platform/about-platform/tenancy.md#multi-tenant) или [однотенантная](https://docs.getdbt.tech/docs/platform/about-platform/tenancy.md#single-tenant) учетная запись dbt.
* Вы должны использовать [тарифный план Starter, Enterprise или Enterprise+](https://www.getdbt.com/pricing/).
* Ваши проекты должны использовать [каналы выпуска](https://docs.getdbt.tech/docs/dbt-versions/dbt-release-tracks.md) dbt или dbt версии 1.0 или более поздней. Инструкции по обновлению см. в разделе [Обновление версии dbt в Cloud](https://docs.getdbt.tech/docs/dbt-versions/upgrade-dbt-platform-version.md).

## Для чего можно использовать Discovery API

Нажмите на следующие вкладки, чтобы узнать больше о случаях использования API, анализе, который вы можете провести, и результатах, которых вы можете достичь, интегрировав его.

Чтобы использовать API напрямую или интегрировать с ним свой инструмент, обратитесь к разделу [Сценарии использования и примеры](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md), где приведена подробная информация.

### Производительность

Используйте API для анализа исторических данных, таких как время сборки моделей, чтобы оценить состояние ваших проектов dbt. Выявление неэффективных настроек оркестрации может помочь снизить затраты на инфраструктуру и обеспечить более своевременное выполнение задач. Подробнее о том, как это сделать, см. в разделе [Производительность](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md#performance).

Например, вы можете использовать вкладку [времени выполнения моделей](https://docs.getdbt.tech/docs/deploy/run-visibility.md#model-timing-tab), чтобы выявить и устранить узкие места при сборке моделей:

[![Визуализация времени выполнения моделей в dbt](/img/docs/dbt-platform/discovery-api/model-timing.png?v=2 "Визуализация времени выполнения моделей в dbt")](#)Визуализация времени выполнения моделей в dbt

### Качество

Используйте API, чтобы определять точность и актуальность данных, отслеживая сбои тестов, свежесть источников и статус запусков. Точная и надежная информация важна для аналитики, принятия решений и мониторинга и помогает вашей организации избегать ошибочных решений. Подробнее об этом см. в разделе [Качество](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md#quality).

При использовании с [вебхуками](https://docs.getdbt.tech/docs/deploy/webhooks.md) это также может помочь в обнаружении, расследовании и оповещении о проблемах.

### Обнаружение

Используйте API, чтобы находить и изучать ресурсы dbt в интегрированных инструментах на основе определений моделей и метрик, а также информации о столбцах. Подробнее см. в разделе [Discovery](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md#discovery).

Производители данных должны управлять и организовывать данные для заинтересованных сторон, в то время как потребители данных должны быстро и уверенно анализировать данные в большом масштабе, чтобы принимать обоснованные решения, которые улучшают бизнес-результаты и снижают организационные издержки. API полезен для обнаружения данных в каталогах, аналитических приложениях и инструментах машинного обучения (ML). Он может помочь вам понять происхождение и значение наборов данных для вашего анализа.

[![Происхождение данных, созданное dbt](/img/docs/collaborate/dbt-explorer/example-model-details.png?v=2 "Происхождение данных, созданное dbt")](#)Происхождение данных, созданное dbt

### Управление

Используйте API, чтобы узнать, кто разработал модели и кто их использует, и на основе этой информации выработать стандартные практики для улучшения управления данными. Подробнее см. в разделе [Управление данными](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md#governance).

### Разработка

Используйте API для анализа изменений и использования наборов данных, изучая экспозиции (exposures), происхождение данных и зависимости. Результаты анализа помогут вам понять, как создавать и развивать более эффективные проекты dbt. Подробнее см. в разделе [Разработка](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md#development).

[![Используйте экспозиции для встраивания плиток состояния данных в свои дашборды, чтобы наглядно показывать потребителям данных, насколько этим данным можно доверять.](/img/docs/collaborate/dbt-explorer/data-tile-pass.png?v=2 "Используйте экспозиции для встраивания плиток состояния данных в свои дашборды, чтобы наглядно показывать потребителям данных, насколько этим данным можно доверять.")](#)Используйте экспозиции для встраивания плиток состояния данных в свои дашборды, чтобы наглядно показывать потребителям данных, насколько этим данным можно доверять.

## Типы состояния проекта

На уровне окружения можно запрашивать эти два типа [состояния проекта](https://docs.getdbt.tech/docs/dbt-apis/project-state.md):

* **Определение** — Логическое состояние [ресурсов](https://docs.getdbt.tech/docs/build/projects.md) проекта dbt, которое обновляется при изменении проекта.
* **Примененное** — Результат успешного выполнения DAG dbt, который создает или описывает состояние базы данных (например: `dbt run`, `dbt test`, свежесть источников и так далее).

Эти состояния позволяют вам легко изучать разницу между определением модели и ее примененным состоянием, чтобы вы могли получить ответы на такие вопросы, как: была ли выполнена модель? или выполнение не удалось? Примененные модели существуют как таблица/представление в платформе данных после их последнего успешного выполнения.

## Связанные документы

* [Сценарии использования и примеры для Discovery API](https://docs.getdbt.tech/docs/dbt-apis/discovery-use-cases-and-examples.md)
* [Выполнение запросов к Discovery API](https://docs.getdbt.tech/docs/dbt-apis/discovery-querying.md)
* [Схема](https://docs.getdbt.tech/docs/dbt-apis/discovery-schema-job.md)
