# dim_goods_category 商品分类维度表

> 生成时间：2026-01-28

## 表信息

| 属性 | 值 |
|------|-----|
| Schema | billiards_dwd |
| 表名 | dim_goods_category |
| 主键 | category_id, scd2_start_time |
| 扩展表 | 无 |
| 记录数 | 26 |
| 说明 | 商品分类树结构表，支持一级/二级分类层次 |

## 字段说明

| 序号 | 字段名 | 类型 | 可空 | 主键 | 说明 |
|------|--------|------|------|------|------|
| 1 | category_id | BIGINT | NO | PK | 分类唯一标识 |
| 2 | tenant_id | BIGINT | YES | | 租户 ID（当前值: 2790683160709957） |
| 3 | category_name | VARCHAR | YES | | 分类名称。**样本值**: "槟榔", "皮头" 等 |
| 4 | alias_name | VARCHAR | YES | | 分类别名（当前数据大部分为空） |
| 5 | parent_category_id | BIGINT | YES | | 父级分类 ID（0=一级分类）→ 自关联 |
| 6 | business_name | VARCHAR | YES | | 业务大类名称。**样本值**: "酒水", "器材" 等 |
| 7 | tenant_goods_business_id | BIGINT | YES | | 业务大类 ID |
| 8 | category_level | INTEGER | YES | | 分类层级。**枚举值**: 1=一级大类, 2=二级子类 |
| 9 | is_leaf | INTEGER | YES | | 是否叶子节点。**枚举值**: 0=非叶子, 1=叶子 |
| 10 | open_salesman | INTEGER | YES | | 营业员开关。 |
| 11 | sort_order | INTEGER | YES | | 排序序号 |
| 12 | is_warehousing | INTEGER | YES | | 是否库存管理。**枚举值**: 1=参与库存管理 |
| 13 | scd2_start_time | TIMESTAMPTZ | NO | PK | SCD2 版本生效时间 |
| 14 | scd2_end_time | TIMESTAMPTZ | YES | | SCD2 版本失效时间 |
| 15 | scd2_is_current | INTEGER | YES | | 当前版本标记 |
| 16 | scd2_version | INTEGER | YES | | 版本号 |

## 分类树结构示例

```
槟榔（一级）
├── 槟榔（二级）
器材（一级）
├── 皮头
├── 球杆
├── 其他
酒水（一级）
├── 饮料
├── 酒水
├── 茶水
├── 咖啡
├── 加料
├── 洋酒
```

## 使用说明

**版本与最新值**
本表为 SCD2 维度表，版本字段：scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。

- 最新版本：scd2_is_current = 1
- 按业务主键取最新：按 scd2_start_time 倒序

```sql
-- 取某业务主键的最新版本
SELECT *
FROM billiards_dwd.dim_goods_category
WHERE category_id = <value>
ORDER BY scd2_start_time DESC
LIMIT 1;
```
**使用示例**
```sql
-- 查询一级分类
SELECT * FROM billiards_dwd.dim_goods_category
WHERE scd2_is_current = 1 AND parent_category_id = 0;
-- 查询某一级分类下的二级分类
SELECT * FROM billiards_dwd.dim_goods_category
WHERE scd2_is_current = 1 AND parent_category_id = <一级分类ID>;
```
