跳轉至

數據產品 (REQ-1634)

數據產品是一組具名、有擁有者、共同發佈以供使用的資料表集合。它是目錄向使用者公開的單位——並非個別資料表,而是某個網域明確宣告已就緒的整理後介面。欄位遵循ODPS(開放數據產品標準)詞彙,適用於Provisa已擁有真實來源之處。[tool-verified: provisa/core/models.py:318-342, provisa-ui/src/i18n/locales/en/dataProductsTab.json]

網域擁有權規則

每個數據產品恰好由一個網域擁有(domain_id 為必填欄位)。資料表只有在與數據產品共享相同 domain_id 時,才可加入該數據產品。UI會將資料表選擇器限定於該產品所屬的網域;後端會在儲存時拒絕網域不相符的 product_id 指派。[tool-verified: provisa/core/models.py:320, docs/arch/requirements.yaml:54573-54574]

若某產品需要另一網域的數據,必須先將該數據以網域檢視形式引入,再將該檢視納入為成員。

輸出埠

指派予數據產品的資料表及命令,即為其輸出埠——使用者所見的可查詢介面。指派資料表會設定 Table.product_id;清除則移除其成員資格。一個資料表最多只能屬於一個產品。同一網域內的命令亦可指派為成員。[tool-verified: provisa/core/models.py:941, provisa-ui/src/i18n/locales/en/dataProductsTab.json:tablesLabel,commandsLabel]

詳情面板分節

在管理員UI中開啟數據產品,會顯示以下面板:

面板 顯示內容
輸出埠 成員資料表及其欄位;成員命令;範例查詢(GraphQL、SQL、Cypher、gRPC、JSON:API、REST)
相關詞彙 連結至該產品成員資料表的詞彙表術語
相關資料表 可透過已批准關係從成員資料表到達、但尚未成為該產品一部分的資料表
關係 該產品成員資料表之間已批准的關係
血緣 欄位血緣圖,顯示成員資料表作為已發佈端點,以及所有上游資料表。需要 view_governance 能力
輸入埠 由血緣衍生出的單跳輸入 → 轉換 → 輸出。需要 view_governance
數據品質 其合約掃描此產品輸出埠的檢查器資料表;每次執行、每項檢查各一行。包含規則模態視窗及PII標籤顯示

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

中繼資料匯出

預設情況下,只有指派至某產品的資料表會發佈至外部目錄。build_snapshot 會套用 data_products_only 篩選器:未指派的資料表會被保留不發佈,連同其關係邊、血緣邊及治理標籤一併保留。數據來源及網域則一律發佈,不受此限。[tool-verified: provisa/api/metadata_export/builder.py:594,609,641]

沒有任何已匯出成員的產品不會發佈——空的列表會令人誤以為該產品存在卻毫無內容。[tool-verified: provisa/api/metadata_export/model.py:106-113]

只有具備原生數據產品概念的目錄,才會將其發佈為一級實體;其餘目錄則會發佈(已篩選的)成員資料表,而不作產品分組:

目錄 發佈形式
Snowflake Horizon SHARE + organization listing(原生數據產品);publish=false 使其保持DRAFT狀態,publish=true 則使其上線
BigQuery Analytics Hub Analytics Hub listing(原生)
OpenMetadata DataProduct 實體(原生)
DataHub 原生 dataProduct URN實體,具備自身的屬性/擁有權切面
Collibra 屬於 Data Product 社群類型的資產,與成員資料表相關聯
Apache Atlas 盡力而為的自訂 provisa_data_product typedef——Atlas並無原生數據產品類型
Atlan 盡力而為的自訂 DataProduct typedef猜測——Atlan並無此項的文件化穩定類型
OpenLineage 並非listing——成員資料表會攜帶一個命名該產品的自訂 provisa_data_product facet

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

欄位

欄位 必填 備註
id 機器可讀的穩定識別碼,例如 customer_360
domain_id 擁有網域;成員資格規則依此強制執行
name 顯示名稱
owner_role 對此產品負責的角色;與網域數據管家不同
team_role 擔任此角色者組成日常工作團隊;可解析至個別使用者
purpose 此產品發佈的內容及原因
limitations 已知限制、注意事項或例外情況
usage 如何使用此產品
version 例如 1.2.0
status 例如 proposedactivedeprecatedretired
sla 服務水平承諾;僅限散文形式——一個產品橫跨多個成員資料表,結構化SLA無法明確指出所描述的是哪個成員
support 自由文字支援指引
support_contact 電郵或URL;Snowflake Horizon Catalog organization listing manifest要求必填(REQ-1635
publish true 表示立即發佈Horizon Catalog listing;新listing預設為DRAFT(REQ-1635
custom_properties 標準欄位未涵蓋的任意鍵值中繼資料

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