データ標準チェックツールv1.35_20230321展開

物理名基準の標準チェック機能を使用すると、「424」ランタイムエラーが発生しました。オブジェクトが必要です。メッセージのエラーが発生することがあります。このエラーを修正したデータ標準チェックツールv1.35_20230321を展開します。

*(参考)前回の配布記事: データ標準チェックツールv1.34_20221215展開

1.現象

「標準チェック(物理名基準)」シートのC列(カラム名(物理名))にカラム名を入力し、標準チェックボタンをクリックすると、次の「424」ランタイムエラーが発生しました。オブジェクトが必要です。エラーが発生します。

'424' 런타임 오류가 발생하였습니다. 개체가 필요합니다.
「424」ランタイムエラーが発生しました。オブジェクトが必要です。

2.原因

このエラーは常に発生するわけではなく、物理名を区切り文字(_、underscore)で割ったときに各トークンが単語辞書の物理名にない場合に発生します。

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)は、underscore文字に分割されたtokenのn番目の値を意味します。この値がoStdWordDic(単語辞書辞書オブジェクト)のItemP(物理名をキーに、単語オブジェクトを値として管理する辞書オブジェクト)に存在しないときにエラーが発生します。

3. アクション内容

次のようにコードを変更しました。

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を入力した例だ。

데이터 표준점검 도구 v1.35_20230321 오류 수정: 단어 사전에 없는 YMDX, ABC, DEF를 입력한 예시
データ標準チェックツールv1.35_20230321エラー修正:単語辞書にないYMDX、ABC、DEFを入力した例

4. データ標準チェックツール v1.35_20230321 ダウンロード

パッチバージョンをgithubにアップロードし、以下のURLからダウンロードできます。

https://github.com/DAToolset/ToolsForDataStandard/raw/main/属性標準チェックツール_v1.35_20230321_1.xlsm

