日期:2026-03-20 目的:說明 item master 如何對應到 Databricks 的 medallion 分層、Unity Catalog、資料品質規則、表清單、job 切法與發布流程。 相關文件:
Databricks 的 Bronze / Silver / Gold
很適合套在這個專案,但要分清楚:
Bronze / Silver / Gold
item_tier / mapping_tier
所以正確切法是:
Bronze / Silver / Gold = 表層級
BI / SI = 身份層級
item_tier / mapping_tier = 成熟度層級
第一版建議先用一個 catalog:
item_master
底下三個 schema:
item_master.bronze
item_master.silver
item_master.gold
第一版不要再切太細。
等流程穩定後,再考慮細分成:
item_master.bronze_raw
item_master.silver_core
item_master.silver_review
item_master.gold_master
item_master.gold_serving
Bronze 只放原始資料,不做最終判斷。
建議表:
raw_invoice_linesraw_channel_masterraw_crowd_submissionsraw_brand_taxonomyraw_category_taxonomy原則:
Silver 是主要工作層。
建議表:
invoice_linesinvoice_name_clusterscluster_membersevidence_observationsmapping_candidatescandidate_evidence_linksreview_tasksreview_answers這層開始做:
proposed_mapping_tierGold 才放正式可用結果。
建議表:
base_itemssellable_itemsitem_barcodessellable_item_imagesmapping_decisions建議 view:
vw_confirmed_invoice_mappingvw_sellable_item_mastervw_base_item_masteritem_tier / mapping_tier 放在哪層不建議在 Bronze 正式標 item_tier / mapping_tier。
最適合開始標:
mapping_candidates.proposed_mapping_tier也就是:
在 Silver:
mapping_tier 值得先導入item_tier 可先維持 銅級正式放:
mapping_decisions.mapping_tierbase_items.item_tiersellable_items.item_tierDatabricks expectations 建議分三種處理:
warndropfail| 規則 | 建議處理 |
|---|---|
| 非關鍵欄位缺漏 | warn |
raw_pn 為空 |
warn |
| 品牌或分類缺失 | warn |
raw_payload 無法解析 |
fail |
| 完全沒有來源識別欄位 | fail |
Bronze 原則:
| 規則 | 建議處理 |
|---|---|
normalized_pn 過短或無意義 |
warn |
brand_hint、category_hint 缺失 |
warn |
| 全零碼、placeholder barcode | drop |
| 明確非法條碼格式 | drop |
cluster_id 不唯一 |
fail |
candidate_id 無法連回 cluster |
fail |
review_answer 無對應 task |
fail |
| 規則 | 建議處理 |
|---|---|
BI / SI 代碼格式不合法 |
fail |
item_tier 非法 |
fail |
mapping_tier 非法 |
fail |
mapping_decisions 無對應 SI |
fail |
mapping_tier = bronze |
不發布 |
| 高風險條碼未解除阻擋旗標 | 不發布 |
不是所有 Gold 表資料都要對外釋出。
建議切兩層:
gold 基礎表gold serving view第一版 serving 條件建議:
mapping_tier IN ('silver', 'gold')sellable_items.status = 'active'item_tier IN ('silver', 'gold')blocking_flags若對外要更保守,可收斂成:
mapping_tier = 'gold'item_tier IN ('silver', 'gold')第一版不建議做成一個超大 job。
建議拆成 5 類:
若要更明確,建議先建這 8 個 job:
bronze_invoice_ingestbronze_channel_master_ingestbronze_crowd_ingestsilver_invoice_preparesilver_candidate_buildsilver_review_syncgold_master_publishops_job_monitorbronze_invoice_ingest
↓
silver_invoice_prepare
↓
silver_candidate_build
↓
silver_review_sync
↓
gold_master_publish
bronze_channel_master_ingest
↓
silver_candidate_build
bronze_crowd_ingest
↓
silver_candidate_build
↓
silver_review_sync
all jobs
↓
ops_job_monitor
bronze_invoice_ingestbronze.raw_invoice_linesbronze_channel_master_ingestbronze.raw_channel_masterbronze_crowd_ingestbronze.raw_crowd_submissionssilver_invoice_prepareinvoice_linesinvoice_name_clusterscluster_membersbrand_hint、category_hintsilver_candidate_buildevidence_observationsSIproposed_mapping_tiersilver_review_syncgold_master_publishmapping_decisionsBI / SIops_job_monitorbronze_invoice_ingestbronze_channel_master_ingestsilver_invoice_preparesilver_candidate_buildgold_master_publishops_job_monitorbronze_crowd_ingestsilver_review_syncsource_batch_id 或等價批號gold_master_publish 與 serving
view第一版可先用保守目標:
T+1hT+4hT+8hT+1hT+24h監控至少要看:
mapping_tier 分布如果第一版不想做太大,最少先建:
raw_invoice_linesraw_channel_masterinvoice_name_clustersevidence_observationsmapping_candidatessellable_itemsmapping_decisions這樣已經能開始跑:
最值得用在:
AI 最適合放在 Silver:
mapping_tierreasons 與 blocking_flags但 AI 的結果不要直接跳到 Gold。
眾包結果也應先落 Silver:
review_tasksreview_answersevidence_observations最後由規則與人工推進到 Gold。
這份文件現在同時負責 Databricks 的架構、表、品質規則與 job
切法。
如果要把 item master 落到 Databricks,先看這份就夠了。