分析脈絡
對應提問
KKday 的 Prod Tag(Lv1/Lv2/Lv3)和 BD Tag 各是什麼?結構差異?一對多何時發生?何時用哪套?
拆解方式
- 從 BigQuery (dm_tableau.tableau_bd_prod) 查詢真實資料
- 分析 Prod Tag 三層結構的深度分布與多值比例
- 分析 BD Tag 分布與 Vertical 聚合
- 交叉比對同一商品的兩套標籤,說明分類角度差異
資料來源與欄位
dm_tableau.tableau_bd_prod— 商品分析主檔- 欄位:
prod_tag_lv1_nm~prod_tag_lv3_nm_en(Prod Tag) - 欄位:
prod_bd_tag_cd/prod_bd_tag_note(BD Tag)
資料區間
2026-03-23 快照(全量商品資料)
Prod Tag 是什麼?
面向用戶的商品分類系統,用於網站展示和推薦演算法。
三層樹狀結構
| 層級 | 欄位(中文) | 欄位(英文) | 說明 | 範例 |
|---|---|---|---|---|
| Lv1(大類) | prod_tag_lv1_nm | prod_tag_lv1_nm_en | 最粗分類 | 交通、景點門票 |
| Lv2(細分) | prod_tag_lv2_nm | prod_tag_lv2_nm_en | 進一步細分 | 鐵路、室內遊戲 |
| Lv3(精細) | prod_tag_lv3_nm | prod_tag_lv3_nm_en | 最細分類 | 高鐵假期、飛行傘 |
重要特性:
- 不是每個商品都有完整三層 — 住宿、美食只到 Lv1;購物只到 Lv2;行程&體驗才有完整三層
- Lv2/Lv3 可以是多值 — 逗號分隔的字串,如
"觀光行程,戶外&運動" - 資料來源:
dm_tableau.tableau_bd_prod,底層來自dw_kkdb_product.product_categories
Lv1 商品數量分布
全平台 8 個 Lv1 大類的商品數量(來自 BigQuery 真實資料)。
關鍵發現
- 住宿以 247,811 個商品佔據絕對多數(57.7%),反映 KKday 住宿供給量龐大
- 美食(76,153)和行程&體驗(62,357)分列第二、三名
- WiFi & SIM 卡、購物、旅行服務數量較少,屬於輔助性分類
資料來源與計算方式
SQL 查詢
SELECT prod_tag_lv1_nm,
prod_tag_lv1_nm_en,
COUNT(DISTINCT prod_oid) AS prod_cnt
FROM `dm_tableau.tableau_bd_prod`
WHERE prod_tag_lv1_nm IS NOT NULL
GROUP BY 1, 2
ORDER BY prod_cnt DESC
標籤深度分析 — 多少商品有完整三層?
大部分商品只到 Lv1,約 20% 有完整三層標籤。
關鍵發現
- 68.9% 的商品只有 Lv1(323,964 個)— 主要是住宿、美食這類不需細分的大類
- 20% 有完整三層(94,004 個)— 以行程&體驗、交通為主
- 8.6% 完全無標籤(40,431 個)— 可能是新上架或尚未分類的商品
- 只到 Lv2 的只有 2.6%(12,117 個)
資料來源與計算方式
SQL 查詢
SELECT CASE
WHEN prod_tag_lv3_nm IS NOT NULL THEN '完整三層 (Lv1+Lv2+Lv3)'
WHEN prod_tag_lv2_nm IS NOT NULL THEN '兩層 (Lv1+Lv2)'
WHEN prod_tag_lv1_nm IS NOT NULL THEN '僅 Lv1'
ELSE '無標籤'
END AS tag_depth,
COUNT(DISTINCT prod_oid) AS prod_cnt
FROM `dm_tableau.tableau_bd_prod`
GROUP BY 1
ORDER BY prod_cnt DESC
一對多關係 — Lv2/Lv3 多值標籤
一個商品可以同時屬於多個 Lv2/Lv3 分類(以逗號分隔儲存)。
關鍵發現
- 有 Lv2 的商品中,15,782 個(14.9%)是多值,一個商品同時歸屬多個 Lv2 分類
- 多值主要出現在「行程&體驗」類別 — 一個行程可以同時是觀光行程又是戶外運動
- 多值標籤反映了旅遊商品的跨類別特性,這也是 Prod Tag 和 BD Tag 的關鍵差異之一
真實範例(多值標籤商品)
| 商品 | Lv1 | Lv2(多值) | Lv3(多值) |
|---|---|---|---|
| Sapporo Snowmobile & Snow Park | 行程&體驗 | 觀光行程,戶外&運動 | 半/一日遊,滑雪&雪上活動 |
| Day Tour Hoa Lu - Tam Coc | 行程&體驗 | 觀光行程,觀光行程 | 半/一日遊,遊船觀光 |
| Beach Horse Riding in Bali | 行程&體驗 | 觀光行程,觀光行程 | 半/一日遊,生態之旅 |
| Mt. Tsukuba Plum Blossoms | 行程&體驗 | 觀光行程,戶外&運動 | 半/一日遊,極限運動 |
查詢注意:做分析時,如果要按 Lv2 或 Lv3 分組計算,必須先用
UNNEST(SPLIT(...)) 展開多值欄位,否則整個逗號字串會被視為一個分類。
SELECT tag_lv2,
COUNT(DISTINCT prod_oid) AS prod_cnt
FROM `dm_tableau.tableau_bd_prod`,
UNNEST(SPLIT(prod_tag_lv2_nm, ',')) AS tag_lv2
WHERE prod_tag_lv2_nm IS NOT NULL
GROUP BY 1
ORDER BY prod_cnt DESC
資料來源與計算方式
SQL 查詢
SELECT CASE
WHEN prod_tag_lv2_nm LIKE '%,%' THEN '多值 (含逗號)'
WHEN prod_tag_lv2_nm IS NOT NULL THEN '單值'
ELSE '無 Lv2'
END AS lv2_type,
COUNT(DISTINCT prod_oid) AS prod_cnt
FROM `dm_tableau.tableau_bd_prod`
WHERE prod_tag_lv1_nm IS NOT NULL
GROUP BY 1
ORDER BY prod_cnt DESC
完整分類樹範例
以「交通」和「行程&體驗」為例,展示三層結構的層次關係。
交通 (Transport)
Lv1: 交通 ├─ Lv2: 機場交通 │ ├─ Lv3: 機場鐵路與巴士 │ └─ Lv3: 包車機場接送 ├─ Lv2: 鐵路 │ ├─ Lv3: 其他鐵路 │ └─ Lv3: 高鐵假期 ├─ Lv2: 包車 │ ├─ Lv3: 專車服務 │ ├─ Lv3: 拼車接駁 │ └─ Lv3: 其他包車服務 ├─ Lv2: 交通卡&通票 │ ├─ Lv3: 日本 JR Pass │ ├─ Lv3: 歐洲鐵路通票 │ └─ Lv3: 其他交通通票 ├─ Lv2: 巴士 ← 無 Lv3 ├─ Lv2: 租車 ← 無 Lv3 ├─ Lv2: 渡輪 ← 無 Lv3 └─ Lv2: 機車&重機 ← 無 Lv3
行程&體驗 (Tours & Experiences)
Lv1: 行程&體驗 ├─ Lv2: 觀光行程 │ ├─ Lv3: 半/一日遊 │ ├─ Lv3: 多日遊 │ ├─ Lv3: 遊船觀光 │ ├─ Lv3: 步行觀光 │ ├─ Lv3: 觀光巴士 │ └─ ...共 11 種 Lv3 ├─ Lv2: 戶外&運動 │ ├─ Lv3: 水上活動 │ ├─ Lv3: 滑雪&雪上活動 │ ├─ Lv3: 極限運動 │ └─ ...共 14 種 Lv3 ├─ Lv2: 文化體驗 │ ├─ Lv3: 料理課程 │ ├─ Lv3: 服裝租借 │ ├─ Lv3: 攝影體驗 │ └─ Lv3: 工作坊 ├─ Lv2: 舒壓 & 美容 └─ Lv2: 郵輪假期
重點總結
Prod Tag — 面向用戶的三層樹狀分類
- 三層結構(Lv1 → Lv2 → Lv3),但不是每個商品都有完整三層
- Lv2/Lv3 可以是多值(逗號分隔),分析時需 UNNEST(SPLIT(...)) 展開
- 適合用戶偏好分析、推薦特徵、網站分類分析
BD Tag — 面向內部的單層標籤
- 一對一、單層結構,每個商品只有一個 BD Tag
- 30 個 BD Tag 可聚合為 15 個 Vertical 大類
- 適合業績統計、廣告 ROI 分析、商品數量統計(不會 double count)
選用原則
- 看業績/廣告用 BD Tag — 一對一,不怕重複計算,直接 GROUP BY
- 看用戶行為/推薦用 Prod Tag — 多值反映商品多面向屬性
- 兩套標籤的分類角度可能不同,分析前先確認你要的視角
BD Tag 是什麼?
面向內部的商品分類,每個商品只有一個 BD Tag,用於業績統計與廣告歸類。
核心特性
| 特性 | 說明 |
|---|---|
| 一對一 | 每個商品只有一個 BD Tag,不像 Prod Tag 可能多值 |
| 單層結構 | 只有一個代碼 + 名稱,沒有層級關係 |
| 面向內部 | BD(Business Development)團隊用於商品管理和業績歸屬 |
| 可衍生 Vertical | 透過 CASE WHEN 對照表,聚合成更粗的 Vertical 大類 |
欄位:
prod_bd_tag_cd— BD 標籤代碼(如0005)prod_bd_tag_note— BD 標籤名稱中文(如「票券|景點票/城市景點套票/SHOW票/樂園票」)prod_bd_tag_note_en— BD 標籤名稱英文
BD Tag 完整分布
共 30 個 BD Tag,涵蓋所有商品類型。
| 代碼 | BD Tag 名稱 | Vertical | 商品數 |
|---|---|---|---|
0012 | 住宿 | Accommodation | 248,842 |
0010 | F&B 餐飲相關 | F&B | 77,277 |
0008 | 定點特殊體驗 | Experience | 41,851 |
0006 | 郊區行程 | Tours | 34,385 |
0022 | 跨境多日遊套裝 | Multi-Day Package Tour | 16,763 |
0005 | 景點票/樂園票 | Tickets | 13,758 |
0002 | 機場交通(專車) | Transportation - Airport | 4,780 |
0004 | 私人包車/包機/包船 | Transportation - Charter | 3,433 |
0009 | 市區導覽行程 | Tours | 3,279 |
0023 | 郵輪假期 | Cruise | 2,809 |
0011 | 實體商品 | Others | 2,294 |
0007 | 長程移動交通 | Transportation - Ticket | 1,979 |
0001 | SIM Card | SIM/WIFI | 1,877 |
0013 | MICE 會展 | MICE | 1,387 |
0003 | 城市大眾運輸 | Transportation - Ticket | 1,050 |
0018 | 交通工具租借 | Transportation - Rentals | 776 |
9999 | 其他 | Others | 704 |
0021 | 跨境機票+酒店 | Group Tour | 457 |
0014 | Wi-Fi | SIM/WIFI | 455 |
0019 | 跨境機票 | Group Tour | 286 |
0028 | 現金券/兌換券 | Others | 187 |
0026 | 營隊/夏令營 | Others | 152 |
0015 | 行李配送/寄放 | Others | 123 |
0017 | 簽證/護照代辦 | Others | 98 |
0029 | 機場交通(大眾) | Transportation - Ticket | 93 |
0024 | 線上課程/活動 | Others | 83 |
0020 | 國內機票 | Group Tour | 70 |
0027 | 補差價/手續費 | Others | 47 |
0016 | 用品租借 | Others | 41 |
0025 | 防疫商品 | Others | 18 |
關鍵發現
- BD Tag 共 30 種,住宿(0012)獨佔 248,842 個商品
- Top 6 佔了 96% 的商品,長尾的 BD Tag 多為特殊類型
- BD Tag 名稱格式為「大類|細項描述」,方便 BD 快速識別
資料來源與計算方式
SQL 查詢
SELECT prod_bd_tag_cd,
prod_bd_tag_note,
COUNT(DISTINCT prod_oid) AS prod_cnt
FROM `dm_tableau.tableau_bd_prod`
WHERE prod_bd_tag_cd IS NOT NULL
GROUP BY 1, 2
ORDER BY prod_cnt DESC
BD Tag → Vertical 對照
多個 BD Tag 透過 CASE WHEN 聚合為 Vertical 大類,用於廣告成效分析。
關鍵發現
- 30 個 BD Tag 聚合為 15 個 Vertical,大幅簡化分析維度
- Vertical 主要用於廣告 ROI 分析,讓不同 BD Tag 的商品可以在同一視角下比較
- 注意「Others」包含了 7 個小眾 BD Tag(實體商品、營隊、線上課程等)
Vertical 對照規則(SQL)
CASE
WHEN prod_bd_tag_cd IN ('0001', '0014') THEN 'SIM/WIFI'
WHEN prod_bd_tag_cd = '0002' THEN 'Transportation - Airport'
WHEN prod_bd_tag_cd IN ('0003', '0007', '0029') THEN 'Transportation - Ticket'
WHEN prod_bd_tag_cd IN ('0004', '4') THEN 'Transportation - Charter'
WHEN prod_bd_tag_cd = '0005' THEN 'Tickets'
WHEN prod_bd_tag_cd IN ('0006', '0009') THEN 'Tours'
WHEN prod_bd_tag_cd = '0008' THEN 'Experience'
WHEN prod_bd_tag_cd = '0010' THEN 'F&B'
WHEN prod_bd_tag_cd = '0012' THEN 'Accommodation'
WHEN prod_bd_tag_cd = '0013' THEN 'MICE'
WHEN prod_bd_tag_cd = '0018' THEN 'Transportation - Rentals'
WHEN prod_bd_tag_cd IN ('0019', '0020', '0021') THEN 'Group Tour'
WHEN prod_bd_tag_cd = '0022' THEN 'Multi-Day Package Tour'
WHEN prod_bd_tag_cd = '0023' THEN 'Cruise'
ELSE 'Others'
END AS bd_tag_vertical
Prod Tag vs BD Tag — 核心差異
兩套標籤系統的定位、結構和用途完全不同。
| Prod Tag | BD Tag | |
|---|---|---|
| 面向 | 用戶(網站展示、推薦、導航) | 內部(商品管理、業績統計、廣告歸類) |
| 結構 | 三層樹狀(Lv1 → Lv2 → Lv3) | 單層(一個代碼一個名稱) |
| 數量關係 | 一個商品可有多個標籤(逗號分隔多值) | 一個商品只有一個 BD Tag |
| 分類數 | 8 個 Lv1 → 數十個 Lv2 → 百餘個 Lv3 | 30 個 BD Tag → 15 個 Vertical |
| 欄位 | prod_tag_lv1_nm ~ prod_tag_lv3_nm_en | prod_bd_tag_cd / prod_bd_tag_note |
| 常用場景 | 用戶偏好分析、推薦演算法、網站導航 | 業績歸屬、廣告 ROI by Vertical |
| GROUP BY 注意 | 多值需 UNNEST(SPLIT(...)) 展開 | 直接 GROUP BY 即可 |
同一商品的兩套標籤對照(真實資料)
注意 BD Tag 和 Prod Tag 的分類角度可能完全不同。
| 商品 | BD Tag | Prod Tag Lv1 | Prod Tag Lv2 | Prod Tag Lv3 |
|---|---|---|---|---|
| Family Photoshoot Experience in Seoul | 體驗(定點特殊體驗) |
行程&體驗 | 文化體驗 | 攝影體驗 |
| Korea Roller Skating Experience | 票券(景點票/樂園票) |
行程&體驗 | 戶外&運動 | 體能活動 |
| Majestic Fast Ferry Singapore-Batam | 長程移動交通 |
交通 | 渡輪 | — |
| Dubai Street Food Walking Tour | 市區導覽行程 |
行程&體驗 | 觀光行程 | 步行觀光 |
| Dubai Traditional City Tour | 市區導覽行程 |
交通 | 包車 | 拼車接駁 |
注意:第 5 列的 Dubai City Tour — BD Tag 是「市區導覽行程」但 Prod Tag 歸類為「交通 → 包車 → 拼車接駁」。
這是因為兩套標籤的分類角度不同:BD 看商品的「業務本質」(導覽行程),Prod Tag 看「用戶購買動機」(需要交通工具)。
分析時務必先確認你要的是哪個視角。
這是因為兩套標籤的分類角度不同:BD 看商品的「業務本質」(導覽行程),Prod Tag 看「用戶購買動機」(需要交通工具)。
分析時務必先確認你要的是哪個視角。
資料來源與計算方式
SQL 查詢
SELECT prod_oid,
prod_nm_en,
prod_bd_tag_note AS bd_tag,
prod_tag_lv1_nm AS prod_tag_lv1,
prod_tag_lv2_nm AS prod_tag_lv2,
prod_tag_lv3_nm AS prod_tag_lv3
FROM `dm_tableau.tableau_bd_prod`
WHERE prod_tag_lv1_nm IS NOT NULL
AND prod_bd_tag_cd IS NOT NULL
LIMIT 10
什麼時候用哪套?
根據分析目的選擇正確的標籤系統。
| 分析場景 | 建議使用 | 原因 |
|---|---|---|
| 廣告 ROI by 商品類型 | BD Tag / Vertical | 一對一、直接 GROUP BY、業界慣用 |
| 業績歸屬報表 | BD Tag | 不會因多值導致 double count |
| 用戶偏好分析 | Prod Tag | 反映用戶看到的分類,更貼近搜尋行為 |
| 推薦演算法特徵 | Prod Tag | 多值特性可以捕捉商品的多面向屬性 |
| 商品數量統計 | BD Tag | 一對一,不會重複計算 |
| 網站分類頁面分析 | Prod Tag | 與網站前端分類一致 |