11件のフィードバック

  1. アバター写真 KSM より:

    標準辞書Repository関連のConfigへの標準辞書クエリです。
    Repository DB: PostgreSQL、標準化対象 DB: SQL Server

    –標準単語辞書 Query
    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 “属性分類語かどうか”
    ,CASE
    WHEN D.STANDARD_YN = 'Y' AND SIM.標準論理名IS NULL THEN D.DIC_LOG_NM
    WHEN D.STANDARD_YN = 'Y' AND SIM.標準論理名 IS NOT NULL THEN SIM.標準論理名
    ELSE SIM。標準論理名
    END「標準論理名」
    、SIM。同義語
    、G.DOM_GRP_NM AS「ドメイン分類名」
    /*
    、D.ENT_CLSS_YN AS「エンティティ分類語があるかどうか
    */
    FROM dataware.STD_AREA A
    、dataware.STD_DIC D
    left outer join
    (SELECT DM.KEY_DOM_NM
    、MAX(DM.DOM_GRP_ID)DOM_GRP_ID
    ,MAX(DG.DOM_GRP_NM) DOM_GRP_NM
    FROM dataware.STD_DOM DM
    、dataware.STD_DOM_GRP DG
    WHERE DM.STD_AREA_ID = 'キー値の確認が必要!!!'
    AND DM.AVAL_END_DT = '99991231235959'
    AND DG.STD_AREA_ID = DM.STD_AREA_ID
    AND DG.AVAL_END_DT = '99991231235959'
    AND DM.DOM_GRP_ID = DG.DOM_GRP_ID
    GROUP BY DM.KEY_DOM_NM) G
    on D.DIC_LOG_NM = G.KEY_DOM_NM
    left outer join
    (
    — 標準の場合
    SELECT 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
    left outer join dataware.STD_DIC P
    on A.P_DIC_ID = P.DIC_ID AND P.AVAL_END_DT = '99991231235959'
    left outer join dataware.STD_DIC C
    on A.C_DIC_ID = C.DIC_ID and C.AVAL_END_DT = '99991231235959'
    WHERE 1=1
    AND A.P_STD_AREA_ID = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '標準辞書')
    AND A.AVAL_END_DT = '99991231235959'
    GROUP BY A.P_DIC_ID, P.DIC_LOG_NM
    UNION ALL
    - 非標準の場合
    SELECT 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, ',' ORDER by CASE WHEN AA.C_DIC_ID = A.C_DIC_ID THEN '0' ELSE
    FROM dataware.STD_DIC_REL A
    、dataware.STD_DIC_REL AA
    、dataware.STD_DIC P
    、dataware.STD_DIC C
    WHERE 1=1
    AND A.P_STD_AREA_ID = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '標準辞書')
    AND A.AVAL_END_DT = '99991231235959'
    AND A.P_DIC_ID = AA.P_DIC_ID
    AND AA.P_DIC_ID = P.DIC_ID
    AND P.AVAL_END_DT = '99991231235959'
    AND AA.C_DIC_ID = C.DIC_ID
    AND C.AVAL_END_DT = '99991231235959'
    GROUP BY AA.P_DIC_ID、A.C_DIC_ID、P.DIC_LOG_NM
    ) SIM
    on D.DIC_ID = SIM.DIC_ID
    WHERE A.STD_AREA_NM = '標準辞書'
    AND A.STD_AREA_ID = D.STD_AREA_ID
    AND D.AVAL_END_DT = '99991231235959'
    AND D.DIC_GBN_CD = '0001' /* '0001': 単語 */
    /* AND D.STANDARD_YN = 'Y' 標準単語のみ抽出 */
    ORDER BY D.DIC_LOG_NM, (case D.STANDARD_YN when 'Y' then 1 else 2 end)
    ;

    – 標準用語辞書 Query
    SELECT ROW_NUMBER() OVER (ORDER BY D.DIC_LOG_NM) AS NO
    、D.DIC_LOG_NM AS「用語論理名」
    ,
    (
    SELECT STRING_AGG(X.DIC_LOG_NM, '_')
    FROM
    (
    SELECT WRD.DIC_LOG_NM
    FROM STD_DIC AS WRD
    LEFT OUTER JOIN 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 = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '標準辞書')
    AND C.TERM_ID = D.DIC_ID
    AND C.AVAL_END_DT = '99991231235959'
    ORDER BY C.ORDER_NO
    ) AS X
    )AS「単語論理名組合」
    、D.DIC_PHY_NM AS「用語物理名」
    、D.DIC_DESC AS「用語説明」
    、DM.DOM_NM AS「ドメイン論理名」
    、UPPER(DT.DATA_TYPE) AS「データタイプ」
    — ,DM.DATA_LEN AS “長さ”
    ,(case when DM.DATA_LEN = -1 then 'MAX' else text(DM.DATA_LEN) END) AS “長さ”
    、DM.DATA_SCALE AS「精度」
    , ” as “業務定義の”
    、UPPER(DT.DATA_TYPE)
    ||case
    when DM.DATA_LEN is null and UPPER(DT.DATA_TYPE) not in ('INT', 'DATETIME2') then null
    when DM.DATA_LEN is null and UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') then ”
    WHEN DM.DATA_LEN = -1 AND DM.DATA_SCALE IS NULL and UPPER(DT.DATA_TYPE) in('VARCHAR', 'VARBINARY') THEN '(MAX'
    else '('||DM.DATA_LEN
    end
    ||CASE WHEN DM.DATA_LEN IS NOT NULL AND DM.DATA_SCALE IS NULL THEN ')'
    WHEN DM.DATA_LEN IS NOT NULL and DM.DATA_LEN > 0 AND DM.DATA_SCALE IS NOT NULL THEN ','||DM.DATA_SCALE||')'
    WHEN DM.DATA_LEN IS NULL AND DM.DATA_SCALE IS NULL and UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') THEN ”
    ELSE NULL end
    AS “TypeSize”
    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
    AND D.AVAL_END_DT = '99991231235959'
    AND D.DIC_GBN_CD = '0002' /* '0002': 用語 */
    AND D.STANDARD_YN = 'Y' /* 標準用語のみ抽出 */
    AND DM.STD_AREA_ID = D.STD_AREA_ID
    AND DM.AVAL_END_DT = '99991231235959'
    AND DM.DOM_ID = D.DOM_ID
    AND DT.DB_TYPE = '0006' –SQL SERVER
    AND DT.CD_NO=DM.DATA_TYPE_CD
    ;

    –標準ドメイン辞書 Query
    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 when null then DM.KEY_DOM_NM else DM.DOM_DESC END) AS “ドメイン説明”
    、UPPER(DT.DATA_TYPE) AS「データタイプ名」
    ,(case when DM.DATA_LEN = -1 then 'MAX' else text(DM.DATA_LEN) END) AS “長さ”
    、DM.DATA_SCALE AS「精度」
    、UPPER(DT.DATA_TYPE)
    ||case
    when DM.DATA_LEN is null and UPPER(DT.DATA_TYPE) not in ('INT', 'DATETIME2') then null
    when DM.DATA_LEN is null and UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') then ”
    WHEN DM.DATA_LEN = -1 AND DM.DATA_SCALE IS NULL and UPPER(DT.DATA_TYPE) in('VARCHAR', 'VARBINARY') THEN '(MAX'
    else '('||DM.DATA_LEN
    end
    ||CASE WHEN DM.DATA_LEN IS NOT NULL AND DM.DATA_SCALE IS NULL THEN ')'
    WHEN DM.DATA_LEN IS NOT NULL and DM.DATA_LEN > 0 AND DM.DATA_SCALE IS NOT NULL THEN ','||DM.DATA_SCALE||')'
    WHEN DM.DATA_LEN IS NULL AND DM.DATA_SCALE IS NULL and UPPER(DT.DATA_TYPE) in ('INT', 'DATETIME2') THEN ”
    ELSE NULL end
    AS “TypeSize”
    /*
    、DM.KEY_DOM_NM AS「キードメイン名」
    */
    FROM dataware.STD_DOM DM
    、dataware.STD_DOM_GRP DG
    、dataware.STD_DATATYPE DT
    WHERE DM.STD_AREA_ID = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '標準辞書')
    AND DM.AVAL_END_DT = '99991231235959'
    AND DG.STD_AREA_ID = DM.STD_AREA_ID
    AND DG.AVAL_END_DT = '99991231235959'
    AND DG.DOM_GRP_ID = DM.DOM_GRP_ID
    AND DT.DB_TYPE = '0006'
    AND DT.CD_NO=DM.DATA_TYPE_CD
    ;

    • アバター写真 Zerom より:

      標準事前照会SQL共有していただきありがとうございます。
      私はPostgreSQLバージョンを使用するときに活用します。

      コメントに空白文字のインデントが表示されません。
      方法を探してみましょう。

  2. アバター写真 KSM より:

    標準点検時に属性名(CUSTOMER NUMBER)を英文でのみ組み合わせた場合、標準用語を登録しておいても標準単語の組み合わせで標準英語の一致はチェックできない症状があります。区切り文字をアンダーバー、スペースで処理するロジック?と関連がないかと思います。
    EX)
    *標準単語、略語
    CUSTOMER、CUST
    NUMBER、NO
    *標準用語、ドメイン
    CUSTOMER NUMBER、NUMBER V10
    *標準ドメイン、データタイプ
    NUMBER V10、VARCHAR(10)

    • アバター写真 Zerom より:

      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)にはスペースが含まれています。 「標準単語論理名の組み合わせ」項目に「[個人対象]_か否か」と表示されているのは、「[個人対象]」は標準単語辞書になく、「か否」は標準単語辞書にあるという意味である。このセルも未登録文字が含まれており、背景色が赤色に設定された。属性名に区切り文字が含まれている場合は、「属性名チェック結果」項目に「(ユーザー指定)」と表示します。
      —————————————————————

      標準チェック対象属性名に空白文字は意図的に単語を区切る意味で使用しています。
      現在実装されている機能では、標準用語の論理名にスペースを入れることができます。

      検査対象属性名に入力された空白を「意図された単語区切り文字」として扱うか、「空白文字」そのもので扱うかを選択するオプションを作成して処理すれば、必要な検査が可能になりそうです。

      必要ですか? ^^

      • アバター写真 KSM より:

        英語でモデリングする場合は、属性名をハングル単語のように貼り付けて使用すると単語識別が難しいため、英単語間を空白で区切る必要がある場合、オプションが必要になりそうです。^^;;

  3. アバター写真 KSM より:

    Repository DB: PostgreSQL、標準化対象DB: 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 “属性分類語かどうか”
    ,CASE
    WHEN D.STANDARD_YN = 'Y' AND SIM.標準論理名IS NULL THEN D.DIC_LOG_NM
    WHEN D.STANDARD_YN = 'Y' AND SIM.標準論理名 IS NOT NULL THEN SIM.標準論理名
    ELSE SIM。標準論理名
    END「標準論理名」
    、SIM。同義語
    、G.KEY_DOM_NM AS「ドメイン分類名」
    /*
    、D.ENT_CLSS_YN AS「エンティティ分類語があるかどうか
    */
    FROM dataware.STD_AREA A
    、dataware.STD_DIC D
    left outer join
    (SELECT DM.KEY_DOM_NM
    、MAX(DM.DOM_GRP_ID)DOM_GRP_ID
    ,MAX(DG.DOM_GRP_NM) DOM_GRP_NM
    FROM dataware.STD_DOM DM
    、dataware.STD_DOM_GRP DG
    WHERE DM.STD_AREA_ID = '47430eed-15a9-4697-90e3-a70040266517'
    AND DM.AVAL_END_DT = '99991231235959'
    AND DG.STD_AREA_ID = DM.STD_AREA_ID
    AND DG.AVAL_END_DT = '99991231235959'
    AND DM.DOM_GRP_ID = DG.DOM_GRP_ID
    GROUP BY DM.KEY_DOM_NM) G
    on D.DIC_LOG_NM = G.KEY_DOM_NM
    left outer join
    (
    -標準の場合
    SELECT 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
    left outer join dataware.STD_DIC P
    on A.P_DIC_ID = P.DIC_ID AND P.AVAL_END_DT = '99991231235959'
    left outer join dataware.STD_DIC C
    on A.C_DIC_ID = C.DIC_ID and C.AVAL_END_DT = '99991231235959'
    WHERE 1=1
    AND A.P_STD_AREA_ID = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.標準辞書')
    AND A.AVAL_END_DT = '99991231235959'
    GROUP BY A.P_DIC_ID, P.DIC_LOG_NM
    UNION ALL
    - 非標準の場合
    SELECT 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, ',' ORDER by CASE WHEN AA.C_DIC_ID = A.C_DIC_ID THEN '0' ELSE
    FROM dataware.STD_DIC_REL A
    、dataware.STD_DIC_REL AA
    、dataware.STD_DIC P
    、dataware.STD_DIC C
    WHERE 1=1
    AND A.P_STD_AREA_ID = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.標準辞書')
    AND A.AVAL_END_DT = '99991231235959'
    AND A.P_DIC_ID = AA.P_DIC_ID
    AND AA.P_DIC_ID = P.DIC_ID
    AND P.AVAL_END_DT = '99991231235959'
    AND AA.C_DIC_ID = C.DIC_ID
    AND C.AVAL_END_DT = '99991231235959'
    GROUP BY AA.P_DIC_ID、A.C_DIC_ID、P.DIC_LOG_NM
    ) SIM
    on D.DIC_ID = SIM.DIC_ID
    WHERE A.STD_AREA_NM = '0.標準辞書'
    AND A.STD_AREA_ID = D.STD_AREA_ID
    AND D.AVAL_END_DT = '99991231235959'
    AND D.DIC_GBN_CD = '0001' /* '0001': 単語 */
    /* AND D.STANDARD_YN = 'Y' 標準単語のみ抽出 */
    ORDER BY D.DIC_LOG_NM, (case D.STANDARD_YN when 'Y' then 1 else 2 end)
    ;

    – 標準用語辞書 Query
    SELECT ROW_NUMBER() OVER (ORDER BY D.DIC_LOG_NM) AS NO
    、D.DIC_LOG_NM AS「用語論理名」
    ,
    (
    SELECT STRING_AGG(X.DIC_LOG_NM, '_')
    FROM
    (
    SELECT WRD.DIC_LOG_NM
    FROM STD_DIC AS WRD
    LEFT OUTER JOIN 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 = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.標準辞書')
    AND C.TERM_ID = D.DIC_ID
    AND C.AVAL_END_DT = '99991231235959'
    AND WRD.AVAL_END_DT = '99991231235959'
    ORDER BY C.ORDER_NO
    ) AS X
    )AS「単語論理名組合」
    、D.DIC_PHY_NM AS「用語物理名」
    、D.DIC_DESC AS「用語説明」
    、DM.DOM_NM AS「ドメイン論理名」
    、UPPER(DT.DATA_TYPE) AS「データタイプ」
    — ,DM.DATA_LEN AS “長さ”
    ,(case when DM.DATA_LEN = -1 then 'MAX' else text(DM.DATA_LEN) END) AS “長さ”
    、DM.DATA_SCALE AS「精度」
    , ” as “業務定義の”
    、replace(
    UPPER(DT.DATA_TYPE)
    ||'(‘
    || case when DM.DATA_LEN is null then ” else cast(DM.DATA_LEN as text) end
    || case when DM.DATA_SCALE is null then ” else cast(DM.DATA_SCALE as text) end
    ||’)’
    , '()', ”) AS “TypeSize”
    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
    AND D.AVAL_END_DT = '99991231235959'
    AND D.DIC_GBN_CD = '0002' /* '0002': 用語 */
    AND D.STANDARD_YN = 'Y' /* 標準用語のみ抽出 */
    AND DM.STD_AREA_ID = D.STD_AREA_ID
    AND DM.AVAL_END_DT = '99991231235959'
    AND DM.DOM_ID = D.DOM_ID
    AND DT.DB_TYPE = '0024'
    AND DT.CD_NO=DM.DATA_TYPE_CD
    ;

    –標準ドメイン辞書 Query
    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 when 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「精度」
    、replace(
    UPPER(DT.DATA_TYPE)
    ||'(‘
    || case when DM.DATA_LEN is null then ” else cast(DM.DATA_LEN as text) end
    || case when DM.DATA_SCALE is null then ” else cast(DM.DATA_SCALE as text) end
    ||’)’
    , '()', ”) AS “TypeSize”
    、dg.dom_grp_nm as「標準ドメイングループ名」
    /*
    、DM.KEY_DOM_NM AS「キードメイン名」
    */
    FROM dataware.STD_DOM DM
    、dataware.STD_DOM_GRP DG
    、dataware.STD_DATATYPE DT
    WHERE DM.STD_AREA_ID = (SELECT STD_AREA_ID FROM DATAWARE.STD_AREA WHERE AVAL_END_DT = '99991231235959' AND STD_AREA_NM = '0.標準辞書')
    AND DM.AVAL_END_DT = '99991231235959'
    AND DG.STD_AREA_ID = DM.STD_AREA_ID
    AND DG.AVAL_END_DT = '99991231235959'
    AND DG.DOM_GRP_ID = DM.DOM_GRP_ID
    AND DT.DB_TYPE = '0024'
    AND DT.CD_NO=DM.DATA_TYPE_CD
    ;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ja日本語