Ir para o conteúdo

Produtos de dados (REQ-1634)

Um produto de dados é um conjunto nomeado e possuído de tabelas publicadas juntas para consumo. É a unidade que o catálogo expõe aos consumidores — não tabelas individuais, mas uma superfície curada que um domínio declara explicitamente como pronta. Os campos seguem o vocabulário do ODPS (Open Data Product Standard) onde o Provisa já detém a fonte da verdade. [tool-verified: provisa/core/models.py:318-342, provisa-ui/src/i18n/locales/en/dataProductsTab.json]

Regra de propriedade de domínio

Todo produto de dados é possuído por exatamente um domínio (domain_id é um campo obrigatório). Uma tabela pode integrar um produto de dados somente quando ambos compartilham o mesmo domain_id. A interface do usuário delimita o seletor de tabelas ao domínio do produto; o backend rejeita uma atribuição de product_id cujo domínio não corresponda ao do produto no momento de salvamento. [tool-verified: provisa/core/models.py:320, docs/arch/requirements.yaml:54573-54574]

Um produto que necessite de dados de outro domínio deve importá-los como uma view de domínio primeiro e só então incluir a view como membro.

Portas de saída

As tabelas e comandos atribuídos a um produto de dados são suas portas de saída — a superfície consultável que os consumidores veem. Atribuir uma tabela define Table.product_id; removê-la cancela a associação. Uma tabela pertence a no máximo um produto. Comandos do mesmo domínio também podem ser atribuídos como membros. [tool-verified: provisa/core/models.py:941, provisa-ui/src/i18n/locales/en/dataProductsTab.json:tablesLabel,commandsLabel]

Seções do painel de detalhes

Ao abrir um produto de dados na interface de administração, são exibidos os seguintes painéis:

Painel O que exibe
Output Ports Tabelas membro e suas colunas; comandos membros; consultas de exemplo (GraphQL, SQL, Cypher, gRPC, JSON:API, REST)
Related Terms Termos do glossário vinculados às tabelas membro do produto
Related Tables Tabelas alcançáveis a partir das tabelas membro por meio de relacionamentos aprovados, mas ainda não integrantes do produto
Relationships Relacionamentos aprovados entre as tabelas membro deste produto
Lineage Grafo de linhagem de coluna mostrando as tabelas membro como o endpoint publicado mais toda tabela upstream. Exige a capability view_governance
Input Ports Entradas a um salto → transformação → saídas derivadas da linhagem. Exige view_governance
Data Quality Tabelas de verificação cujos contratos escaneiam as portas de saída deste produto; uma linha por verificação por execução. Inclui um modal de regras e exibição de tag PII

[tool-verified: provisa-ui/src/i18n/locales/en/dataProductsTab.json:detail]

Exportação de metadados

Por padrão, somente tabelas atribuídas a um produto são publicadas em catálogos externos. build_snapshot aplica um filtro data_products_only: tabelas não atribuídas são retidas, juntamente com suas arestas de relacionamento, arestas de linhagem e tags de governança. Fontes e domínios sempre são publicados independentemente. [tool-verified: provisa/api/metadata_export/builder.py:594,609,641]

Um produto sem membros exportados não é publicado — uma listagem vazia afirmaria que um produto existe sem nada por trás dele. [tool-verified: provisa/api/metadata_export/model.py:106-113]

Somente catálogos com um conceito nativo de produto de dados o publicam como entidade de primeira classe; os demais publicam as tabelas membro (já filtradas) sem agrupamento por produto:

Catálogo Publicado como
Snowflake Horizon SHARE + listagem da organização (Data Product nativo); publish=false mantém como DRAFT, publish=true torna ativo
BigQuery Analytics Hub Listagem do Analytics Hub (nativo)
OpenMetadata Entidade DataProduct (nativo)
DataHub Entidade URN nativa dataProduct com suas próprias propriedades/aspectos de propriedade
Collibra Ativo do tipo de comunidade Data Product, relacionado às tabelas membro
Apache Atlas Melhor esforço com typedef personalizado provisa_data_product — o Atlas não tem tipo nativo de produto de dados
Atlan Melhor esforço com suposição de typedef personalizado DataProduct — o Atlan não tem tipo documentado e estável para este conceito
OpenLineage Não é uma listagem — tabelas membro carregam uma faceta personalizada provisa_data_product nomeando o produto

[tool-verified: provisa/api/metadata_export/snowflake_horizon.py:389-418, provisa/api/metadata_export/bigquery_dataplex.py:112-136, provisa/api/metadata_export/openmetadata.py:326-344, provisa/api/metadata_export/datahub.py:133-136,443-483, provisa/api/metadata_export/collibra.py:129-133,371-388, provisa/api/metadata_export/atlas.py:134-147, provisa/api/metadata_export/atlan.py:60, provisa/api/metadata_export/openlineage.py:243,348]

Campos

Campo Obrigatório Notas
id Sim Identificador estável legível por máquina, ex. customer_360
domain_id Sim Domínio proprietário; regra de associação aplicada contra este valor
name Sim Nome de exibição
owner_role Não Função responsável por este produto; distinta do steward do domínio
team_role Não Função cujos membros formam a equipe de trabalho do dia a dia; resolve para indivíduos
purpose Não O que este produto publica e por quê
limitations Não Restrições, ressalvas ou exclusões conhecidas
usage Não Como consumir este produto
version Não ex. 1.2.0
status Não ex. proposed, active, deprecated, retired
sla Não Compromissos de nível de serviço; somente texto — um produto abrange múltiplas tabelas membro e um SLA estruturado não consegue nomear sem ambiguidade qual membro descreve
support Não Orientação de suporte em texto livre
support_contact Não Email ou URL; exigido pelos manifestos de listagem da organização do Snowflake Horizon Catalog (REQ-1635)
publish Não true para publicar listagens do Horizon Catalog imediatamente; novas listagens padrão como DRAFT (REQ-1635)
custom_properties Não Metadados arbitrários de chave-valor não cobertos pelos campos padrão

[tool-verified: provisa/core/models.py:318-342, provisa/api/admin/types.py:104-118,538-551]