Vai al contenuto

Prodotti Dati (REQ-1634)

Un prodotto dati è un pacchetto di tabelle con nome e proprietà, pubblicato insieme per il consumo. È l'unità che il catalogo espone ai consumatori — non le singole tabelle, ma una superficie curata che un dominio dichiara esplicitamente pronta. I campi seguono il vocabolario ODPS (Open Data Product Standard) laddove Provisa possiede già la fonte di verità. [tool-verified: provisa/core/models.py:318-342, provisa-ui/src/i18n/locales/en/dataProductsTab.json]

Regola di proprietà del dominio

Ogni prodotto dati è di proprietà di esattamente un dominio (domain_id è un campo obbligatorio). Una tabella può unirsi a un prodotto dati solo quando entrambi condividono lo stesso domain_id. La UI limita il selettore di tabelle al dominio del prodotto; il backend rifiuta un'assegnazione product_id il cui dominio non corrisponde a quello del prodotto al momento del salvataggio. [tool-verified: provisa/core/models.py:320, docs/arch/requirements.yaml:54573-54574]

Un prodotto che necessita di dati da un altro dominio deve prima far entrare quei dati come vista di dominio, poi includere la vista come membro.

Output port

Le tabelle e i comandi assegnati a un prodotto dati sono i suoi output port — la superficie interrogabile che i consumatori vedono. Assegnare una tabella imposta Table.product_id; rimuoverla elimina l'appartenenza. Una tabella appartiene al massimo a un prodotto. Anche i comandi nello stesso dominio possono essere assegnati come membri. [tool-verified: provisa/core/models.py:941, provisa-ui/src/i18n/locales/en/dataProductsTab.json:tablesLabel,commandsLabel]

Sezioni del pannello dei dettagli

Aprendo un prodotto dati nella UI di amministrazione vengono mostrati questi pannelli:

Pannello Cosa mostra
Output Ports Tabelle membro e le loro colonne; comandi membro; query di esempio (GraphQL, SQL, Cypher, gRPC, JSON:API, REST)
Related Terms Termini del glossario collegati alle tabelle membro del prodotto
Related Tables Tabelle raggiungibili dalle tabelle membro tramite relazioni approvate ma non ancora parte del prodotto
Relationships Relazioni approvate tra le tabelle membro di questo prodotto
Lineage Grafo di derivazione delle colonne che mostra le tabelle membro come endpoint pubblicato più ogni tabella a monte. Richiede la capability view_governance
Input Ports Input a un hop → trasformazione → output derivati dal lineage. Richiede view_governance
Data Quality Tabelle di verifica i cui contratti scansionano gli output port di questo prodotto; una riga per ogni controllo per esecuzione. Include un modale delle regole e la visualizzazione dei tag PII

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

Esportazione dei metadati

Solo le tabelle assegnate a un prodotto vengono pubblicate nei cataloghi esterni per impostazione predefinita. build_snapshot applica un filtro data_products_only: le tabelle non assegnate vengono trattenute, insieme ai loro archi di relazione, archi di lineage e tag di governance. Le origini dati e i domini vengono sempre pubblicati a prescindere. [tool-verified: provisa/api/metadata_export/builder.py:594,609,641]

Un prodotto senza membri esportati non viene pubblicato — un elenco vuoto rivendicherebbe l'esistenza di un prodotto senza nulla dietro. [tool-verified: provisa/api/metadata_export/model.py:106-113]

Solo i cataloghi con un concetto nativo di prodotto dati lo pubblicano come entità di prima classe; gli altri pubblicano le tabelle membro (già filtrate) senza un raggruppamento di prodotto:

Catalogo Pubblicato come
Snowflake Horizon SHARE + organization listing (Data Product nativo); publish=false mantiene lo stato DRAFT, publish=true lo rende attivo
BigQuery Analytics Hub Listing di Analytics Hub (nativo)
OpenMetadata Entità DataProduct (nativa)
DataHub Entità URN dataProduct nativa con propri aspetti di proprietà/proprietà
Collibra Asset di un community type Data Product, correlato alle tabelle membro
Apache Atlas Typedef personalizzato provisa_data_product best-effort — Atlas non ha un tipo nativo di prodotto dati
Atlan Ipotesi di typedef personalizzato DataProduct best-effort — Atlan non ha un tipo stabile documentato per questo
OpenLineage Non è un listing — le tabelle membro portano un facet personalizzato provisa_data_product che nomina il prodotto

[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]

Campi

Campo Obbligatorio Note
id Identificatore stabile leggibile dalla macchina, es. customer_360
domain_id Dominio proprietario; la regola di appartenenza è applicata rispetto a questo
name Nome visualizzato
owner_role No Ruolo responsabile di questo prodotto; distinto dallo steward di dominio
team_role No Ruolo i cui titolari formano il team operativo quotidiano; si risolve in individui
purpose No Cosa pubblica questo prodotto e perché
limitations No Vincoli, avvertenze o esclusioni noti
usage No Come consumare questo prodotto
version No es. 1.2.0
status No es. proposed, active, deprecated, retired
sla No Impegni a livello di servizio; solo prosa — un prodotto abbraccia più tabelle membro e uno SLA strutturato non può nominare senza ambiguità quale membro descrive
support No Indicazioni di supporto in testo libero
support_contact No Email o URL; richiesto dai manifest di organization listing di Snowflake Horizon Catalog (REQ-1635)
publish No true per pubblicare immediatamente i listing di Horizon Catalog; i nuovi listing sono DRAFT per impostazione predefinita (REQ-1635)
custom_properties No Metadati chiave-valore arbitrari non coperti dai campi standard

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