分发数据标准检查工具 v1.35_20230321
使用基于物理名称的标准检查功能时,出现运行时错误“‘424’”。我们需要一个物体。”有时消息中会出现错误。我们发布了数据标准检查工具v1.35_20230321,它纠正了这个错误。
*(参考)上次发布的文章: 部署数据标准检查工具 v1.34_20221215
一、现象
当您在“标准检查(基于物理名称)”表中的C列(列名称(物理名称))中输入列名称并单击标准检查按钮时,出现以下“'424'运行时错误”。我们需要一个物体。”发生错误。
2.原因
此错误并不总是发生,当物理名称被分隔符(_、下划线)分隔并且每个标记不在单词词典中的物理名称中时,就会发生此错误。
Private Sub cmdRun_Click() ... '------------------------------------------------------------------------------------------ '물리명 기준으로 논리명 찾기 Dim aColNamePart() As String, lColNamePartIdx As Long, oColNamePartAsStdWord As Collection Dim oStdWordObj As Object, oStdWord As CStdWord, sLName As String For lRow = LBound(vInRngArr) To UBound(vInRngArr) sColName = vInRngArr(lRow, 1) If Trim(sColName) = "" Then GoTo SkipBlank '점검할 속성명이 비어있는 경우 Skip aColNamePart = Split(sColName, "_") Set oColNamePartAsStdWord = Nothing Set oColNamePartAsStdWord = New Collection sLName = "" For lColNamePartIdx = LBound(aColNamePart) To UBound(aColNamePart) Set oStdWordObj = oStdWordDic.ItemP(aColNamePart(lColNamePartIdx)) '<-- 오류 발생 oColNamePartAsStdWord.Add oStdWordObj If TypeOf oStdWordObj Is CStdWord Then Set oStdWord = oStdWordObj sLName = sLName + IIf(sLName = "", "", "_") + oStdWord.m_s단어논리명 End If oOutRange.Offset(lRow - 1, 0).Value2 = sLName Next lColNamePartIdx SkipBlank: Next lRow ... End Sub
在上面代码的第 15 行中,aColNamePart(lColNamePartIdx) 表示标记除以下划线字符后的第 n 个值。当 oStdWordDic(单词词典词典对象)的 ItemP(将物理名称作为键、单词对象作为值进行管理的词典对象)中不存在该值时,会发生错误。
三、措施
代码更改如下。
Private Sub cmdRun_Click() ... '------------------------------------------------------------------------------------------ '물리명 기준으로 논리명 찾기 Dim aColNamePart() As String, lColNamePartIdx As Long, oColNamePartAsStdWord As Collection Dim oStdWordObj As Object, oStdWord As CStdWord, sLName As String Dim sTokenP As String, sTokenL As String For lRow = LBound(vInRngArr) To UBound(vInRngArr) sColName = vInRngArr(lRow, 1) If Trim(sColName) = "" Then GoTo SkipBlank '점검할 속성명이 비어있는 경우 Skip aColNamePart = Split(sColName, "_") Set oColNamePartAsStdWord = Nothing Set oColNamePartAsStdWord = New Collection sLName = "" For lColNamePartIdx = LBound(aColNamePart) To UBound(aColNamePart) sTokenP = aColNamePart(lColNamePartIdx) sTokenL = "" If oStdWordDic.ExistsP(sTokenP) Then '단어 물리명이 사전에 있는 경우 Set oStdWordObj = oStdWordDic.ItemP(aColNamePart(lColNamePartIdx)) oColNamePartAsStdWord.Add oStdWordObj If TypeOf oStdWordObj Is CStdWord Then Set oStdWord = oStdWordObj sTokenL = oStdWord.m_s단어논리명 End If Else '단어 물리명이 사전에 없는 경우 sTokenL = "[" + sTokenP + "]" End If sLName = sLName + IIf(sLName = "", "", "_") + sTokenL oOutRange.Offset(lRow - 1, 0).Value2 = sLName Next lColNamePartIdx SkipBlank: Next lRow ... End Sub
为了防止错误,请区分单词的物理名称在字典中(第 18 行)和不在字典中(第 25 行)的情况,如果不在字典中,则显示“[...]” ]”并使用条件格式使其脱颖而出。
如果单词的物理名称不在词典中,则显示如下例所示。这是故意输入字典中没有的 YMDX、ABC 和 DEF 的示例。
4.下载数据标准检查工具v1.35_20230321
补丁版本已经上传到github,可以从下面的网址下载。
https://github.com/DAToolset/ToolsForDataStandard/raw/main/속성%20표준점검%20도구_v1.35_20230321_1.xlsm
这是 Config 中与标准字典存储库相关的标准字典查询。
存储库数据库:PostgreSQL,标准化目标数据库:SQL Server
– 标准词典查询
SELECT ROW_NUMBER() OVER (ORDER BY D.DIC_LOG_NM) AS NO
,D.DIC_LOG_NM AS“字逻辑名”
,D.DIC_PHY_NM AS“字物理名称”
,D.DIC_PHY_FLL_NM AS“英文单词名称”
,D.DIC_DESC AS“字描述”
,D.STANDARD_YN AS “是否标准”
,(case D.ATTR_CLSS_YN when 'Y' then 'Y' else 'N' END) AS “是否是属性分类词”
,案件
当 D.STANDARD_YN = 'Y' 并且 SIM.Standard 逻辑名称为 NULL 时,则 D.DIC_LOG_NM
WHEN D.STANDARD_YN = 'Y' AND SIM.Standard 逻辑名称 IS NOT NULL THEN SIM.Standard 逻辑名称
ELSE SIM.标准逻辑名称
END “标准逻辑名称”
,SIM.同义词
,G.DOM_GRP_NM AS“域名分类名称”
/*
,D.ENT_CLSS_YN AS “实体分类词是否?
*/
FROM dataware.STD_AREA A
,dataware.STD_DIC D
左外连接
(选择 DM.KEY_DOM_NM
,MAX(DM.DOM_GRP_ID) DOM_GRP_ID
,MAX(DG.DOM_GRP_NM) DOM_GRP_NM
来自数据软件.STD_DOM DM
,dataware.STD_DOM_GRP DG
WHERE DM.STD_AREA_ID = '需要检查键值!!!'
和 DM.AVAL_END_DT = '99991231235959'
并且 DG.STD_AREA_ID = DM.STD_AREA_ID
和 DG.AVAL_END_DT = '99991231235959'
并且 DM.DOM_GRP_ID = DG.DOM_GRP_ID
按 DM.KEY_DOM_NM 分组) G
在 D.DIC_LOG_NM = G.KEY_DOM_NM 上
左外连接
(
— 如果标准
选择 A.P_DIC_ID“组 ID”
,A.P_DIC_ID DIC_ID
,P.DIC_LOG_NM “标准逻辑名称”
,STRING_AGG(C.DIC_LOG_NM, ',' ORDER BY A.C_DIC_ID) “同义词”
FROM dataware.STD_DIC_REL A
左外连接数据件.STD_DIC P
在 A.P_DIC_ID = P.DIC_ID 和 P.AVAL_END_DT = '99991231235959'
左外连接数据件.STD_DIC C
在 A.C_DIC_ID = C.DIC_ID 和 C.AVAL_END_DT = '99991231235959'
其中 1=1
AND A.P_STD_AREA_ID =(从 DATAWARE.STD_AREA 中选择 STD_AREA_ID,其中 AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '标准词典')
和 A.AVAL_END_DT = '99991231235959'
按 A.P_DIC_ID、P.DIC_LOG_NM 分组
联合所有
— 如果是非标准的
选择 AA.P_DIC_ID“组 ID”
,A.C_DIC_ID DIC_ID
,P.DIC_LOG_NM “标准逻辑名称”
,STRING_AGG(CASE WHEN AA.C_DIC_ID = A.C_DIC_ID THEN P.DIC_LOG_NM ELSE C.DIC_LOG_NM END, ',' 按 CASE WHEN AA.C_DIC_ID = A.C_DIC_ID THEN '0' ELSE AA.C_DIC_ID END) “同义词”
FROM dataware.STD_DIC_REL A
,dataware.STD_DIC_REL AA
,dataware.STD_DIC P
,dataware.STD_DIC C
其中 1=1
AND A.P_STD_AREA_ID =(从 DATAWARE.STD_AREA 中选择 STD_AREA_ID,其中 AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '标准词典')
和 A.AVAL_END_DT = '99991231235959'
AND A.P_DIC_ID = AA.P_DIC_ID
AND AA.P_DIC_ID = P.DIC_ID
和 P.AVAL_END_DT = '99991231235959'
AND AA.C_DIC_ID = C.DIC_ID
和 C.AVAL_END_DT = '99991231235959'
按 AA.P_DIC_ID、A.C_DIC_ID、P.DIC_LOG_NM 分组
) SIM 卡
在 D.DIC_ID = SIM.DIC_ID 上
WHERE A.STD_AREA_NM = '标准字典'
AND A.STD_AREA_ID = D.STD_AREA_ID
和 D.AVAL_END_DT = '99991231235959'
AND D.DIC_GBN_CD = '0001' /* '0001': 字 */
/* AND D.STANDARD_YN = 仅提取 'Y' 标准字 */
ORDER BY D.DIC_LOG_NM,(如果为 D.STANDARD_YN,则为“Y”,然后为 1,否则为 2 结束)
;
–标准术语词典查询
SELECT ROW_NUMBER() OVER (ORDER BY D.DIC_LOG_NM) AS NO
,D.DIC_LOG_NM AS“术语逻辑名称”
,
(
选择 STRING_AGG(X.DIC_LOG_NM, '_')
从
(
选择 WRD.DIC_LOG_NM
从 STD_DIC 作为 WRD
左外连接 STD_WORD_COMBI AS C
ON WRD.STD_AREA_ID = C.STD_AREA_ID
AND WRD.DIC_ID = C.WORD_ID
WHERE C.STD_AREA_ID =(从 DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '标准词典'中选择 STD_AREA_ID)
并且 C.TERM_ID = D.DIC_ID
和 C.AVAL_END_DT = '99991231235959'
按 C.ORDER_NO 订购
) 作为
) AS“词逻辑名称组合”
,D.DIC_PHY_NM AS“术语物理名称”
,D.DIC_DESC AS“术语表”
,DM.DOM_NM AS“域逻辑名”
,UPPER(DT.DATA_TYPE) AS“数据类型”
— ,DM.DATA_LEN AS“长度”
,(当 DM.DATA_LEN = -1 时则为 'MAX' else text(DM.DATA_LEN) END) AS “长度”
,DM.DATA_SCALE AS“度数”
,”作为“工作定义”
,UPPER(DT.DATA_TYPE)
||案例
当 DM.DATA_LEN 为 null 并且 UPPER(DT.DATA_TYPE) 不在 ('INT', 'DATETIME2') 中时则为 null
当 DM.DATA_LEN 为 null 且 UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') 时,则 ”
当 DM.DATA_LEN = -1 并且 DM.DATA_SCALE 为 NULL 且 UPPER(DT.DATA_TYPE) in ('VARCHAR', 'VARBINARY') THEN '(MAX'
否则 '('||DM.DATA_LEN
结尾
||当 DM.DATA_LEN 不为 NULL 并且 DM.DATA_SCALE 为 NULL 时的情况 ')'
当 DM.DATA_LEN 不为 NULL 且 DM.DATA_LEN > 0 且 DM.DATA_SCALE 不为 NULL 时,则 ','||DM.DATA_SCALE||')'
当 DM.DATA_LEN 为 NULL 并且 DM.DATA_SCALE 为 NULL 并且 UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') THEN ”
ELSE NULL 结束
AS“类型大小”
FROM dataware.STD_AREA A
,dataware.STD_DIC D
,dataware.STD_DOM DM
,dataware.STD_DATATYPE DT
WHERE A.STD_AREA_NM = '标准字典'
AND A.STD_AREA_ID = D.STD_AREA_ID
和 D.AVAL_END_DT = '99991231235959'
AND D.DIC_GBN_CD = '0002' /* '0002': 术语 */
AND D.STANDARD_YN = 'Y' /* 仅提取标准术语 */
且 DM.STD_AREA_ID = D.STD_AREA_ID
和 DM.AVAL_END_DT = '99991231235959'
并且 DM.DOM_ID = D.DOM_ID
AND DT.DB_TYPE = '0006' –SQL SERVER
AND DT.CD_NO = DM.DATA_TYPE_CD
;
–标准领域词典查询
SELECT ROW_NUMBER() OVER (ORDER BY DG.DOM_GRP_NM, DM.DOM_NM) AS NO
,DG.DOM_GRP_NM AS“域名分类名称”
,DM.DOM_NM AS“域逻辑名”
,DM.KEY_DOM_PHY_NM AS “关键域物理名称”
,(case DM.DOM_DESC null then DM.KEY_DOM_NM else DM.DOM_DESC END) AS “域描述”
,UPPER(DT.DATA_TYPE) AS“数据类型名称”
,(当 DM.DATA_LEN = -1 时则为 'MAX' else text(DM.DATA_LEN) END) AS “长度”
,DM.DATA_SCALE AS“度数”
,UPPER(DT.DATA_TYPE)
||案例
当 DM.DATA_LEN 为 null 并且 UPPER(DT.DATA_TYPE) 不在 ('INT', 'DATETIME2') 中时则为 null
当 DM.DATA_LEN 为 null 且 UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') 时,则 ”
当 DM.DATA_LEN = -1 并且 DM.DATA_SCALE 为 NULL 且 UPPER(DT.DATA_TYPE) in ('VARCHAR', 'VARBINARY') THEN '(MAX'
否则 '('||DM.DATA_LEN
结尾
||当 DM.DATA_LEN 不为 NULL 并且 DM.DATA_SCALE 为 NULL 时的情况 ')'
当 DM.DATA_LEN 不为 NULL 且 DM.DATA_LEN > 0 且 DM.DATA_SCALE 不为 NULL 时,则 ','||DM.DATA_SCALE||')'
当 DM.DATA_LEN 为 NULL 并且 DM.DATA_SCALE 为 NULL 并且 UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') THEN ”
ELSE NULL 结束
AS“类型大小”
/*
,DM.KEY_DOM_NM AS “关键域名”
*/
来自数据软件.STD_DOM DM
,dataware.STD_DOM_GRP DG
,dataware.STD_DATATYPE DT
WHERE DM.STD_AREA_ID =(从 DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '标准词典'中选择 STD_AREA_ID)
和 DM.AVAL_END_DT = '99991231235959'
并且 DG.STD_AREA_ID = DM.STD_AREA_ID
和 DG.AVAL_END_DT = '99991231235959'
并且 DG.DOM_GRP_ID = DM.DOM_GRP_ID
和 DT.DB_TYPE = '0006'
AND DT.CD_NO = DM.DATA_TYPE_CD
;
感谢您分享标准字典查找 SQL。
我在使用PostgreSQL版本时也会使用它。
注释中不显示空格字符的缩进。
我们来想个办法吧。
在检查标准时,如果属性名称(CUSTOMER NUMBER)仅与英文单词组合,则会出现即使注册了标准术语,也无法组合标准单词并检查标准英语匹配的症状。我认为这与将分隔符视为下划线和空格的逻辑有关。
前任)
*标准词语、缩写
顾客
号码,否
*标准术语、领域
客户编号,编号 V10
*标准域、数据类型
数字 V10,VARCHAR(10)
https://prodskill.com/ko/data-standard-checker-4-case-study/#33_%ED%91%9C%EC%A4%80%EC%A0%90%EA%B2%80_%EC%98%88%EC%8B%9C_Case_2_%ED%91%9C%EC%A4%80%EB%8B%A8%EC%96%B4_%EC%A1%B0%ED%95%A9
本文包含以下内容:
—————————————————————
属性“个人与否”(Row# 9) 包含空格。 “标准词逻辑名组合”项中显示“[个人主题]_是否”,说明“[个人主题]”不在标准词典中,而“是否”在标准词典中。该单元格还包含未注册的字符,因此背景颜色设置为红色。如果属性名称中包含分隔符,则“属性名称检查结果”项中会显示“(用户指定)”。
—————————————————————
受标准检查的属性名称中的空格字符是有意用于分隔单词的。
对于当前实现的功能,如果标准术语逻辑名称中允许有空格,则不会根据标准术语检查匹配。
似乎可以通过创建一个选项来执行所需的检查,以选择是否将要检查的属性名称中输入的空格视为“预期单词分隔符”或“空格字符”本身。
你需要它吗? ^^
在用英语建模的情况下,如果将属性名称当作韩语单词使用,则很难识别单词,因此如果英文单词必须用空格分隔,则可能需要一个选项。^^;;
https://github.com/DAToolset/ToolsForDataStandard/raw/main/%EC%86%8D%EC%84%B1%20%ED%91%9C%EC%A4%80%EC%A0%90%EA%B2%80%20%EB%8F%84%EA%B5%AC_v1.36_20230426_1.xlsm
在 v1.36 中,接受标准检查的属性名称中的空格字符已更改为不被视为单词分隔符。
相应地,受检查的属性名称的编写规则也发生了如下变化。
※ 属性名称的书写规则
1. 输入单词之间不带空格:基本
– 示例:作业是否自动执行
2. 单词之间输入空格:用英文书写属性逻辑名称时
– 示例:客户编号
3. 输入以“_”分隔:指定单词组成时
– 示例:是否自动运行任务
请测试并给出您的意见。
属性名称:客户拆分号码
进行标准检查时,属性名称检查结果显示为标准词组合,但标准词逻辑名称组合和物理名称组合的结果处理错误。
CUSTOMER、SPLIT、NUMBER:已注册 3 个标准字
标准字逻辑名称组合:CUSTOMER_[ ]_SPLIT_[ ]_NUMBER
标准字和物理名称的组合:CUST_[ ]_SPLT_[ ]_NO
我看得太简单了^^;;
我将对其进行更多测试并再次部署。
v1.36 重新发布。
https://prodskill.com/ko/data-standard-checker-v1-36/
存储库数据库:PostgreSQL,标准化目标数据库:PostgreSQL
SELECT ROW_NUMBER() OVER (ORDER BY D.DIC_LOG_NM) AS NO
,D.DIC_LOG_NM AS“字逻辑名”
,D.DIC_PHY_NM AS“字物理名称”
,D.DIC_PHY_FLL_NM AS“英文单词名称”
,D.DIC_DESC AS“字描述”
,D.STANDARD_YN AS “是否标准”
,(case D.ATTR_CLSS_YN when 'Y' then 'Y' else 'N' END) AS “是否是属性分类词”
,案件
当 D.STANDARD_YN = 'Y' 并且 SIM.Standard 逻辑名称为 NULL 时,则 D.DIC_LOG_NM
WHEN D.STANDARD_YN = 'Y' AND SIM.Standard 逻辑名称 IS NOT NULL THEN SIM.Standard 逻辑名称
ELSE SIM.标准逻辑名称
END “标准逻辑名称”
,SIM.同义词
,G.KEY_DOM_NM AS“域名分类名称”
/*
,D.ENT_CLSS_YN AS “实体分类词是否?
*/
FROM dataware.STD_AREA A
,dataware.STD_DIC D
左外连接
(选择 DM.KEY_DOM_NM
,MAX(DM.DOM_GRP_ID) DOM_GRP_ID
,MAX(DG.DOM_GRP_NM) DOM_GRP_NM
来自数据软件.STD_DOM DM
,dataware.STD_DOM_GRP DG
其中 DM.STD_AREA_ID = '47430eed-15a9-4697-90e3-a70040266517'
和 DM.AVAL_END_DT = '99991231235959'
并且 DG.STD_AREA_ID = DM.STD_AREA_ID
和 DG.AVAL_END_DT = '99991231235959'
并且 DM.DOM_GRP_ID = DG.DOM_GRP_ID
按 DM.KEY_DOM_NM 分组) G
在 D.DIC_LOG_NM = G.KEY_DOM_NM 上
左外连接
(
– 如果标准
选择 A.P_DIC_ID“组 ID”
,A.P_DIC_ID DIC_ID
,P.DIC_LOG_NM “标准逻辑名称”
,STRING_AGG(C.DIC_LOG_NM, ',' ORDER BY A.C_DIC_ID) “同义词”
FROM dataware.STD_DIC_REL A
左外连接数据件.STD_DIC P
在 A.P_DIC_ID = P.DIC_ID 和 P.AVAL_END_DT = '99991231235959'
左外连接数据件.STD_DIC C
在 A.C_DIC_ID = C.DIC_ID 和 C.AVAL_END_DT = '99991231235959'
其中 1=1
AND A.P_STD_AREA_ID =(从 DATAWARE.STD_AREA 中选择 STD_AREA_ID,其中 AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.标准词典')
和 A.AVAL_END_DT = '99991231235959'
按 A.P_DIC_ID、P.DIC_LOG_NM 分组
联合所有
– 如果出现非标准情况
选择 AA.P_DIC_ID“组 ID”
,A.C_DIC_ID DIC_ID
,P.DIC_LOG_NM “标准逻辑名称”
,STRING_AGG(CASE WHEN AA.C_DIC_ID = A.C_DIC_ID THEN P.DIC_LOG_NM ELSE C.DIC_LOG_NM END, ',' 按 CASE WHEN AA.C_DIC_ID = A.C_DIC_ID THEN '0' ELSE AA.C_DIC_ID END) “同义词”
FROM dataware.STD_DIC_REL A
,dataware.STD_DIC_REL AA
,dataware.STD_DIC P
,dataware.STD_DIC C
其中 1=1
AND A.P_STD_AREA_ID =(从 DATAWARE.STD_AREA 中选择 STD_AREA_ID,其中 AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.标准词典')
和 A.AVAL_END_DT = '99991231235959'
AND A.P_DIC_ID = AA.P_DIC_ID
AND AA.P_DIC_ID = P.DIC_ID
和 P.AVAL_END_DT = '99991231235959'
AND AA.C_DIC_ID = C.DIC_ID
和 C.AVAL_END_DT = '99991231235959'
按 AA.P_DIC_ID、A.C_DIC_ID、P.DIC_LOG_NM 分组
) SIM 卡
在 D.DIC_ID = SIM.DIC_ID 上
WHERE A.STD_AREA_NM = '0.标准字典'
AND A.STD_AREA_ID = D.STD_AREA_ID
和 D.AVAL_END_DT = '99991231235959'
AND D.DIC_GBN_CD = '0001' /* '0001': 字 */
/* AND D.STANDARD_YN = 仅提取 'Y' 标准字 */
ORDER BY D.DIC_LOG_NM,(如果为 D.STANDARD_YN,则为“Y”,然后为 1,否则为 2 结束)
;
–标准术语词典查询
SELECT ROW_NUMBER() OVER (ORDER BY D.DIC_LOG_NM) AS NO
,D.DIC_LOG_NM AS“术语逻辑名称”
,
(
选择 STRING_AGG(X.DIC_LOG_NM, '_')
从
(
选择 WRD.DIC_LOG_NM
从 STD_DIC 作为 WRD
左外连接 STD_WORD_COMBI AS C
ON WRD.STD_AREA_ID = C.STD_AREA_ID
AND WRD.DIC_ID = C.WORD_ID
WHERE C.STD_AREA_ID =(从 DATAWARE.STD_AREA 选择 STD_AREA_ID WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.标准词典')
并且 C.TERM_ID = D.DIC_ID
和 C.AVAL_END_DT = '99991231235959'
和 WRD.AVAL_END_DT = '99991231235959'
按 C.ORDER_NO 订购
) 作为
) AS“词逻辑名称组合”
,D.DIC_PHY_NM AS“术语物理名称”
,D.DIC_DESC AS“术语表”
,DM.DOM_NM AS“域逻辑名”
,UPPER(DT.DATA_TYPE) AS“数据类型”
— ,DM.DATA_LEN AS“长度”
,(当 DM.DATA_LEN = -1 时则为 'MAX' else text(DM.DATA_LEN) END) AS “长度”
,DM.DATA_SCALE AS“度数”
,”作为“工作定义”
, 代替(
上部(DT.DATA_TYPE)
||'(‘
||当 DM.DATA_LEN 为 null 时,则 ” else cast(DM.DATA_LEN as text) end
||当 DM.DATA_SCALE 为 null 时,则 ” else cast(DM.DATA_SCALE as text) end
||’)’
, '()', ”) AS “类型大小”
FROM dataware.STD_AREA A
,dataware.STD_DIC D
,dataware.STD_DOM DM
,dataware.STD_DATATYPE DT
WHERE A.STD_AREA_NM = '0.标准字典'
AND A.STD_AREA_ID = D.STD_AREA_ID
和 D.AVAL_END_DT = '99991231235959'
AND D.DIC_GBN_CD = '0002' /* '0002': 术语 */
AND D.STANDARD_YN = 'Y' /* 仅提取标准术语 */
且 DM.STD_AREA_ID = D.STD_AREA_ID
和 DM.AVAL_END_DT = '99991231235959'
并且 DM.DOM_ID = D.DOM_ID
和 DT.DB_TYPE = '0024'
AND DT.CD_NO = DM.DATA_TYPE_CD
;
–标准领域词典查询
SELECT ROW_NUMBER() OVER (ORDER BY DG.DOM_GRP_NM, DM.DOM_NM) AS NO
,DM.key_dom_nm AS “域名分类名称”
,DM.DOM_NM AS“域逻辑名”
,DM.KEY_DOM_PHY_NM AS “关键域物理名称”
,(case DM.DOM_DESC null then DM.KEY_DOM_NM else DM.DOM_DESC END) AS “域描述”
,UPPER(DT.DATA_TYPE) AS“数据类型名称”
,DM.DATA_LEN AS“长度”
,DM.DATA_SCALE AS“度数”
, 代替(
上部(DT.DATA_TYPE)
||'(‘
||当 DM.DATA_LEN 为 null 时,则 ” else cast(DM.DATA_LEN as text) end
||当 DM.DATA_SCALE 为 null 时,则 ” else cast(DM.DATA_SCALE as text) end
||’)’
, '()', ”) AS “类型大小”
, dg.dom_grp_nm 作为“标准域组名称”
/*
,DM.KEY_DOM_NM AS “关键域名”
*/
来自数据软件.STD_DOM DM
,dataware.STD_DOM_GRP DG
,dataware.STD_DATATYPE DT
WHERE DM.STD_AREA_ID =(从 DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.标准词典中选择 STD_AREA_ID)
和 DM.AVAL_END_DT = '99991231235959'
并且 DG.STD_AREA_ID = DM.STD_AREA_ID
和 DG.AVAL_END_DT = '99991231235959'
并且 DG.DOM_GRP_ID = DM.DOM_GRP_ID
和 DT.DB_TYPE = '0024'
AND DT.CD_NO = DM.DATA_TYPE_CD
;
感谢分享。