Data Products¶
Продукт данных — это именованный, принадлежащий домену пакет таблиц, публикуемых вместе для потребления. Это единица, которую каталог раскрывает потребителям: курируемый набор таблиц, который домен объявил готовым. Поля следуют словарю ODPS (Open Data Product Standard) там, где Provisa уже является источником истины.
Правило владения доменом¶
Каждый продукт данных принадлежит ровно одному домену (domain_id — обязательное поле). Таблица может войти в продукт данных только в том случае, если оба разделяют один и тот же domain_id. UI ограничивает выбор таблиц доменом продукта; backend отклоняет назначение product_id, чей домен не совпадает с доменом продукта, во время сохранения.
Продукт, которому нужны данные из другого домена, должен сначала внести эти данные как представление домена, а затем включить это представление как участника.
Выходные порты¶
Таблицы и команды, назначенные продукту данных, являются его выходными портами, то есть запрашиваемой поверхностью, которую видят потребители. Назначение таблицы устанавливает Table.product_id; снятие назначения удаляет членство. Таблица принадлежит не более чем одному продукту. Команды в том же домене также могут быть назначены участниками.
Разделы панели детализации¶
При открытии продукта данных в административном UI показываются следующие панели:
| Панель | Что показывает |
|---|---|
| Output Ports | Таблицы-участники и их колонки; команды-участники; примеры запросов (GraphQL, SQL, Cypher, gRPC, JSON:API, REST) |
| Related Terms | Термины глоссария, связанные с таблицами-участниками продукта |
| Related Tables | Таблицы, достижимые из таблиц-участников через одобренные связи, но ещё не входящие в продукт |
| Relationships | Одобренные связи между таблицами-участниками этого продукта |
| Lineage | Граф происхождения колонок, показывающий таблицы-участники как опубликованную конечную точку плюс каждую вышестоящую таблицу. Требует возможность view_governance |
| Input Ports | Однохоповые входы → преобразование → выходы, выведенные из lineage. Требует view_governance |
| Data Quality | Таблицы-чекеры, чьи контракты сканируют выходные порты этого продукта; одна строка на проверку на прогон. Включает модальное окно с правилами и отображение тегов ПДн |
Экспорт метаданных¶
По умолчанию во внешние каталоги публикуются только таблицы, назначенные продукту. build_snapshot применяет фильтр data_products_only: неназначенные таблицы отсекаются, вместе с их рёбрами связей, рёбрами lineage и тегами governance. Источники и домены публикуются всегда, независимо от этого.
Продукт без экспортированных участников не публикуется. Пустой листинг заявлял бы о существовании продукта, за которым ничего не стоит.
Только каталоги с нативным понятием продукта данных публикуют его как самостоятельную сущность; остальные публикуют (уже отфильтрованные) таблицы-участники без группировки в продукт:
| Каталог | Публикуется как |
|---|---|
| Snowflake Horizon | SHARE + организационный листинг (нативный Data Product); publish=false оставляет его в состоянии DRAFT, publish=true публикует его вживую. Словарь данных листинга охватывает каждого участника и каждую колонку; первые пять участников выделяются, а маскированные колонки скрыты в предпросмотре |
| BigQuery Analytics Hub | Листинг Analytics Hub (нативный) |
| OpenMetadata | Сущность DataProduct (нативная) |
| DataHub | Нативная URN-сущность dataProduct с собственными аспектами properties/ownership |
| Collibra | Актив типа сообщества Data Product, связанный с таблицами-участниками |
| Apache Atlas | Пользовательский typedef provisa_data_product по принципу «лучшее из возможного» — у Atlas нет нативного типа продукта данных |
| Atlan | Пользовательский typedef-догадка DataProduct по принципу «лучшее из возможного» — у Atlan нет документированного стабильного типа для этого |
| OpenLineage | Не листинг — таблицы-участники несут пользовательский фасет provisa_data_product, называющий продукт |
Поля¶
| Поле | Обязательно | Примечания |
|---|---|---|
id |
Да | Машиночитаемый стабильный идентификатор, например customer_360 |
domain_id |
Да | Владеющий домен; правило членства применяется относительно него |
name |
Да | Отображаемое имя |
owner_role |
Нет | Роль, ответственная за этот продукт; отлична от стюарда домена |
team_role |
Нет | Роль, чьи держатели формируют повседневную рабочую команду; разрешается до отдельных лиц |
purpose |
Нет | Что публикует этот продукт и зачем |
limitations |
Нет | Известные ограничения, оговорки или исключения |
usage |
Нет | Как потреблять этот продукт |
version |
Нет | например, 1.2.0 |
status |
Нет | например, proposed, active, deprecated, retired |
sla |
Нет | Обязательства по уровню обслуживания; только текст — продукт охватывает несколько таблиц-участников, и структурированный SLA не может однозначно указать, какого участника он описывает |
support |
Нет | Произвольный текст с рекомендациями по поддержке |
support_contact |
Нет | Email или URL; требуется манифестами организационного листинга Snowflake Horizon Catalog |
publish |
Нет | true для немедленной публикации листингов Horizon Catalog; новые листинги по умолчанию находятся в DRAFT |
custom_properties |
Нет | Произвольные метаданные ключ-значение, не покрытые стандартными полями |