Инджестинг внешних метаданных EnterpriseEnterprise + Preview
С помощью ingestion внешних метаданных вы можете напрямую подключаться к своему хранилищу данных и получать видимость таблиц, представлений и других ресурсов, которые не определены в dbt, в Catalog.
В настоящее время ingestion внешних метаданных поддерживается только для Snowflake.
Учетные данные для внешних метаданных позволяют загружать метаданные, которые существуют вне запусков dbt, например таблицы, представления или информацию о стоимости; как правило, на более высоком уровне, чем тот, к которому имеют доступ окружения dbt. Это полезно для обогащения Catalog нативными для хранилища инсайтами (например, представлениями Snowflake или паттернами доступа) и для создания единого интерфейса обнаружения данных.
Эти учетные данные настраиваются отдельно от учетных данных окружений dbt и имеют область действия на уровне аккаунта, а не проекта.
Предварительные требования
- Наличие аккаунта dbt на тарифе Enterprise или Enterprise+.
- Вы должны быть администратором аккаунта с соответствующими правами, чтобы редактировать подключения.
- Учетные данные должны иметь достаточный доступ на уровне чтения для получения метаданных.
- Включена глобальная навигация.
- В качестве платформы данных используется Snowflake.
- Следите за обновлениями! В ближайшем будущем планируется поддержка других адаптеров.
Инструкции по настройке
Включение инджестинга внешних метаданных
- Нажмите на имя аккаунта внизу левого меню и выберите Account settings.
- В разделе Account information перейдите в Settings и нажмите Edit в правом верхнем углу страницы.
- Выберите опцию Ingest external metadata in dbt Catalog (formerly dbt Explorer) (если она еще не включена).
Настройка подключения к хранилищу
- Перейдите в Account settings.
- В левой панели выберите Connections.
- Выберите существующее подключение или создайте New connection, из которого вы хотите загружать метаданные.
- Прокрутите страницу вниз и нажмите Add credentials в разделе Platform metadata credentials.
- Введите необходимые учетные данные. Они должны обеспечивать видимость на уровне хранилища для соответствующих баз данных и схем.
- Если у вас несколько подключений, ссылающихся на один и тот же идентификатор аккаунта, вам будет предложено добавить учетные данные платформенных метаданных только для одного из них. Остальные подключения с тем же идентификатором аккаунта отобразят сообщение о том, что учетные данные уже настроены.
- Выберите опцию External metadata ingestion.
- Это позволяет метаданным из данного подключения заполнять Catalog.
- Опционально: включите дополнительные возможности, такие как cost optimization, в разделе Features внутри Platform metadata credentials.
- В разделе Catalog filters примените фильтры, чтобы ограничить, какие метаданные будут загружаться:
- Можно фильтровать по database, schema, table или view.
- Примечание: чтобы включить все базы данных или схемы, укажите
.*в поле Allow.
- Примечание: чтобы включить все базы данных или схемы, укажите
- Настоятельно рекомендуется фильтровать по определенным схемам. Подробнее см. в разделе Important considerations.
- Эти поля принимают регулярные выражения в формате CSV:
- Пример:
DIMсоответствуетDIM_ORDERSиDIMENSION_TABLE(базовое совпадение «содержит»). - Поддерживаются подстановочные символы. Например:
DIM*соответствуетDIM_ORDERSиDIM_PRODUCTS.
- Пример:
- Можно фильтровать по database, schema, table или view.
Требуемые учетные данные
В этом разделе настраивается базовый доступ dbt к Snowflake. Создается роль (dbt_metadata_role) с минимально необходимыми правами и пользователь (dbt_metadata_user), предназначенный исключительно для доступа dbt к метаданным. Это обеспечивает четкое и контролируемое разделение доступа, позволяя dbt читать метаданные без предоставления более широких прав. Такая настройка гарантирует, что dbt может читать метаданные для профилирования, документации и lineage, не имея возможности изменять данные или управлять ресурсами.
- Создайте роль:
CREATE OR REPLACE ROLE dbt_metadata_role;
- Предоставьте доступ к warehouse для выполнения запросов просмотра метаданных:
GRANT USAGE ON WAREHOUSE "<your-warehouse>" TO ROLE dbt_metadata_role;
Если для ingestion метаданных требуется перезапуск warehouse (и auto-resume не включен), может потребоваться также предоставить роли право OPERATE.
Если у вас еще нет пользователя, создайте отдельного пользователя dbt для доступа к метаданным. Замените <your-password> на надежный пароль, а <your-warehouse> — на имя warehouse, указанное выше:
CREATE USER dbt_metadata_user
DISPLAY_NAME = 'dbt Metadata Integration'
PASSWORD = 'our-password>'
DEFAULT_ROLE = dbt_metadata_role
TYPE = 'LEGACY_SERVICE'
DEFAULT_WAREHOUSE = '<your-warehouse>';
- Назначьте роль пользователю:
GRANT ROLE dbt_metadata_role TO USER dbt_metadata_user;
Примечание: используйте сервисные учетные записи только для чтения, чтобы соблюдать принцип минимальных привилегий и улучшить аудит.
Назначение прав доступа к метаданным
В этом разделе описаны минимально необходимые привилегии для чтения метаданных из каждой требуемой базы данных Snowflake. Они обеспечивают доступ к схемам, таблицам, представлениям и информации о lineage, позволяя dbt профилировать и документировать данные, при этом предотвращая любые изменения.
Замените your-database на имя базы данных Snowflake, для которой нужно предоставить доступ к метаданным. Повторите этот блок для каждой соответствующей базы данных:
SET db_var = '"<your-database>"';
-- Grant access to view the database and its schemas
GRANT USAGE ON DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT USAGE ON ALL SCHEMAS IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT USAGE ON FUTURE SCHEMAS IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
-- Grant REFERENCES to enable lineage and dependency analysis
GRANT REFERENCES ON ALL TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT REFERENCES ON FUTURE TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT REFERENCES ON ALL EXTERNAL TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT REFERENCES ON FUTURE EXTERNAL TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT REFERENCES ON ALL VIEWS IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT REFERENCES ON FUTURE VIEWS IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
-- Recommended grant SELECT for privileges to enable metadata introspection and profiling
GRANT SELECT ON ALL TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON FUTURE TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON ALL EXTERNAL TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON FUTURE EXTERNAL TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON ALL VIEWS IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON FUTURE VIEWS IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON ALL DYNAMIC TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT SELECT ON FUTURE DYNAMIC TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
-- Grant MONITOR on dynamic tables (e.g., for freshness or status checks)
GRANT MONITOR ON ALL DYNAMIC TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
GRANT MONITOR ON FUTURE DYNAMIC TABLES IN DATABASE IDENTIFIER($db_var) TO ROLE dbt_metadata_role;
Предоставление доступа к метаданным Snowflake
На этом шаге роли dbt (dbt_metadata_role) предоставляется доступ к системной базе данных Snowflake, что позволяет читать статистику использования, историю запросов и информацию о lineage, необходимую для комплексного анализа метаданных.
Предоставьте права для чтения статистики использования и lineage из системной базы данных Snowflake:
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE dbt_metadata_role;
Важные соображения
Ниже приведены лучшие практики для ingestion внешних метаданных, направленные на обеспечение стабильной, надежной и масштабируемой интеграции метаданных из сторонних систем.
- Catalog объединяет общие ресурсы между dbt и Snowflake. Например, если таблица Snowflake представляет модель dbt, они отображаются как единый ресурс в Catalog. Чтобы такое объединение происходило корректно, одно и то же подключение должно использоваться как production environment, так и учетными данными для ingestion внешних метаданных.
- Избегайте дубликатов: по возможности используйте одно подключение для метаданных на каждую платформу (например, одно для Snowflake, одно для BigQuery).
- Наличие нескольких подключений, указывающих на одно и то же хранилище, может приводить к дублированию метаданных.
- Синхронизация с окружениями dbt: для объединения lineage и метаданных убедитесь, что одно и то же подключение к хранилищу используется и окружением dbt, и ingestion внешних метаданных.
- Используйте фильтры, чтобы ограничить ingestion только релевантными активами:
- Например, ограничьтесь только production-схемами или исключите transient/temporary схемы.
Ingestion внешних метаданных выполняется ежедневно в 17:00 UTC, а также запускается сразу после каждого обновления и сохранения учетных данных.