diff --git a/.gitignore b/.gitignore
index 9e8fd5a..f29e05e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@
 *.csv
 *.swp
 *.swo
+.DS_Store
+*.DS_Store
 
 # Byte-compiled / optimized / DLL files
 __pycache__/
diff --git a/dolphindb/.workspace b/dolphindb/.workspace
new file mode 100755
index 0000000..f205732
--- /dev/null
+++ b/dolphindb/.workspace
@@ -0,0 +1,16 @@
+Project,test2,/Users/guofu/Workspaces/dolphindb/test2
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/test1.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit2.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/tail_vol_ratio.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/test2.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit3.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit4.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit_report_period_at_date.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit6.dos
+Open,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit_series_report_period_at_date.dos
+Server,.167,192.168.1.167,8848,,admin,123456
+Server,.7,192.168.1.7,8848,,admin,123456
+Server,local8848,localhost,8848,,,
+ActiveFile,/Users/guofu/Workspaces/dolphindb/test2/scripts/pit6.dos
+ActiveServer,.167
diff --git a/dolphindb/project/scripts/backup_table.dos b/dolphindb/project/scripts/backup_table.dos
new file mode 100755
index 0000000..d8f6abd
--- /dev/null
+++ b/dolphindb/project/scripts/backup_table.dos
@@ -0,0 +1,5 @@
+login('admin', '123456')
+// init backup
+backup('/data/dolphindb/backup/', ,<select * from loadTable("dfs://hft_stock_ts","KLinePartitioned")>,true, true)
+// incremental backup
+//backup('/data/dolphindb/backup/', ,<select * from loadTable("dfs://compoDB","pt")>,false, true)
\ No newline at end of file
diff --git a/dolphindb/demo.dos b/dolphindb/project/scripts/demo.dos
similarity index 100%
rename from dolphindb/demo.dos
rename to dolphindb/project/scripts/demo.dos
diff --git a/dolphindb/demo2.dos b/dolphindb/project/scripts/demo2.dos
similarity index 100%
rename from dolphindb/demo2.dos
rename to dolphindb/project/scripts/demo2.dos
diff --git a/dolphindb/project/scripts/min_kurtosis.dos b/dolphindb/project/scripts/min_kurtosis.dos
new file mode 100755
index 0000000..e44ea82
--- /dev/null
+++ b/dolphindb/project/scripts/min_kurtosis.dos
@@ -0,0 +1,7 @@
+tbl = loadTable("dfs://hft_stock_ts", 'KLinePartitioned')
+
+// calculate the minute return 
+// `eachPre` applies the binary function (the 1st arg) to this row and its previous row
+// TODO: m_nDate filter condition should be replaced by groupby
+ret = select code, m_nDate, m_nTime, eachPre(\, m_nClose) - 1.0 as ret from tbl where m_nDate=2015.01.05 context by code limit 10;
+kurto = select code, m_nDate, sqrt(239) * sum(pow(ret, 3)) / pow(sum(pow(ret, 2)), 1.5) as kurtosis from ret where group by code;
diff --git a/dolphindb/project/scripts/pit.dos b/dolphindb/project/scripts/pit.dos
new file mode 100755
index 0000000..4fd98a6
--- /dev/null
+++ b/dolphindb/project/scripts/pit.dos
@@ -0,0 +1,8 @@
+is_common_ori = loadTable("dfs://pit_stock_ts", "cfs_common_adj")
+divident = loadTable("dfs://pit_stock_ts", "divident")
+
+//schema(is_common_ori)
+
+//sql1 = select code, report_period, year(report_period) as year, quarterOfYear(report_period) + 1 as base_for_quarter_accum, appear_at_date from is_common_ori where partition(code, 0)
+
+select top 100 * from divident
diff --git a/dolphindb/project/scripts/pit2.dos b/dolphindb/project/scripts/pit2.dos
new file mode 100755
index 0000000..4a82241
--- /dev/null
+++ b/dolphindb/project/scripts/pit2.dos
@@ -0,0 +1,36 @@
+is_common_adj = loadTable("dfs://pit_stock_ts", "is_common_adj")
+is_common_ori = loadTable("dfs://pit_stock_ts", "is_common_ori")
+
+// schema(is_common_ori)
+
+/**
+ * 单季处理
+ */
+
+// 每年第一个季度
+tbl_quarter1 = select code, report_period, year(report_period) as year, quarterOfYear(report_period) as current_quarter_accum, appear_at_date from is_common_ori where partition(code, 0), quarterOfYear(report_period) == 1
+
+// 当季累计数据,作为下一季基准
+tbl_quarter_accum_base = select code, report_period, year(report_period) as year, quarterOfYear(report_period) + 1 as base_for_quarter_accum, appear_at_date from is_common_ori where partition(code, 0), quarterOfYear(report_period) < 4
+
+// 从第二季开始,去匹配前一季累计基数
+tbl_quarter_accum = select code, report_period, year(report_period) as year, quarterOfYear(report_period) as current_quarter_accum, appear_at_date from is_common_ori where partition(code, 0), quarterOfYear(report_period) > 1
+
+tbl_quarter_flux = select tbl_quarter_accum.* from ej(tbl_quarter_accum_base, tbl_quarter_accum, `code`year`base_for_quarter_accum, `code`year`current_quarter_accum)
+tbl_quarter_flux = unionAll(tbl_quarter1, tbl_quarter_flux).sortBy!(`code`report_period)
+
+tbl_quarter_flux
+
+/**
+ * 同比计算
+ */
+/*
+sql1 = select code, report_period, year(report_period) - 1 as last_year, quarterOfYear(report_period) as quarter_of_year from bs_common_ori where code='000001.SZ'
+//sql1
+
+sql2 = select code, report_period, year(report_period) as this_year, quarterOfYear(report_period) as quarter_of_year from bs_common_ori where code='000001.SZ'
+
+sql = select sql1.*, sql2.* from ej(sql1, sql2, `code`last_year`quarter_of_year, `code`this_year`quarter_of_year)
+
+sql
+*/
diff --git a/dolphindb/project/scripts/pit3.dos b/dolphindb/project/scripts/pit3.dos
new file mode 100755
index 0000000..b3bab32
--- /dev/null
+++ b/dolphindb/project/scripts/pit3.dos
@@ -0,0 +1,17 @@
+is_common_adj = loadTable("dfs://pit_stock_ts", "is_common_adj")
+is_common_ori = loadTable("dfs://pit_stock_ts", "is_common_ori")
+
+// select * from is_common_ori where code='000677.SZ' and report_period=2009.12.31
+// select * from is_common_ori where report_period=2009.12.31
+
+m_nDate = take(2011.10.01, 3);
+report_period = [2008.12.31, 2009.12.31, 2010.12.31]
+//code = `000001.SZ`000677.SZ`600001.SH;
+
+tbl_query = table(report_period, m_nDate);
+tbl_query_exp = select code, report_period, m_nDate from ej(is_common_ori, tbl_query, `report_period) where partition(code, 0);
+
+is_common_ori_part = select * from ej(is_common_ori, tbl_query, `report_period) where partition(code, 0);
+is_common_ori_part
+
+select top 100 * from aj(tbl_query_exp, is_common_ori_part, `code`report_period`m_nDate, `code`report_period`appear_at_date);
\ No newline at end of file
diff --git a/dolphindb/project/scripts/pit4.dos b/dolphindb/project/scripts/pit4.dos
new file mode 100755
index 0000000..88517ac
--- /dev/null
+++ b/dolphindb/project/scripts/pit4.dos
@@ -0,0 +1,3 @@
+login('admin', '123456');
+dropFunctionView('pit_report_period_at_date');
+
diff --git a/dolphindb/project/scripts/pit6.dos b/dolphindb/project/scripts/pit6.dos
new file mode 100755
index 0000000..5076be2
--- /dev/null
+++ b/dolphindb/project/scripts/pit6.dos
@@ -0,0 +1,14 @@
+select * from pit_report_period_at_date("is_common_ori", 2022.07.12, [2019.12.31], 0) order by code
+/*
+source_table = loadTable("dfs://pit_stock_ts", "is_common_adj");
+m_nDate = [2021.12.12]
+report_period = [2019.12.31]
+
+query_table = table(report_period, m_nDate)
+query_table_exp = select * from cj(query_table, select code from source_table where partition(code, 0) group by code map)
+// query_table_exp
+
+source_table_part = select source_table.* from ej(source_table, query_table_exp, `code`report_period) where partition(code, 0)
+
+select top 100 * from aj(query_table_exp, source_table_part, `code`report_period`m_nDate, `code`report_period`appear_at_date) order by code 
+*/
\ No newline at end of file
diff --git a/dolphindb/project/scripts/pit_at_date.dos b/dolphindb/project/scripts/pit_at_date.dos
new file mode 100755
index 0000000..1e142e7
--- /dev/null
+++ b/dolphindb/project/scripts/pit_at_date.dos
@@ -0,0 +1,17 @@
+//dropFunctionView('pit_report_period_at_date')
+
+def pit_at_date(table_name, date, report_period_list, code_partition_id) {
+	source_table = loadTable("dfs://pit_stock_ts", table_name);
+	
+	m_nDate = take(date, size(report_period_list));
+	report_period = report_period_list;
+	
+	query_table = table(report_period, m_nDate);
+	query_table_exp = select * from cj(query_table, select code from source_table where partition(code, code_partition_id) group by code map);
+	
+	source_table_part = select source_table.* from ej(source_table, query_table_exp, `code`report_period) where partition(code, code_partition_id);
+	
+	return select * from aj(query_table_exp, source_table_part, `code`report_period`m_nDate, `code`report_period`appear_at_date)
+}
+
+addFunctionView(pit_at_date)
diff --git a/dolphindb/project/scripts/pit_col_at_date.dos b/dolphindb/project/scripts/pit_col_at_date.dos
new file mode 100755
index 0000000..8e6f32a
--- /dev/null
+++ b/dolphindb/project/scripts/pit_col_at_date.dos
@@ -0,0 +1,18 @@
+def pit_col_at_date(table_name, col_name, date, report_period_list, code_partition_id){
+	source_table = loadTable("dfs://pit_stock_ts", table_name);
+	
+	m_nDate = take(date, size(report_period_list));
+	report_period = report_period_list;
+	
+	query_table = table(report_period, m_nDate);
+	query_table_exp = select code, report_period, m_nDate from ej(source_table, query_table, `report_period) where partition(code, code_partition_id);
+	
+	col_list = ['code', 'report_period', 'appear_in_period', 'appear_at_date', col_name]
+    from_tbl = <ej(source_table, query_table_exp, `code`report_period)>
+    where_conditions = [<partition(code, code_partition_id)>]
+    source_table_part = sql(select=col_list, from=from_tbl, where=where_conditions);
+	
+	return select * from aj(query_table_exp, source_table_part, `report_period`m_nDate, `report_period`appear_at_date)
+}
+
+addFunctionView(pit_col_at_date)
diff --git a/dolphindb/project/scripts/restore_table.dos b/dolphindb/project/scripts/restore_table.dos
new file mode 100755
index 0000000..f54cd32
--- /dev/null
+++ b/dolphindb/project/scripts/restore_table.dos
@@ -0,0 +1 @@
+migrate('/data/dolphindb/backup/', "dfs://hft_stock_ts", "KLinePartitioned")
diff --git a/dolphindb/project/scripts/show_databases.dos b/dolphindb/project/scripts/show_databases.dos
new file mode 100755
index 0000000..f890874
--- /dev/null
+++ b/dolphindb/project/scripts/show_databases.dos
@@ -0,0 +1,9 @@
+login('admin', '123456')
+// schema(loadTable("dfs://daily_stock_ts", "kurto_partitioned"))
+//listTables("dfs://daily_stock_ts")
+//dropTable(database("dfs://daily_stock_ts"), "kurto_partitioned")
+//listTables("dfs://daily_stock_ts")
+//select max(m_nDate), min(m_nDate) from loadTable("dfs://daily_stock_ts", "hft_daily_factor")
+// select count(*) from loadTable("dfs://daily_stock_ts", "daily_kline")
+// select top 100 * from loadTable("dfs://daily_stock_ts", "hft_daily_factor") where code='000002.SZ'
+select top 100 * from loadTable("dfs://hft_stock_ts", "OrderPartitioned") where code='000002.SZ'
\ No newline at end of file
diff --git a/stockMarketReplay.dos b/dolphindb/project/scripts/stockMarketReplay.dos
similarity index 100%
rename from stockMarketReplay.dos
rename to dolphindb/project/scripts/stockMarketReplay.dos
diff --git a/dolphindb/project/scripts/tail_vol_ratio.dos b/dolphindb/project/scripts/tail_vol_ratio.dos
new file mode 100755
index 0000000..0af8558
--- /dev/null
+++ b/dolphindb/project/scripts/tail_vol_ratio.dos
@@ -0,0 +1,7 @@
+tbl = loadTable("dfs://hft_stock_ts", 'KLinePartitioned')
+
+// TODO: m_nDate filter in where clause need to be replaced by group by 
+total_vol = select code, m_nDate, sum(m_nVolume) as total_vol from tbl where m_nDate=2015.01.05 group by code
+tail_vol = select code, m_nDate, sum(m_nVolume) as tail_vol from tbl where m_nDate=2015.01.05 and m_nTime>=14:30:00 group by code
+
+select code, m_nDate, tail_vol/total_val as tail_vol_ratio from ej(total_val, tail_vol, `code`m_nDate)
\ No newline at end of file
diff --git a/dolphindb/test.dos b/dolphindb/project/scripts/test.dos
similarity index 100%
rename from dolphindb/test.dos
rename to dolphindb/project/scripts/test.dos
diff --git a/dolphindb/project/scripts/test1.dos b/dolphindb/project/scripts/test1.dos
new file mode 100755
index 0000000..51c433c
--- /dev/null
+++ b/dolphindb/project/scripts/test1.dos
@@ -0,0 +1,14 @@
+login('admin', '123456')
+tbl = loadTable("dfs://hft_stock_ts", 'TickPartitioned')
+//select * from tbl where code='000666.SZ', m_nDate <= 2013.01.06
+// delete from tbl where code = '000666.SZ' //, '000667.SZ', '000668.SZ', '000669.SZ']
+for (code in ['000666.SZ' , '000667.SZ', '000668.SZ', '000669.SZ']) {
+	del_date = 2013.01.01
+	//end_date = 2013.01.31
+	do {
+		//print('Deleting ' + code + ' from ' + start_date + ' to ' + end_date);
+		print('Deleting ' + code + ' of ' + del_date);
+		delete from tbl where m_nDate=del_date, code=code;
+		del_date = temporalAdd(del_date, 1, "d");
+	} while (del_date <= 2022.12.31)
+}
diff --git a/dolphindb/project/scripts/test2.dos b/dolphindb/project/scripts/test2.dos
new file mode 100755
index 0000000..6b77081
--- /dev/null
+++ b/dolphindb/project/scripts/test2.dos
@@ -0,0 +1,3 @@
+login('admin', '123456')
+//select * from getClusterChunksStatus() where chunkId = "0367bcb4-4919-d4ad-5d46-b32a1fa6e724"
+temporalAdd(2013.12.31, 2, "y") <= 2014.12.31
\ No newline at end of file
diff --git a/dolphindb/test1.dos b/dolphindb/test1.dos
deleted file mode 100644
index 730dc31..0000000
--- a/dolphindb/test1.dos
+++ /dev/null
@@ -1,10 +0,0 @@
-
-login('admin', '123456')
-
-tt = table(100:0, `code`m_nDate`m_nTime`m_nSide`m_nPrice`m_nOrderItems`m_nABItems`m_nABVolume, [SYMBOL, DATE, TIME, INT, FLOAT, INT, INT, INT[]])
-
-share t as gt
-
-share tt as gtt
-
-dropStreamTable(gt)
\ No newline at end of file
diff --git a/dolphindb/test2.dos b/dolphindb/test2.dos
deleted file mode 100644
index a92ff6c..0000000
--- a/dolphindb/test2.dos
+++ /dev/null
@@ -1,5 +0,0 @@
-
-login("admin","123456")
-pt=loadTable("dfs://valuedb","pt")
-getTabletsMeta("/valuedb/%", `pt, true);
-select top 100 * from pt
\ No newline at end of file
diff --git a/ddb.ipynb b/ipynb/ddb.ipynb
similarity index 61%
rename from ddb.ipynb
rename to ipynb/ddb.ipynb
index 95ce37c..028dbd2 100644
--- a/ddb.ipynb
+++ b/ipynb/ddb.ipynb
@@ -847,9 +847,378 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 21,
    "id": "b1bd7605-c347-44f2-a90f-bc949cde0ef0",
    "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>code</th>\n",
+       "      <th>report_period</th>\n",
+       "      <th>appear_in_period</th>\n",
+       "      <th>appear_at_date</th>\n",
+       "      <th>TOT_OPER_REV</th>\n",
+       "      <th>OPER_REV</th>\n",
+       "      <th>INT_INC</th>\n",
+       "      <th>INSUR_PREM_UNEARNED</th>\n",
+       "      <th>HANDLING_CHRG_COMM_INC</th>\n",
+       "      <th>NET_INC_OTHER_OPS</th>\n",
+       "      <th>...</th>\n",
+       "      <th>OTHER_INCOME</th>\n",
+       "      <th>MEMO</th>\n",
+       "      <th>ASSET_DISPOSAL_INCOME</th>\n",
+       "      <th>CONTINUED_NET_PROFIT</th>\n",
+       "      <th>END_NET_PROFIT</th>\n",
+       "      <th>CREDIT_IMPAIRMENT_LOSS</th>\n",
+       "      <th>RD_EXPENSE</th>\n",
+       "      <th>STMNOTE_FINEXP</th>\n",
+       "      <th>FIN_EXP_INT_INC</th>\n",
+       "      <th>TOT_OPER_COST2</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>000677.SZ</td>\n",
+       "      <td>2009-12-31</td>\n",
+       "      <td>2009-12-31</td>\n",
+       "      <td>2010-04-26</td>\n",
+       "      <td>3.514495e+09</td>\n",
+       "      <td>3.514495e+09</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>26392229.68</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.474455e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>000677.SZ</td>\n",
+       "      <td>2009-12-31</td>\n",
+       "      <td>2009-12-31</td>\n",
+       "      <td>2011-12-10</td>\n",
+       "      <td>3.514495e+09</td>\n",
+       "      <td>3.514495e+09</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>26392229.68</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.460335e+09</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>2 rows × 69 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "        code report_period appear_in_period appear_at_date  TOT_OPER_REV  \\\n",
+       "0  000677.SZ    2009-12-31       2009-12-31     2010-04-26  3.514495e+09   \n",
+       "1  000677.SZ    2009-12-31       2009-12-31     2011-12-10  3.514495e+09   \n",
+       "\n",
+       "       OPER_REV  INT_INC  INSUR_PREM_UNEARNED  HANDLING_CHRG_COMM_INC  \\\n",
+       "0  3.514495e+09      0.0                  0.0                     0.0   \n",
+       "1  3.514495e+09      0.0                  0.0                     0.0   \n",
+       "\n",
+       "   NET_INC_OTHER_OPS  ...  OTHER_INCOME  MEMO  ASSET_DISPOSAL_INCOME  \\\n",
+       "0        26392229.68  ...           0.0   nan                    0.0   \n",
+       "1        26392229.68  ...           0.0   nan                    0.0   \n",
+       "\n",
+       "   CONTINUED_NET_PROFIT  END_NET_PROFIT  CREDIT_IMPAIRMENT_LOSS  RD_EXPENSE  \\\n",
+       "0                   0.0             0.0                     0.0         0.0   \n",
+       "1                   0.0             0.0                     0.0         0.0   \n",
+       "\n",
+       "   STMNOTE_FINEXP  FIN_EXP_INT_INC  TOT_OPER_COST2  \n",
+       "0             0.0              0.0    3.474455e+09  \n",
+       "1             0.0              0.0    3.460335e+09  \n",
+       "\n",
+       "[2 rows x 69 columns]"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "import dolphindb as ddb \n",
+    "\n",
+    "sess = ddb.session('192.168.1.167', 8848)\n",
+    "sess.login('admin', '123456')\n",
+    "\n",
+    "sess.run(\"\"\"\n",
+    "    is_common_adj = loadTable(\"dfs://pit_stock_ts\", \"is_common_adj\")\n",
+    "    is_common_ori = loadTable(\"dfs://pit_stock_ts\", \"is_common_ori\")\n",
+    "    select * from is_common_ori where code='000677.SZ' and report_period=2009.12.31\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "id": "f0b3928d-c06f-4976-b568-091d98293a6e",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>code</th>\n",
+       "      <th>report_period</th>\n",
+       "      <th>appear_in_period</th>\n",
+       "      <th>appear_at_date</th>\n",
+       "      <th>TOT_OPER_REV</th>\n",
+       "      <th>OPER_REV</th>\n",
+       "      <th>INT_INC</th>\n",
+       "      <th>INSUR_PREM_UNEARNED</th>\n",
+       "      <th>HANDLING_CHRG_COMM_INC</th>\n",
+       "      <th>NET_INC_OTHER_OPS</th>\n",
+       "      <th>...</th>\n",
+       "      <th>OTHER_INCOME</th>\n",
+       "      <th>MEMO</th>\n",
+       "      <th>ASSET_DISPOSAL_INCOME</th>\n",
+       "      <th>CONTINUED_NET_PROFIT</th>\n",
+       "      <th>END_NET_PROFIT</th>\n",
+       "      <th>CREDIT_IMPAIRMENT_LOSS</th>\n",
+       "      <th>RD_EXPENSE</th>\n",
+       "      <th>STMNOTE_FINEXP</th>\n",
+       "      <th>FIN_EXP_INT_INC</th>\n",
+       "      <th>TOT_OPER_COST2</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>000677.SZ</td>\n",
+       "      <td>2009-12-31</td>\n",
+       "      <td>2010-12-31</td>\n",
+       "      <td>2011-04-29</td>\n",
+       "      <td>3.514495e+09</td>\n",
+       "      <td>3.514495e+09</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>26392229.68</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.474455e+09</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>1 rows × 69 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "        code report_period appear_in_period appear_at_date  TOT_OPER_REV  \\\n",
+       "0  000677.SZ    2009-12-31       2010-12-31     2011-04-29  3.514495e+09   \n",
+       "\n",
+       "       OPER_REV  INT_INC  INSUR_PREM_UNEARNED  HANDLING_CHRG_COMM_INC  \\\n",
+       "0  3.514495e+09      0.0                  0.0                     0.0   \n",
+       "\n",
+       "   NET_INC_OTHER_OPS  ...  OTHER_INCOME  MEMO  ASSET_DISPOSAL_INCOME  \\\n",
+       "0        26392229.68  ...           0.0   nan                    0.0   \n",
+       "\n",
+       "   CONTINUED_NET_PROFIT  END_NET_PROFIT  CREDIT_IMPAIRMENT_LOSS  RD_EXPENSE  \\\n",
+       "0                   0.0             0.0                     0.0         0.0   \n",
+       "\n",
+       "   STMNOTE_FINEXP  FIN_EXP_INT_INC  TOT_OPER_COST2  \n",
+       "0             0.0              0.0    3.474455e+09  \n",
+       "\n",
+       "[1 rows x 69 columns]"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "sess.run(\"select * from is_common_adj where code='000677.SZ' and report_period=2009.12.31\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "id": "d68ea326-82c3-4a7c-97cf-c04dd8aee56b",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>code</th>\n",
+       "      <th>m_nDate</th>\n",
+       "      <th>m_nTime</th>\n",
+       "      <th>m_nPrice</th>\n",
+       "      <th>m_iVolume</th>\n",
+       "      <th>m_iTurover</th>\n",
+       "      <th>m_nMatchItems</th>\n",
+       "      <th>m_chTradeFlag</th>\n",
+       "      <th>m_chBSFlag</th>\n",
+       "      <th>m_iAccVolume</th>\n",
+       "      <th>...</th>\n",
+       "      <th>m_nOpen</th>\n",
+       "      <th>m_nPreClose</th>\n",
+       "      <th>m_nAskPrice</th>\n",
+       "      <th>m_nAskVolume</th>\n",
+       "      <th>m_nBidPrice</th>\n",
+       "      <th>m_nBidVolume</th>\n",
+       "      <th>m_nAskAvPrice</th>\n",
+       "      <th>m_nBidAvPrice</th>\n",
+       "      <th>m_iTotalAskVolume</th>\n",
+       "      <th>m_iTotalBidVolume</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>0 rows × 23 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "Empty DataFrame\n",
+       "Columns: [code, m_nDate, m_nTime, m_nPrice, m_iVolume, m_iTurover, m_nMatchItems, m_chTradeFlag, m_chBSFlag, m_iAccVolume, m_iAccTurover, m_nHigh, m_nLow, m_nOpen, m_nPreClose, m_nAskPrice, m_nAskVolume, m_nBidPrice, m_nBidVolume, m_nAskAvPrice, m_nBidAvPrice, m_iTotalAskVolume, m_iTotalBidVolume]\n",
+       "Index: []\n",
+       "\n",
+       "[0 rows x 23 columns]"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "sess = ddb.session('192.168.1.7', 8848)\n",
+    "sess.login('admin', '123456')\n",
+    "sess.run(\"\"\"\n",
+    "tbl = loadTable(\"dfs://hft_stock_ts\", 'TickPartitioned');\n",
+    "select * from tbl where code='000666.SZ', m_nDate <= 2013.02.26;\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "id": "0e6e949b-ff25-40eb-a70a-72a3a6639aec",
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "RuntimeError",
+     "evalue": "<Exception> in run: Failed to read response header from the socket with IO error type 13",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [31]\u001b[0m, in \u001b[0;36m<cell line: 15>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m code \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[1;32m      2\u001b[0m \u001b[38;5;124mtbl = loadTable(\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdfs://hft_stock_ts\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTickPartitioned\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m)\u001b[39m\n\u001b[1;32m      3\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     13\u001b[0m \u001b[38;5;124m}\u001b[39m\n\u001b[1;32m     14\u001b[0m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[0;32m---> 15\u001b[0m \u001b[43msess\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcode\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/.venv/tinysoft/lib/python3.8/site-packages/dolphindb/session.py:161\u001b[0m, in \u001b[0;36msession.run\u001b[0;34m(self, script, *args, **kwargs)\u001b[0m\n\u001b[1;32m    159\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfetchSize\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m kwargs\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[1;32m    160\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m BlockReader(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcpp\u001b[38;5;241m.\u001b[39mrunBlock(script, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs))\n\u001b[0;32m--> 161\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcpp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43mscript\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+      "\u001b[0;31mRuntimeError\u001b[0m: <Exception> in run: Failed to read response header from the socket with IO error type 13"
+     ]
+    }
+   ],
+   "source": [
+    "code = \"\"\"\n",
+    "tbl = loadTable(\"dfs://hft_stock_ts\", 'TickPartitioned')\n",
+    "\n",
+    "for (code in ['000666.SZ' , '000667.SZ', '000668.SZ', '000669.SZ']) {\n",
+    "\tdel_date = 2013.01.01\n",
+    "\t//end_date = 2013.01.31\n",
+    "\tdo {\n",
+    "\t\t//print('Deleting ' + code + ' from ' + start_date + ' to ' + end_date);\n",
+    "\t\tprint('Deleting ' + code + ' of ' + del_date);\n",
+    "\t\tdelete from tbl where m_nDate=del_date, code=code;\n",
+    "\t\tdel_date = temporalAdd(del_date, 1, \"d\");\n",
+    "\t} while (del_date <= 2022.12.31)\n",
+    "}\n",
+    "\"\"\"\n",
+    "sess.run(code)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ea0501e7-d416-45ce-add5-e443c55f158c",
+   "metadata": {},
    "outputs": [],
    "source": []
   }
diff --git a/ipynb/ddb_pit.ipynb b/ipynb/ddb_pit.ipynb
new file mode 100644
index 0000000..74a3632
--- /dev/null
+++ b/ipynb/ddb_pit.ipynb
@@ -0,0 +1,1009 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "139fd1cb-aedf-4186-8408-4d630ba69599",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import dolphindb as ddb\n",
+    "\n",
+    "sess = ddb.session(\"192.168.1.167\", 8848)\n",
+    "sess.login('admin', '123456')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "id": "86d6ce04-b5ae-410b-af8d-9d9b5d87a959",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sess.run(\"\"\"\n",
+    "    dropFunctionView('pit_at_date')\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "id": "5482fa63-23e7-48e7-9636-5628faef7b73",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sess.run(\"\"\"\n",
+    "def pit_at_date(table_name, date, report_period_list, code_partition_id) {\n",
+    "\tsource_table = loadTable(\"dfs://pit_stock_ts\", table_name);\n",
+    "\t\n",
+    "\tm_nDate = take(date, size(report_period_list));\n",
+    "\treport_period = report_period_list;\n",
+    "\t\n",
+    "\tquery_table = table(report_period, m_nDate);\n",
+    "\tquery_table_exp = select * from cj(query_table, select code from source_table where partition(code, code_partition_id) group by code map);\n",
+    "\t\n",
+    "\tsource_table_part = select source_table.* from ej(source_table, query_table_exp, `code`report_period) where partition(code, code_partition_id);\n",
+    "\t\n",
+    "\treturn select source_table_part.* from aj(query_table_exp, source_table_part, `code`report_period`m_nDate, `code`report_period`appear_at_date) where not isNull(source_table_part.code)\n",
+    "}\n",
+    "\n",
+    "addFunctionView(pit_at_date)\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "id": "4e0eaa4d-80c9-4925-8496-a7d133fc0fda",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th>appear_in_period</th>\n",
+       "      <th>TOT_OPER_REV</th>\n",
+       "      <th>OPER_REV</th>\n",
+       "      <th>INT_INC</th>\n",
+       "      <th>INSUR_PREM_UNEARNED</th>\n",
+       "      <th>HANDLING_CHRG_COMM_INC</th>\n",
+       "      <th>NET_INC_OTHER_OPS</th>\n",
+       "      <th>PLUS_NET_INC_OTHER_BUS</th>\n",
+       "      <th>PLUS_NET_GAIN_CHG_FV</th>\n",
+       "      <th>PLUS_NET_INVEST_INC</th>\n",
+       "      <th>...</th>\n",
+       "      <th>OTHER_INCOME</th>\n",
+       "      <th>MEMO</th>\n",
+       "      <th>ASSET_DISPOSAL_INCOME</th>\n",
+       "      <th>CONTINUED_NET_PROFIT</th>\n",
+       "      <th>END_NET_PROFIT</th>\n",
+       "      <th>CREDIT_IMPAIRMENT_LOSS</th>\n",
+       "      <th>RD_EXPENSE</th>\n",
+       "      <th>STMNOTE_FINEXP</th>\n",
+       "      <th>FIN_EXP_INT_INC</th>\n",
+       "      <th>TOT_OPER_COST2</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>code</th>\n",
+       "      <th>report_period</th>\n",
+       "      <th>appear_at_date</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>000400.SZ</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-03-29</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>8.216559e+09</td>\n",
+       "      <td>8.216559e+09</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>73932.94</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>73932.94</td>\n",
+       "      <td>...</td>\n",
+       "      <td>72773000.86</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>2.737097e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.350267e+08</td>\n",
+       "      <td>45075829.77</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>7.967406e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000558.SZ</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-04-26</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>7.024741e+08</td>\n",
+       "      <td>7.024741e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>23984753.52</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>23984753.52</td>\n",
+       "      <td>...</td>\n",
+       "      <td>10174473.66</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>-12902036.23</td>\n",
+       "      <td>-5.424955e+07</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.000000e+00</td>\n",
+       "      <td>39309311.59</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>6.444387e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000677.SZ</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-03-29</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>7.068198e+08</td>\n",
+       "      <td>7.068198e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>220497.76</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>220497.76</td>\n",
+       "      <td>...</td>\n",
+       "      <td>1157100.00</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>-1852690.97</td>\n",
+       "      <td>6.403690e+06</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.514984e+05</td>\n",
+       "      <td>5234360.37</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>6.821367e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000731.SZ</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-04-16</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>2.639920e+09</td>\n",
+       "      <td>2.639920e+09</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>4467512.66</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>4467512.66</td>\n",
+       "      <td>...</td>\n",
+       "      <td>3477372.43</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>1992627.87</td>\n",
+       "      <td>2.228619e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.653546e+06</td>\n",
+       "      <td>46581902.65</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>2.367904e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000752.SZ</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-05-16</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>3.231171e+08</td>\n",
+       "      <td>3.231171e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>-43852162.57</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>-43852162.57</td>\n",
+       "      <td>...</td>\n",
+       "      <td>136549.44</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>-3.830619e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.000000e+00</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.135966e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <th>...</th>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>688039.SH</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-11-22</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>2.035519e+08</td>\n",
+       "      <td>2.035519e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>156599.67</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>156599.67</td>\n",
+       "      <td>...</td>\n",
+       "      <td>15702563.93</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>6.389806e+07</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>3.660990e+07</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.511902e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>688368.SH</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2019-09-17</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>7.665912e+08</td>\n",
+       "      <td>7.665912e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>972435.31</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>972435.31</td>\n",
+       "      <td>...</td>\n",
+       "      <td>6568742.64</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>0.000000e+00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>6.081719e+07</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>6.890894e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>688396.SH</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2020-01-31</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>6.270797e+09</td>\n",
+       "      <td>6.270797e+09</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>10592096.66</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>10592096.66</td>\n",
+       "      <td>...</td>\n",
+       "      <td>91086261.29</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>9434573.46</td>\n",
+       "      <td>0.000000e+00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>4.497610e+08</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>5.796301e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>831010.NE</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2020-07-01</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>2.936331e+08</td>\n",
+       "      <td>2.936331e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>262112.16</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>262112.16</td>\n",
+       "      <td>...</td>\n",
+       "      <td>380000.00</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>-258845.78</td>\n",
+       "      <td>4.129632e+07</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>5.236440e+05</td>\n",
+       "      <td>254556.29</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>2.437095e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>833874.NE</th>\n",
+       "      <th>2018-12-31</th>\n",
+       "      <th>2020-06-29</th>\n",
+       "      <td>2018-12-31</td>\n",
+       "      <td>1.974978e+08</td>\n",
+       "      <td>1.974978e+08</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>5841180.61</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>5841180.61</td>\n",
+       "      <td>...</td>\n",
+       "      <td>882100.00</td>\n",
+       "      <td>nan</td>\n",
+       "      <td>9554.96</td>\n",
+       "      <td>9.051358e+07</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.092805e+07</td>\n",
+       "      <td>0.00</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.021658e+08</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>91 rows × 66 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                                       appear_in_period  TOT_OPER_REV  \\\n",
+       "code      report_period appear_at_date                                  \n",
+       "000400.SZ 2018-12-31    2019-03-29           2018-12-31  8.216559e+09   \n",
+       "000558.SZ 2018-12-31    2019-04-26           2018-12-31  7.024741e+08   \n",
+       "000677.SZ 2018-12-31    2019-03-29           2018-12-31  7.068198e+08   \n",
+       "000731.SZ 2018-12-31    2019-04-16           2018-12-31  2.639920e+09   \n",
+       "000752.SZ 2018-12-31    2019-05-16           2018-12-31  3.231171e+08   \n",
+       "...                                                 ...           ...   \n",
+       "688039.SH 2018-12-31    2019-11-22           2018-12-31  2.035519e+08   \n",
+       "688368.SH 2018-12-31    2019-09-17           2018-12-31  7.665912e+08   \n",
+       "688396.SH 2018-12-31    2020-01-31           2018-12-31  6.270797e+09   \n",
+       "831010.NE 2018-12-31    2020-07-01           2018-12-31  2.936331e+08   \n",
+       "833874.NE 2018-12-31    2020-06-29           2018-12-31  1.974978e+08   \n",
+       "\n",
+       "                                            OPER_REV  INT_INC  \\\n",
+       "code      report_period appear_at_date                          \n",
+       "000400.SZ 2018-12-31    2019-03-29      8.216559e+09      0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26      7.024741e+08      0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29      7.068198e+08      0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16      2.639920e+09      0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16      3.231171e+08      0.0   \n",
+       "...                                              ...      ...   \n",
+       "688039.SH 2018-12-31    2019-11-22      2.035519e+08      0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17      7.665912e+08      0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31      6.270797e+09      0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01      2.936331e+08      0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29      1.974978e+08      0.0   \n",
+       "\n",
+       "                                        INSUR_PREM_UNEARNED  \\\n",
+       "code      report_period appear_at_date                        \n",
+       "000400.SZ 2018-12-31    2019-03-29                      0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26                      0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29                      0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16                      0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16                      0.0   \n",
+       "...                                                     ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                      0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17                      0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31                      0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01                      0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29                      0.0   \n",
+       "\n",
+       "                                        HANDLING_CHRG_COMM_INC  \\\n",
+       "code      report_period appear_at_date                           \n",
+       "000400.SZ 2018-12-31    2019-03-29                         0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26                         0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29                         0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16                         0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16                         0.0   \n",
+       "...                                                        ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                         0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17                         0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31                         0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01                         0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29                         0.0   \n",
+       "\n",
+       "                                        NET_INC_OTHER_OPS  \\\n",
+       "code      report_period appear_at_date                      \n",
+       "000400.SZ 2018-12-31    2019-03-29               73932.94   \n",
+       "000558.SZ 2018-12-31    2019-04-26            23984753.52   \n",
+       "000677.SZ 2018-12-31    2019-03-29              220497.76   \n",
+       "000731.SZ 2018-12-31    2019-04-16             4467512.66   \n",
+       "000752.SZ 2018-12-31    2019-05-16           -43852162.57   \n",
+       "...                                                   ...   \n",
+       "688039.SH 2018-12-31    2019-11-22              156599.67   \n",
+       "688368.SH 2018-12-31    2019-09-17              972435.31   \n",
+       "688396.SH 2018-12-31    2020-01-31            10592096.66   \n",
+       "831010.NE 2018-12-31    2020-07-01              262112.16   \n",
+       "833874.NE 2018-12-31    2020-06-29             5841180.61   \n",
+       "\n",
+       "                                        PLUS_NET_INC_OTHER_BUS  \\\n",
+       "code      report_period appear_at_date                           \n",
+       "000400.SZ 2018-12-31    2019-03-29                         0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26                         0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29                         0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16                         0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16                         0.0   \n",
+       "...                                                        ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                         0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17                         0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31                         0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01                         0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29                         0.0   \n",
+       "\n",
+       "                                        PLUS_NET_GAIN_CHG_FV  \\\n",
+       "code      report_period appear_at_date                         \n",
+       "000400.SZ 2018-12-31    2019-03-29                       0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26                       0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29                       0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16                       0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16                       0.0   \n",
+       "...                                                      ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                       0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17                       0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31                       0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01                       0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29                       0.0   \n",
+       "\n",
+       "                                        PLUS_NET_INVEST_INC  ...  \\\n",
+       "code      report_period appear_at_date                       ...   \n",
+       "000400.SZ 2018-12-31    2019-03-29                 73932.94  ...   \n",
+       "000558.SZ 2018-12-31    2019-04-26              23984753.52  ...   \n",
+       "000677.SZ 2018-12-31    2019-03-29                220497.76  ...   \n",
+       "000731.SZ 2018-12-31    2019-04-16               4467512.66  ...   \n",
+       "000752.SZ 2018-12-31    2019-05-16             -43852162.57  ...   \n",
+       "...                                                     ...  ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                156599.67  ...   \n",
+       "688368.SH 2018-12-31    2019-09-17                972435.31  ...   \n",
+       "688396.SH 2018-12-31    2020-01-31              10592096.66  ...   \n",
+       "831010.NE 2018-12-31    2020-07-01                262112.16  ...   \n",
+       "833874.NE 2018-12-31    2020-06-29               5841180.61  ...   \n",
+       "\n",
+       "                                        OTHER_INCOME  MEMO  \\\n",
+       "code      report_period appear_at_date                       \n",
+       "000400.SZ 2018-12-31    2019-03-29       72773000.86   nan   \n",
+       "000558.SZ 2018-12-31    2019-04-26       10174473.66   nan   \n",
+       "000677.SZ 2018-12-31    2019-03-29        1157100.00   nan   \n",
+       "000731.SZ 2018-12-31    2019-04-16        3477372.43   nan   \n",
+       "000752.SZ 2018-12-31    2019-05-16         136549.44   nan   \n",
+       "...                                              ...   ...   \n",
+       "688039.SH 2018-12-31    2019-11-22       15702563.93   nan   \n",
+       "688368.SH 2018-12-31    2019-09-17        6568742.64   nan   \n",
+       "688396.SH 2018-12-31    2020-01-31       91086261.29   nan   \n",
+       "831010.NE 2018-12-31    2020-07-01         380000.00   nan   \n",
+       "833874.NE 2018-12-31    2020-06-29         882100.00   nan   \n",
+       "\n",
+       "                                        ASSET_DISPOSAL_INCOME  \\\n",
+       "code      report_period appear_at_date                          \n",
+       "000400.SZ 2018-12-31    2019-03-29                       0.00   \n",
+       "000558.SZ 2018-12-31    2019-04-26               -12902036.23   \n",
+       "000677.SZ 2018-12-31    2019-03-29                -1852690.97   \n",
+       "000731.SZ 2018-12-31    2019-04-16                 1992627.87   \n",
+       "000752.SZ 2018-12-31    2019-05-16                       0.00   \n",
+       "...                                                       ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                       0.00   \n",
+       "688368.SH 2018-12-31    2019-09-17                       0.00   \n",
+       "688396.SH 2018-12-31    2020-01-31                 9434573.46   \n",
+       "831010.NE 2018-12-31    2020-07-01                 -258845.78   \n",
+       "833874.NE 2018-12-31    2020-06-29                    9554.96   \n",
+       "\n",
+       "                                        CONTINUED_NET_PROFIT  END_NET_PROFIT  \\\n",
+       "code      report_period appear_at_date                                         \n",
+       "000400.SZ 2018-12-31    2019-03-29              2.737097e+08             0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26             -5.424955e+07             0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29              6.403690e+06             0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16              2.228619e+08             0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16             -3.830619e+08             0.0   \n",
+       "...                                                      ...             ...   \n",
+       "688039.SH 2018-12-31    2019-11-22              6.389806e+07             0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17              0.000000e+00             0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31              0.000000e+00             0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01              4.129632e+07             0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29              9.051358e+07             0.0   \n",
+       "\n",
+       "                                        CREDIT_IMPAIRMENT_LOSS    RD_EXPENSE  \\\n",
+       "code      report_period appear_at_date                                         \n",
+       "000400.SZ 2018-12-31    2019-03-29                         0.0  3.350267e+08   \n",
+       "000558.SZ 2018-12-31    2019-04-26                         0.0  0.000000e+00   \n",
+       "000677.SZ 2018-12-31    2019-03-29                         0.0  3.514984e+05   \n",
+       "000731.SZ 2018-12-31    2019-04-16                         0.0  1.653546e+06   \n",
+       "000752.SZ 2018-12-31    2019-05-16                         0.0  0.000000e+00   \n",
+       "...                                                        ...           ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                         0.0  3.660990e+07   \n",
+       "688368.SH 2018-12-31    2019-09-17                         0.0  6.081719e+07   \n",
+       "688396.SH 2018-12-31    2020-01-31                         0.0  4.497610e+08   \n",
+       "831010.NE 2018-12-31    2020-07-01                         0.0  5.236440e+05   \n",
+       "833874.NE 2018-12-31    2020-06-29                         0.0  1.092805e+07   \n",
+       "\n",
+       "                                        STMNOTE_FINEXP  FIN_EXP_INT_INC  \\\n",
+       "code      report_period appear_at_date                                    \n",
+       "000400.SZ 2018-12-31    2019-03-29         45075829.77              0.0   \n",
+       "000558.SZ 2018-12-31    2019-04-26         39309311.59              0.0   \n",
+       "000677.SZ 2018-12-31    2019-03-29          5234360.37              0.0   \n",
+       "000731.SZ 2018-12-31    2019-04-16         46581902.65              0.0   \n",
+       "000752.SZ 2018-12-31    2019-05-16                0.00              0.0   \n",
+       "...                                                ...              ...   \n",
+       "688039.SH 2018-12-31    2019-11-22                0.00              0.0   \n",
+       "688368.SH 2018-12-31    2019-09-17                0.00              0.0   \n",
+       "688396.SH 2018-12-31    2020-01-31                0.00              0.0   \n",
+       "831010.NE 2018-12-31    2020-07-01           254556.29              0.0   \n",
+       "833874.NE 2018-12-31    2020-06-29                0.00              0.0   \n",
+       "\n",
+       "                                        TOT_OPER_COST2  \n",
+       "code      report_period appear_at_date                  \n",
+       "000400.SZ 2018-12-31    2019-03-29        7.967406e+09  \n",
+       "000558.SZ 2018-12-31    2019-04-26        6.444387e+08  \n",
+       "000677.SZ 2018-12-31    2019-03-29        6.821367e+08  \n",
+       "000731.SZ 2018-12-31    2019-04-16        2.367904e+09  \n",
+       "000752.SZ 2018-12-31    2019-05-16        3.135966e+08  \n",
+       "...                                                ...  \n",
+       "688039.SH 2018-12-31    2019-11-22        1.511902e+08  \n",
+       "688368.SH 2018-12-31    2019-09-17        6.890894e+08  \n",
+       "688396.SH 2018-12-31    2020-01-31        5.796301e+09  \n",
+       "831010.NE 2018-12-31    2020-07-01        2.437095e+08  \n",
+       "833874.NE 2018-12-31    2020-06-29        1.021658e+08  \n",
+       "\n",
+       "[91 rows x 66 columns]"
+      ]
+     },
+     "execution_count": 44,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#sess.run(\"\"\"\n",
+    "#    is_common_ori = loadTable(\"dfs://pit_stock_ts\", \"is_common_ori\")\n",
+    "#\"\"\")\n",
+    "\n",
+    "# pit_report_period_at_date(table_name, date, report_period_list, code_partition_id)\n",
+    "sess.run(\"\"\"\n",
+    "    select * from pit_at_date(\"is_common_ori\", 2021.03.14, [2018.12.31], 0) order by code\n",
+    "\"\"\").set_index(['code', 'report_period', 'appear_at_date'])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 67,
+   "id": "4cd4cd6e-f34e-43a8-98de-c468a54d8081",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sess.run(\"\"\"\n",
+    "    dropFunctionView('pit_col_at_date');\n",
+    "\"\"\")\n",
+    "\n",
+    "sess.run(\"\"\"\n",
+    "def pit_col_at_date(table_name, col_name, date, report_period_list, code_partition_id){\n",
+    "\tsource_table = loadTable(\"dfs://pit_stock_ts\", table_name);\n",
+    "\t\n",
+    "\tm_nDate = take(date, size(report_period_list));\n",
+    "\treport_period = report_period_list;\n",
+    "\t\n",
+    "\tquery_table = table(report_period, m_nDate);\n",
+    "\tquery_table_exp = select * from cj(query_table, select code from source_table where partition(code, code_partition_id) group by code map);\n",
+    "\t\n",
+    "\tcol_list = sqlCol(['code', 'report_period', 'appear_at_date', col_name]);\n",
+    "    from_tbl = <ej(source_table, query_table_exp, `code`report_period)>;\n",
+    "    where_conditions = [<partition(code, code_partition_id)>];\n",
+    "    source_table_part = sql(select=col_list, from=from_tbl, where=where_conditions).eval();\n",
+    "\t\n",
+    "\treturn select source_table_part.* from aj(query_table_exp, source_table_part, `code`report_period`m_nDate, `code`report_period`appear_at_date) where not isNull(source_table_part.code)\n",
+    "}\n",
+    "\n",
+    "addFunctionView(pit_col_at_date);\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 69,
+   "id": "943b760a-ab39-4291-8a93-81b3e38a70b7",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th>TOT_OPER_REV</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>code</th>\n",
+       "      <th>report_period</th>\n",
+       "      <th>appear_at_date</th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>000400.SZ</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-29</th>\n",
+       "      <td>5.658881e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000558.SZ</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-29</th>\n",
+       "      <td>8.322244e+07</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000677.SZ</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-21</th>\n",
+       "      <td>6.020088e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000731.SZ</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-27</th>\n",
+       "      <td>2.311672e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>000752.SZ</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-29</th>\n",
+       "      <td>2.330136e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <th>...</th>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>688039.SH</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-28</th>\n",
+       "      <td>1.185143e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>688368.SH</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-28</th>\n",
+       "      <td>6.139719e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>688396.SH</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-20</th>\n",
+       "      <td>4.131915e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>831010.NE</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-29</th>\n",
+       "      <td>2.276040e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>833874.NE</th>\n",
+       "      <th>2019-09-30</th>\n",
+       "      <th>2020-10-26</th>\n",
+       "      <td>1.303494e+08</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>91 rows × 1 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                                        TOT_OPER_REV\n",
+       "code      report_period appear_at_date              \n",
+       "000400.SZ 2019-09-30    2020-10-29      5.658881e+09\n",
+       "000558.SZ 2019-09-30    2020-10-29      8.322244e+07\n",
+       "000677.SZ 2019-09-30    2020-10-21      6.020088e+08\n",
+       "000731.SZ 2019-09-30    2020-10-27      2.311672e+09\n",
+       "000752.SZ 2019-09-30    2020-10-29      2.330136e+08\n",
+       "...                                              ...\n",
+       "688039.SH 2019-09-30    2020-10-28      1.185143e+08\n",
+       "688368.SH 2019-09-30    2020-10-28      6.139719e+08\n",
+       "688396.SH 2019-09-30    2020-10-20      4.131915e+09\n",
+       "831010.NE 2019-09-30    2020-10-29      2.276040e+08\n",
+       "833874.NE 2019-09-30    2020-10-26      1.303494e+08\n",
+       "\n",
+       "[91 rows x 1 columns]"
+      ]
+     },
+     "execution_count": 69,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "sess.run(\"\"\"\n",
+    "    select * from pit_col_at_date(\"is_common_adj\", \"TOT_OPER_REV\", 2021.03.14, [2019.09.30], 0) order by code\n",
+    "\"\"\").set_index(['code', 'report_period', 'appear_at_date'])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 59,
+   "id": "2fea0f1e-5105-4d28-9c36-c5542a5389ba",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>code</th>\n",
+       "      <th>report_period</th>\n",
+       "      <th>appear_in_period</th>\n",
+       "      <th>appear_at_date</th>\n",
+       "      <th>TOT_OPER_REV</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>000400.SZ</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-04-10</td>\n",
+       "      <td>1.015608e+10</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>000558.SZ</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-04-27</td>\n",
+       "      <td>1.378479e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>000558.SZ</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-08-25</td>\n",
+       "      <td>1.378479e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>000677.SZ</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-04-25</td>\n",
+       "      <td>7.906742e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>000731.SZ</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-04-24</td>\n",
+       "      <td>2.929131e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>109</th>\n",
+       "      <td>688396.SH</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-04-23</td>\n",
+       "      <td>5.742784e+09</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>110</th>\n",
+       "      <td>831010.NE</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-04-13</td>\n",
+       "      <td>3.552313e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>111</th>\n",
+       "      <td>831010.NE</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-07-01</td>\n",
+       "      <td>3.552313e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>112</th>\n",
+       "      <td>833874.NE</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-03-18</td>\n",
+       "      <td>1.785113e+08</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>113</th>\n",
+       "      <td>833874.NE</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2019-12-31</td>\n",
+       "      <td>2020-06-29</td>\n",
+       "      <td>1.785113e+08</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>114 rows × 5 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "          code report_period appear_in_period appear_at_date  TOT_OPER_REV\n",
+       "0    000400.SZ    2019-12-31       2019-12-31     2020-04-10  1.015608e+10\n",
+       "1    000558.SZ    2019-12-31       2019-12-31     2020-04-27  1.378479e+08\n",
+       "2    000558.SZ    2019-12-31       2019-12-31     2020-08-25  1.378479e+08\n",
+       "3    000677.SZ    2019-12-31       2019-12-31     2020-04-25  7.906742e+08\n",
+       "4    000731.SZ    2019-12-31       2019-12-31     2020-04-24  2.929131e+09\n",
+       "..         ...           ...              ...            ...           ...\n",
+       "109  688396.SH    2019-12-31       2019-12-31     2020-04-23  5.742784e+09\n",
+       "110  831010.NE    2019-12-31       2019-12-31     2020-04-13  3.552313e+08\n",
+       "111  831010.NE    2019-12-31       2019-12-31     2020-07-01  3.552313e+08\n",
+       "112  833874.NE    2019-12-31       2019-12-31     2020-03-18  1.785113e+08\n",
+       "113  833874.NE    2019-12-31       2019-12-31     2020-06-29  1.785113e+08\n",
+       "\n",
+       "[114 rows x 5 columns]"
+      ]
+     },
+     "execution_count": 59,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "sess.run(\"\"\"\n",
+    "    source_table = loadTable(\"dfs://pit_stock_ts\", \"is_common_ori\");\n",
+    "    m_nDate = [2022.03.04]\n",
+    "    report_period = [2019.12.31]\n",
+    "\tquery_table = table(report_period, m_nDate);\n",
+    "\tquery_table_exp = select * from cj(query_table, select code from source_table where partition(code, 0) group by code map);\n",
+    "\t\n",
+    "    \n",
+    "    col_list = sqlCol(['code', 'report_period', 'appear_in_period', 'appear_at_date', 'TOT_OPER_REV']);\n",
+    "    from_tbl = <ej(source_table, query_table_exp, `code`report_period)>;\n",
+    "    where_conditions = [<partition(code, 0)>];\n",
+    "    source_table_part = sql(select=col_list, from=from_tbl, where=where_conditions).eval();\n",
+    "\tsource_table_part\n",
+    "\"\"\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3c246940-1ad6-414f-b461-2d8ca7cd87f1",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.13"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/dos.ipynb b/ipynb/dos.ipynb
similarity index 100%
rename from dos.ipynb
rename to ipynb/dos.ipynb
diff --git a/mssql.ipynb b/ipynb/mssql.ipynb
similarity index 100%
rename from mssql.ipynb
rename to ipynb/mssql.ipynb
diff --git a/DDBFactor.py b/src/DDBFactor.py
similarity index 100%
rename from DDBFactor.py
rename to src/DDBFactor.py
diff --git a/DDBLoader.py b/src/DDBLoader.py
similarity index 100%
rename from DDBLoader.py
rename to src/DDBLoader.py
diff --git a/ReadTickFromDB.py b/src/ReadTickFromDB.py
similarity index 100%
rename from ReadTickFromDB.py
rename to src/ReadTickFromDB.py
diff --git a/make_hft.py b/src/make_hft.py
similarity index 100%
rename from make_hft.py
rename to src/make_hft.py
diff --git a/script.py b/src/script.py
similarity index 100%
rename from script.py
rename to src/script.py