-- 作者：tianyu.chu
-- 日期：2026-06-10
-- 工单：(无)
-- 目的：埋点 raw → ods，解析脱敏后 _source JSON：公共属性 typed 拍平成列 + params 半结构化（params_json）；按文件日 dt 分区（≈事件日）
-- 状态：[待执行]
-- 备注：埋点 ods 特例——非业务库类型恢复，是 JSON 解析（kb/20 §0.2 旁）；params 不 per-event 拍平（event explosion，见 ADR-13）；
--       web 端字段（platform/merchantId/title 等）+ lib_detail 不拍平，回查走 raw raw_json；配套解析 SQL jobs/ods/usr/ods_usr_traces_apd_d.sql；
--       dt = 文件/上传日不归位（N=1）：实测 ~99.4% 事件日=文件日，~0.6% 迟到/未来小偏差按当天落，业务允许（分布见 workspace/20260610/埋点迟到漂移分布-窗口决策.md）

DROP TABLE IF EXISTS ods.ods_usr_traces_apd_d;

CREATE EXTERNAL TABLE IF NOT EXISTS ods.ods_usr_traces_apd_d (
    es_id                  STRING    COMMENT 'ES 文档 _id，去重键',
    event_name             STRING    COMMENT '事件名（_source.event）',
    evt_type               STRING    COMMENT '事件类型（track/track_signup）',
    event_time             TIMESTAMP COMMENT '事件发生时间（_source.time 毫秒转，东八区）',
    flush_time             TIMESTAMP COMMENT 'SDK 上报时间（_source.flushTime）',
    login_id               STRING    COMMENT '登录用户 ID（未登录=0）',
    distinct_id            STRING    COMMENT 'SDK 唯一标识',
    anonymous_id           STRING    COMMENT '匿名设备 UUID',
    user_id                STRING    COMMENT '业务用户 ID（properties.userId）',
    user_name              STRING    COMMENT '用户昵称',
    user_lvl               STRING    COMMENT '用户等级',
    lib                    STRING    COMMENT 'SDK 平台（iOS/Android/js）',
    lib_version            STRING    COMMENT 'SDK 版本',
    lib_method             STRING    COMMENT '埋点触发方式',
    app_id                 STRING    COMMENT 'App 包名',
    app_name               STRING    COMMENT 'App 名称',
    app_version            STRING    COMMENT 'App 版本',
    wgt_version            STRING    COMMENT '热更新版本',
    os                     STRING    COMMENT '操作系统',
    os_version             STRING    COMMENT '系统版本',
    manufacturer           STRING    COMMENT '设备制造商',
    brand                  STRING    COMMENT '设备品牌（Android）',
    model                  STRING    COMMENT '设备型号',
    device_id              STRING    COMMENT '设备 ID',
    network_type           STRING    COMMENT '网络类型',
    carrier                STRING    COMMENT '运营商',
    wifi                   BOOLEAN   COMMENT '是否 WIFI',
    screen_width           BIGINT    COMMENT '屏幕宽',
    screen_height          BIGINT    COMMENT '屏幕高',
    timezone_offset        BIGINT    COMMENT '时区偏移分钟（×-1）',
    is_first_day           BOOLEAN   COMMENT '是否首日',
    is_first_time          BOOLEAN   COMMENT '是否首次启动（$AppStart）',
    resume_from_background  BOOLEAN  COMMENT '是否后台恢复（$AppStart）',
    event_duration         BIGINT    COMMENT '事件时长（$AppEnd）',
    params_json            STRING    COMMENT '事件专属 params（脱敏后 JSON，不 per-event 拍平）'
)
COMMENT '埋点 ods 层（解析拍平，params 半结构化）'
PARTITIONED BY (dt STRING COMMENT 'yyyymmdd，文件/上传日（东八区，≈事件日 99.4%，迟到/未来小偏差按当天落）')
STORED AS ORC
LOCATION '/user/hive/warehouse/ods.db/ods_usr_traces_apd_d';
