## 目录结构
```
.
├── assets
│   └── ddb_dump_journal.csv
├── dolphindb
│   └── project
│       ├── modules
│       └── scripts
├── ipynb
│   ├── ddb.ipynb
│   ├── ddb_pe.ipynb
│   ├── ddb_pit.ipynb
│   ├── dos.ipynb
│   └── mssql.ipynb
├── README.md
└── src
    ├── DDBBase.py
    ├── expr
    │   └── DDBExpression.py
    ├── factor
    │   └── DDBFactor.py
    ├── __init__.py
    ├── loader
    │   ├── DDBBasicInfoLoader.py
    │   ├── DDBDailyLoader.py
    │   ├── DDBHFTLoader.py
    │   ├── DDBLoader.py
    │   ├── DDBPITLoader.py
    │   ├── make_hft.py
    │   └── ProtoBuffEntitys
    ├── ReadTickFromDB.py
    ├── run.py
    └── script.py
```

## 目录说明

- `assets`
	- 程序运行过程中产生、或者依赖的配置数据
	- `ddb_dump_jounral.csv`记录海通高频数据写入DolphinDB的日志(类似log)
- `dolphindb`
    - DolphinDB的客户端Workspace,主要用来放置dos文件
    - 目录结构是DolphinDB的官方Java客户端设定的,因此略显臃肿
- `ipynb`
    - jupyter notebook的存放目录
    - 包含开发DolphinDB相关功能的草稿和SQL-Server相关功能的草稿
- `src`
    - Python源代码目录,是工作的主要目录
    - 大部分源码文件以`DDB`开头,表示与DolphinDB相关,继承和代码复用关系可以进一步优化
    - `DDBBase.py`:
		- `DDB*`的基类,包含了一些常用常量
	- `run.py`:
		- 用于执行具体操作任务的入口脚本
		- TODO:需要支持命令行参数来选择执行功能和配套参数
    - `loader`目录:代码专门用于向DolphinDB写入数据(似乎称为Dumper更合适),目前包括:
		- `DDBLoader.py`:其他Loader类的基础类
        - `DDBHFTLoader.py`:用以导入高频数据(海通高频数据)
        - `DDBDailyLoader.py`:用以导入日频数据(市场日K线数据)
        - `DDBPITLoader.py`:用以导入低频PIT数据,主要是财报数据
		- `loader/ProtoBuffEntitys`目录:
			- 用以解析海通高频数据中,protobuf字节流的Python辅助代码
    - `factor`目录:用于生成因子
		- `DDBFactor.py`:目前只有生成日频因子
	- `expr`目录:用于支持基于DDB的各种表达式操作
		- `DDBExpression.py`:提供了基本的操作表达式,目前包括:
        - 通过Function View,读取DolphinDB的分布式存储表:
            - 在任意时间点上,获取所有公司某张财报、指定财报期的最新可见快照
            - 在任意时间点上,获取所有公司某张财报中某科目、指定财报期的最新可见快照
        - 通过一般Function,对内存表进行操作:
            - 流量表累计数值转单季值
            - 跨年同比指标计算(分母为去年基数取绝对值,函数会同时返回当年值和去年基数,以便进一步调整)


## 海通高频数据录入说明

- Python语言从数据库中读取字节流程序并解码还原示例程序在ReadTickFromDB.py中。
- 该函数需要pymssql、gzip、google.protobuf(可用pip install protobuf安装)三个外部依赖库需要在运行程序。
- 成功读取后,每个标的会读出并解析成一个结构体数组的数据结构,可以对于该数据进行进一步操作。