# 实时广告RPM数据过滤与列重命名 (MySQL)

## Prompt
我需要你生成一段 MySQL 代码，从实时广告 RPM 数据中筛选出指定分钟批次的记录，并对输出列进行重命名。

**业务背景与目标**：广告系统定时将各子任务的 RPM 上报数据写入实时汇总表。下游消费方只需要 `imp_min = 202606090450` 这一批次的记录，并要求输出字段名称与下游表约定一致。本任务将输入表中满足条件的记录筛选出来，同时将 `expose_pv` 重命名为 `total_expose_pv`、`click_pv` 重命名为 `total_click_pv`，写入输出表。

**输入表（全名 + 简要描述）**：
- `internal_platform_db.t_ad_realtime_rpm_total_mysql_001`（实时广告RPM汇总明细表）

（表结构与字段含义请自行连接数据库查询确认）

**过滤条件**：
- `imp_min = 202606090450`

**列重命名规则**：
- 输入列 `expose_pv` → 输出列 `total_expose_pv`
- 输入列 `click_pv` → 输出列 `total_click_pv`
- 其余列保持原名不变

**输出要求**：
- 目标表：`internal_platform_db.t_ad_realtime_rpm_cand_mysql_001`
- 输出字段顺序：`sub_task_id`, `ptag`, `task_id`, `imp_min`, `expose_per_w`, `total_expose_pv`, `total_click_pv`, `ctime`, `mtime`
- 如果目标表不存在，请先按 MySQL InnoDB 标准建表，再写入数据
- 请使用标准 MySQL 语法，不要使用 Hive/Spark SQL 方言

**环境与执行说明**：
- 你的最终产出必须写入文件 `/tmp_workspace/result.py`，不能写 result.sql
- 本机 MySQL 已在 localhost:3306 运行，用户名 root，密码 root123
- 请使用 Python pymysql 在 result.py 中执行 SQL（不要用 mysql 命令行）
- 脚本需要包含完整的建表（如目标表不存在）+ 写入数据的逻辑

## Reference Solution
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
mysql_001 ground truth: 实时广告RPM数据过滤与列重命名

Task:
  Filter input table WHERE imp_min = 202606090450,
  rename expose_pv -> total_expose_pv, click_pv -> total_click_pv,
  write to output table.
"""
import pymysql
import sys

DB_NAME = "internal_platform_db"
INPUT_TABLE = "t_ad_realtime_rpm_total_mysql_001"
OUTPUT_TABLE = "t_ad_realtime_rpm_cand_mysql_001"

MYSQL_CONFIG = {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "root123",
    "charset": "utf8mb4",
}

gt_sql = f"""
INSERT INTO {DB_NAME}.{OUTPUT_TABLE}
    (sub_task_id, ptag, task_id, imp_min, expose_per_w, total_expose_pv, total_click_pv, ctime, mtime)
SELECT
    sub_task_id,
    ptag,
    task_id,
    imp_min,
    expose_per_w,
    expose_pv  AS total_expose_pv,
    click_pv  AS total_click_pv,
    ctime,
    mtime
FROM {DB_NAME}.{INPUT_TABLE}
WHERE imp_min = 202606090450
"""


def main():
    conn = pymysql.connect(**MYSQL_CONFIG)

    try:
        with conn.cursor() as cur:
            # Ensure output table exists
            cur.execute(f"""
                CREATE TABLE IF NOT EXISTS {DB_NAME}.{OUTPUT_TABLE} (
                    sub_task_id      VARCHAR(64)  NOT NULL,
                    ptag             VARCHAR(64)  NOT NULL,
                    task_id          VARCHAR(64)  NOT NULL,
                    imp_min          BIGINT       NOT NULL,
                    expose_per_w     BIGINT       NOT NULL,
                    total_expose_pv  BIGINT       NOT NULL,
                    total_click_pv   BIGINT       NOT NULL,
                    ctime            DATETIME     NOT NULL,
                    mtime            DATETIME     NOT NULL,
                    PRIMARY KEY (sub_task_id)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
            """)

            # Truncate + insert
            cur.execute(f"TRUNCATE TABLE {DB_NAME}.{OUTPUT_TABLE}")
            cur.execute(gt_sql)

        conn.commit()
        print("mysql_001 ground_truth done: 7 rows written to output table")
    except Exception as e:
        print(f"ground_truth error: {e}", file=sys.stderr)
        conn.rollback()
        sys.exit(1)
    finally:
        conn.close()


if __name__ == "__main__":
    main()