数据库表与查询
15 张表的字段说明与常用 ClickHouse 查询 —— 复权计算、板块 / 指数成分、逐笔资金流。
tdp sync / tdp import 会把数据写入你自己的本地 ClickHouse,库名由 DSN 决定。一份订阅落地后共 15 张表(raw_ 前缀),本页说明每张表的字段与常用查询。客户端用法见 tdp 客户端手册。
只交付原始表,复权自行计算
数据集仅含原始(不复权)K 线 + 复权因子表,不含视图。前 / 后复权按复权计算一节用因子现算。
通用约定
-
symbol 格式:A 股为
sz/sh/bj+ 6 位代码(如sz000001、sh600519、bj430047);港股为hk+ 5 位(如hk00700)。指数、ETF、板块同样以 symbol 表示。 -
品种分类(class):
stock股票 /index指数 /etf基金 /block板块 /unknown。日线表混放四类,按raw_symbol_class过滤。 -
单位:
open/high/low/close/price为价格(元);amount为成交额(元);volume为成交量(股)。 -
时间类型:
date为Date(YYYY-MM-DD),datetime为DateTime(YYYY-MM-DD HH:MM:SS)。 -
引擎与排序键:所有表均为
MergeTree,按各表 ORDER BY 排序(多为symbol+ 日期)。客户端用上游SHOW CREATE TABLE建表,结构与源端一致 —— 查看本机实际 DDL(引擎 / 排序键 / 分区):SHOW CREATE TABLE tdp.raw_ticks; -
去重:普通
MergeTree不自动去重,重复导入同一段会产生重复行。重拉某段请先ALTER TABLE ... DROP PARTITION再tdp sync,详见手册。
下文 SQL 中的库名统一用 tdp,按你的实际库名替换。
行情 K 线
日线(A 股 / 港股)与 1min / 5min 分时,列结构一致:原始非聚合 OHLC + 成交额 / 量。日线表 raw_kline_daily 混放股票 / 指数 / ETF / 板块,用 raw_symbol_class 区分。
| 表 | 内容 | 排序键 |
|---|---|---|
raw_kline_daily |
A 股日线(股票 / 指数 / ETF / 板块) | (symbol, date) |
raw_kline_1min |
A 股 1 分钟 K 线(原始非聚合) | (symbol, datetime) |
raw_kline_5min |
A 股 5 分钟 K 线(原始非聚合) | (symbol, datetime) |
raw_hk_kline_daily |
港股日线 | (symbol, date) |
日线(raw_kline_daily / raw_hk_kline_daily)字段:
| 字段 | 类型 | 说明 |
|---|---|---|
symbol |
String |
标的代码 |
open high low close |
Float64 |
开 / 高 / 低 / 收(元,不复权) |
amount |
Float64 |
成交额(元) |
volume |
Int64 |
成交量(股) |
date |
Date |
交易日 |
分时(raw_kline_1min / raw_kline_5min)字段与日线相同,仅把 date 换为 datetime(DateTime,K 线起始时刻)。
逐笔成交(tick)
raw_ticks —— 全市场 3 秒级逐笔成交,含主动买卖方向。排序键 (symbol, datetime)。
| 字段 | 类型 | 说明 |
|---|---|---|
symbol |
String |
标的代码 |
datetime |
DateTime |
成交时刻 |
price |
Float64 |
成交价(元) |
volume |
Int64 |
成交量(股) |
direction |
String |
主动方向:B 主动买 / S 主动卖 / X 中性(集合竞价等) |
指数的 tick 是快照不是逐笔
指数 symbol 在 raw_ticks 中的行是交易所 Level-1 的 3 秒快照行情(非逐笔成交),volume 为全市场聚合量。个股逐笔不受影响。
复权与股本变迁
复权因子表稀疏存储:只在因子变化的那天落一条,并保留首日一条(hfq_factor = 1.0)作锚点。因此还原逐日因子要用 ASOF JOIN 取「日期 ≤ 当前的最近一条」。
| 表 | 内容 | 排序键 |
|---|---|---|
raw_adjust_factor |
A 股后复权因子(稀疏) | (symbol, date) |
raw_hk_factor |
港股后复权因子(稀疏) | (symbol, date) |
raw_gbbq |
A 股股本变迁原始事件(分红 / 配股 / 送转等) | (symbol, date) |
raw_adjust_factor / raw_hk_factor 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
symbol |
String |
标的代码 |
date |
Date |
因子生效日 |
hfq_factor |
Float64 |
后复权因子 |
raw_gbbq(股本变迁,供需要还原除权除息事件的高级用户;普通复权用因子表即可):
| 字段 | 类型 | 说明 |
|---|---|---|
category |
Int64 |
事件类别,见下表 |
symbol |
String |
标的代码 |
date |
Date |
事件日 |
c1 c2 c3 c4 |
Float64 |
四个数值字段,含义随 category 变化 |
category 编号与 c1..c4 含义(最常用为 1 除权除息):
| category | 事件 | c1 / c2 / c3 / c4 |
|---|---|---|
| 1 | 除权除息 | 分红 / 配股价 / 送转股 / 配股 |
| 2 | 送配股上市 | 前流通盘 / 前总股本 / 后流通盘 / 后总股本 |
| 3 | 非流通股上市 | 前流通盘 / 前总股本 / 后流通盘 / 后总股本 |
| 5 | 股本变化 | 前流通盘 / 前总股本 / 后流通盘 / 后总股本 |
| 6 | 增发新股 | — / 增发价 / 增发数量 / — |
| 7 | 股份回购 | 前流通盘 / 前总股本 / 后流通盘 / 后总股本 |
| 9 | 转配股上市 | 前流通盘 / 前总股本 / 后流通盘 / 后总股本 |
| 11 | 扩缩股 | — / — / 比例 / — |
| 13 / 14 | 送认购 / 认沽权证 | 行权价 / — / 份数 / — |
参考维表
代码↔名称、品种分类、指数成分、板块成分等维度表(快照,随订阅刷新)。
| 表 | 内容 | 排序键 |
|---|---|---|
raw_symbol_name |
全品种代码 → 名称 + class | symbol |
raw_stocks_info |
A 股基础信息(上市 / 退市日) | symbol |
raw_symbol_class |
品种分类 | symbol |
raw_csindex |
中证指数成分 | index_name |
raw_tdx_blocks_info |
板块 / 概念 / 行业信息 | block_code |
raw_tdx_blocks_member |
板块成分关系 | (block_code, stock_symbol) |
raw_hk_symbol |
港股标的信息 | symbol |
raw_symbol_name:symbol / name(中文名)/ class(品种分类)。
raw_stocks_info:symbol / name / list_date(Date 上市日)/ delist_date(Date,在市为 NULL)。
raw_symbol_class:symbol / class(stock / index / etf / block / unknown)。
raw_csindex:index_name(指数英文名,CSI300 / CSI500 / CSI1000 / CSI2000)/ stock_name(成分股中文名)/ stock_symbol(统一 symbol)。仅当前成分。
raw_tdx_blocks_info:
| 字段 | 类型 | 说明 |
|---|---|---|
block_type |
String |
concept 概念 / style 风格 / region 地区 / tdx_research 通达信行业·研究板块 |
block_name |
String |
板块名称(如「白酒」) |
block_symbol |
String |
板块标识代码(板块自身 K 线以此落在 raw_kline_daily,class='block') |
block_code |
String |
内部板块编码(与成分表 join 用) |
parent_code |
String |
父板块编码(构成层级) |
block_level |
Int64 |
层级(行业分类 1 / 2 / 3 级) |
raw_tdx_blocks_member:block_code / stock_symbol(成分股代码)。
raw_hk_symbol:symbol / name / board(main 主板 / gem 创业板 / equity / etf / lni / reit)。
查询示例
不复权日线
SELECT date, open, high, low, close, volume
FROM tdp.raw_kline_daily
WHERE symbol = 'sh600519'
ORDER BY date;
按 class 取某类全部标的(如全部 ETF):
SELECT k.*
FROM tdp.raw_kline_daily AS k
JOIN tdp.raw_symbol_class AS c ON k.symbol = c.symbol
WHERE c.class = 'etf' AND k.date = '2024-12-31';
复权计算(前复权 / 后复权)
后复权(hfq)= 原始价 × hfq_factor。因子稀疏,用 ASOF LEFT JOIN 取最近一条:
SELECT
k.date,
round(k.open * f.hfq_factor, 2) AS open,
round(k.high * f.hfq_factor, 2) AS high,
round(k.low * f.hfq_factor, 2) AS low,
round(k.close * f.hfq_factor, 2) AS close
FROM tdp.raw_kline_daily AS k
ASOF LEFT JOIN tdp.raw_adjust_factor AS f
ON k.symbol = f.symbol AND k.date >= f.date
WHERE k.symbol = 'sh600519'
ORDER BY k.date;
前复权(qfq)= 后复权 ÷ 最新因子,使最近一日价格等于不复权价:
WITH latest AS (
SELECT symbol, argMax(hfq_factor, date) AS latest_hfq
FROM tdp.raw_adjust_factor
GROUP BY symbol
)
SELECT
k.date,
round(k.close * f.hfq_factor / l.latest_hfq, 2) AS close_qfq
FROM tdp.raw_kline_daily AS k
ASOF LEFT JOIN tdp.raw_adjust_factor AS f
ON k.symbol = f.symbol AND k.date >= f.date
LEFT JOIN latest AS l ON k.symbol = l.symbol
WHERE k.symbol = 'sh600519'
ORDER BY k.date;
精度与港股
股票价格 round(…, 2),ETF / 港股 round(…, 3)。港股复权把上面两段的 raw_kline_daily 换成 raw_hk_kline_daily、raw_adjust_factor 换成 raw_hk_factor 即可。
指数成分
SELECT stock_symbol, stock_name
FROM tdp.raw_csindex
WHERE index_name = 'CSI300';
板块 / 概念成分
某概念板块的成分股及名称:
SELECT m.stock_symbol, n.name
FROM tdp.raw_tdx_blocks_member AS m
JOIN tdp.raw_tdx_blocks_info AS i ON m.block_code = i.block_code
LEFT JOIN tdp.raw_symbol_name AS n ON m.stock_symbol = n.symbol
WHERE i.block_type = 'concept' AND i.block_name = '白酒';
逐笔资金流(主买 / 主卖)
按主动方向聚合某股某日的成交额与成交量:
SELECT
direction,
round(sum(price * volume)) AS amount,
sum(volume) AS volume
FROM tdp.raw_ticks
WHERE symbol = 'sh600519'
AND toDate(datetime) = '2024-01-02'
GROUP BY direction;
净主动买额(B − S):
SELECT
sumIf(price * volume, direction = 'B')
- sumIf(price * volume, direction = 'S') AS net_active_buy
FROM tdp.raw_ticks
WHERE symbol = 'sh600519' AND toDate(datetime) = '2024-01-02';
代码 → 名称
SELECT symbol, name, class
FROM tdp.raw_symbol_name
WHERE symbol = 'sh600519';