Commit 03fa2cebbbaad12681d40eeb914be83dd1c4628b
1 parent
e6dff8a6
Add viw_kg_field_dict: NL2SQL term-grounding dictionary (deliverable 5a)
Map 业务中文名 -> real column -> table (38342 mappings, 6075 terms, 539 tables), ranked by form-usage for same-name disambiguation, with FK target (sFkTable/sFkKey) attached from viw_kg_edge_ref so NL2SQL knows the join. This is the field-dictionary half of the GraphRAG package.
Showing
1 changed file
with
48 additions
and
0 deletions
sql/viw_kg_field_dict.sql
0 → 100644
| 1 | +-- ============================================================ | ||
| 2 | +-- 视图:viw_kg_field_dict —— ERP 知识图谱·字段术语字典 (NL2SQL 术语接地) | ||
| 3 | +-- 一行 = 一个 (中文名 → 字段列名 → 表) 映射,让 LLM 把自然语言词汇落到真实列。 | ||
| 4 | +-- 例:客户名称 → sCustomerName @ salsalesordermaster | ||
| 5 | +-- 业务员 → sSalesManId @ salsalesordermaster (外键→ sissalesman.sId) | ||
| 6 | +-- | ||
| 7 | +-- 来源:字段控件 gdsconfigformslave.sChinese(中文名) + sName(列名), | ||
| 8 | +-- 表 = 所属主表单 gdsconfigformmaster.sTbName。 | ||
| 9 | +-- 剔除:按钮控件(Btn%)、空名、计算列(含 '(' / concat)。 | ||
| 10 | +-- iFormUses = 有多少张表单用了此映射(术语显著度,可用于同名消歧排序)。 | ||
| 11 | +-- 若该字段是外键(命中 viw_kg_edge_ref),带出 sFkTable/sFkKey —— NL2SQL 直接知道 join 到哪。 | ||
| 12 | +-- 表名统一小写;sDomain 由表名规范前缀推导(同 viw_kg_form 口径)。 | ||
| 13 | +-- 校验(本地库 xlyweberp_saas):约 38105 条 (表,字段,中文名) 去重映射。 | ||
| 14 | +-- ============================================================ | ||
| 15 | +CREATE OR REPLACE VIEW viw_kg_field_dict AS | ||
| 16 | +SELECT | ||
| 17 | + d.sChinese, -- 业务中文名(术语) | ||
| 18 | + d.sField, -- 真实列名 | ||
| 19 | + d.sTable, -- 所属表(小写) | ||
| 20 | + CASE LEFT(REGEXP_REPLACE(d.sTable,'^(viw_|viw|v_|sp_|sp|proc_|proc|udf_|fun_|calc_)',''), 3) | ||
| 21 | + WHEN 'sal' THEN '销售' WHEN 'pur' THEN '采购' WHEN 'quo' THEN '报价' | ||
| 22 | + WHEN 'qly' THEN '品质' WHEN 'ops' THEN '发外' | ||
| 23 | + WHEN 'mft' THEN '生产' WHEN 'man' THEN '生产' WHEN 'mes' THEN '生产' WHEN 'wor' THEN '生产' | ||
| 24 | + WHEN 'mit' THEN '库存' WHEN 'inv' THEN '库存' WHEN 'pit' THEN '库存' | ||
| 25 | + WHEN 'sgd' THEN '库存' WHEN 'sto' THEN '库存' | ||
| 26 | + WHEN 'cah' THEN '财务' WHEN 'pay' THEN '财务' WHEN 'rec' THEN '财务' | ||
| 27 | + WHEN 'bil' THEN '财务' WHEN 'cos' THEN '财务' WHEN 'cas' THEN '财务' | ||
| 28 | + WHEN 'ele' THEN '基础资料' WHEN 'sis' THEN '基础资料' WHEN 'con' THEN '基础资料' | ||
| 29 | + WHEN 'ept' THEN '设备' | ||
| 30 | + ELSE '其他' | ||
| 31 | + END AS sDomain, -- 业务域 | ||
| 32 | + d.iFormUses, -- 使用此映射的表单数(显著度) | ||
| 33 | + r.sTgtTable AS sFkTable, -- 外键目标表(若为引用字段) | ||
| 34 | + r.sTgtKey AS sFkKey -- 外键目标主键 | ||
| 35 | +FROM ( | ||
| 36 | + SELECT LOWER(m.sTbName) AS sTable, s.sName AS sField, s.sChinese AS sChinese, | ||
| 37 | + COUNT(DISTINCT s.sParentId) AS iFormUses | ||
| 38 | + FROM gdsconfigformslave s | ||
| 39 | + JOIN gdsconfigformmaster m ON s.sParentId = m.sId | ||
| 40 | + WHERE IFNULL(s.sChinese,'') <> '' | ||
| 41 | + AND IFNULL(s.sName,'') <> '' | ||
| 42 | + AND s.sControlName NOT LIKE 'Btn%' | ||
| 43 | + AND IFNULL(m.sTbName,'') <> '' | ||
| 44 | + AND s.sName NOT LIKE '%(%' | ||
| 45 | + AND s.sName NOT LIKE '%concat%' | ||
| 46 | + GROUP BY LOWER(m.sTbName), s.sName, s.sChinese | ||
| 47 | +) d | ||
| 48 | +LEFT JOIN viw_kg_edge_ref r ON r.sSrcTable = d.sTable AND r.sSrcField = d.sField; |