Datenstandard-Prüftool_4.Anhang

Dies ist der Anhang des Datenstandard-Inspektionstools. Sie können die Verarbeitung des Nummernsuffixes des Eigenschaftsnamens, der Simulationsmethode des Standardwörterbuchs, der Referenzinformationen von Eigenschaften, die der Standardprüfung unterliegen, der Lizenz und des VBA-Codes überprüfen. Dies ist eine Fortsetzung des vorherigen Artikels.

Data Standard Check Tool_3. Ergebnisse der Standardprüfung

4. Befestigung des Datenstandard-Inspektionswerkzeugs

4.1. Verarbeitung des numerischen Suffix im Attributnamen

Wenn der Eigenschaftsname ein Nummernsuffix (Postfixnummer) enthält, wird die Nummer ausgeschlossen und das Standardbegriffswörterbuch oder das Standardwortwörterbuch durchsucht. Ein numerisches Suffix wird nach dem Ergebnis des gefundenen Standardbegriffs oder der Standardwortkombination hinzugefügt.

속성명의 숫자 Suffix에 대한 처리
Verarbeitung des numerischen Suffix im Attributnamen

In der obigen Abbildung wird der physische Name des Attributs „Personal Targeting 1“ als „PERSN_TGT_YN1“ erstellt. Das Attributnamen-Endzeichen wurde normalerweise als „ob oder nicht“ identifiziert.

Die Verarbeitungslogik für das numerische Suffix des Eigenschaftsnamens ist wie folgt.

  • Suchen und speichern Sie nur die fortlaufenden Nummern (a) auf der Rückseite des zu überprüfenden Eigenschaftsnamens, löschen Sie die Nummern und überprüfen Sie sie
  • Als Ergebnis der Untersuchung wird die Zahl a, die in „Kombination aus logischen Standardwortnamen” und „Kombination aus physikalischen Standardwortnamen” gespeichert ist, rechts angehängt

4.2. Standard-Wörterbuch-Simulationsverfahren

Um zu überprüfen, ob die Wortkombination für den eingegebenen Eigenschaftsnamen erfolgreich ist, wenn das Wort physischer Name nicht bestimmt wird, d. h. ob es als Standardbegriff registriert werden kann, wird ein logischer Name im Blatt „Standard Word Dictionary“ registriert. und der physische Name ist „(“ + logisch. Er kann simuliert werden, indem Name + „)“ zusammengesetzt wird. In diesem Fall wird das Element „Standardwort Kombination physischer Namen“ im Ergebnis der Standardprüfung grün angezeigt.

표준단어사전 Simulation 방법
Standard-Wörterbuch-Simulationsverfahren

Wenn Sie im Ergebnis der Standardprüfung auf die Schaltfläche „Zum Wortwörterbuch hinzufügen“ klicken, wird der physische Name jedes Wortes als „(“ + logischer Name + „)“ für alle „zusätzlichen Kandidatenwörter“ erstellt und dem Wortwörterbuch hinzugefügt. Bereits registrierte Wörter werden nicht hinzugefügt.

Wenn Sie übrigens automatisch eine Abkürzung für den physikalischen Namen eines Wortes generieren möchten, können Sie die in diesem VBA-Projekt enthaltene Benutzerfunktion „Generate Abbreviation“ verwenden. Der Quellcode der Funktion lautet wie folgt.

Public Function 약어생성(aFullName As String, Optional aMaxSize = 4) As String
    Dim sFullName As String, sAbbName As String
    Dim i As Integer
    
    '영문 Full Name 중에 포함된 '-' 는 공백으로 변경하여 처리한다.
    sFullName = Trim(Replace(aFullName, "-", " "))
    
    '/* 영문 Full Name이 숫자로 시작하는 경우 단어 순서를 변경한다. (첫번째, 두번째 단어 순서만 변경) */
    Select Case Mid(sFullName, 1, 1)
        Case "0" To "9"
            sFullName = Trim(단어순서변경(sFullName))
    End Select

    sFullName = StrConv(sFullName, vbProperCase)
    sFullName = Replace(sFullName, "A ", "")
    sFullName = Replace(sFullName, "An ", "")
    sFullName = Replace(sFullName, "The ", "")

    If InStr(1, sFullName, " ") = 0 Then '/* 영문FullName이 하나의 단어일 경우*/
        If Len(sFullName) <= 4 Then '/* 영문FullName의 길이가 4 이하 일 경우 */
            sAbbName = sFullName
        Else
            '/* 영문FullName의 4자 이후 단어들이 모두 모음인 경우 - 앞 4자리 단어를 축약어로 사용 */
            If 모음제거(Mid(sFullName, 5)) = "" Then
                sAbbName = Mid(sFullName, 1, 4)
            Else
                sAbbName = Mid(sFullName, 1, 1) + 모음제거(Mid(sFullName, 2))   '-- 모음시작 단어 첫모음 살림
                '/* 축약 결과 길이제한 : 최대 aMaxSize 자리까지 */
                If Len(sAbbName) > aMaxSize Then
                    sAbbName = Mid(sAbbName, 1, aMaxSize)
                End If
            End If

        End If
    Else '/* 영문FullName이 여러 단어로 구성되어 있을 경우 */
        Dim iBlankCnt As Integer
        iBlankCnt = Len(sFullName) - Len(Replace(sFullName, " ", ""))

        '각 단어 첫글자
        sAbbName = sFullName

        Dim iPos As Integer, sChar As String, sAbbTmp As String
        If iBlankCnt = 1 Then '/* 단어수가 2개인 경우 - 각 단어의 시작 2글자 조합으로 생성 */
            sAbbName = 모음제거(sAbbName)
            i = InStr(1, sAbbName, " ") + 1
            sAbbName = UCase(Left(sAbbName, 2) + Mid(sAbbName, i, 2))
        ElseIf iBlankCnt <= 4 Then '/* 단어수가 4개 이하인 경우 - 첫글자 조합으로 생성 */
             For iPos = 1 To Len(sAbbName)
                sChar = Mid(sAbbName, iPos, 1)
                If (sChar >= "A" And sChar <= "Z") Or (sChar >= "0" And sChar <= "9") Then
                    sAbbTmp = sAbbTmp + sChar
                End If
                If Len(sAbbTmp) >= aMaxSize Then GoTo Exit_For1
             Next iPos
Exit_For1:
             sAbbName = sAbbTmp
        Else
            '/* 단어의 길이가 최대 허용자리수 이하인 경우 - 그대로 사용 */
            If Len(Replace(sFullName, " ", "")) <= aMaxSize Then
                sAbbName = UCase(Replace(sFullName, " ", ""))
            Else
                Dim sInText As String
                sInText = 등위접속사정리(UCase(sFullName))
                '/* 등위접속사가 존재하면 첫글자들로 구성 */
                If sInText <> sFullName Then
                    sAbbName = 모음제거(sInText)
                    For iPos = 1 To Len(sAbbName)
                        sChar = Mid(sAbbName, iPos, 1)
                        If (sChar >= "A" And sChar <= "Z") Or (sChar >= "0" And sChar <= "9") Then
                            sAbbTmp = sAbbTmp + sChar
                        End If
                        If Len(sAbbTmp) >= aMaxSize Then GoTo Exit_For2
                    Next iPos
Exit_For2:
                    sAbbName = sAbbTmp
                Else
                    '/* 두단어로 구성된 경우, 각각의 단어에서 앞 2자리 문자를 가지고 약어 생성 */
                    Dim iUnitLen As Integer, aWordArray() As String, sWord As String
                    iUnitLen = 2
                    aWordArray = Split(sFullName)
                    For iPos = 0 To UBound(aWordArray)
                        sWord = aWordArray(iPos)
                        If Len(sWord) = iUnitLen Then
                            sAbbTmp = sAbbTmp + sWord
                        Else
                            If 모음제거(Mid(sWord, iUnitLen + 1)) = "" Then
                                sAbbTmp = sAbbTmp + Mid(sWord, 1, iUnitLen)
                            Else
                                sAbbTmp = sAbbTmp + Mid(Mid(sWord, 1, 1) + 모음제거(이중자음정리(Mid(sWord, 2))), 1, iUnitLen)
                            End If
                        End If
                    Next
                    sAbbName = sAbbTmp
                End If
            End If

        End If

    End If
    약어생성 = UCase(sAbbName)
End Function

4.3. Beschreibung der Referenzinformationen der Eigenschaften von Standardinspektionszielen

Bei der Standardisierung werden Eigenschaftsnamen oder Datentypen/-längen geändert. Es werden Elemente zur Verwaltung von Referenzinformationen wie Eigenschaftsname vor Änderung, Spaltenname, Datentyp/-länge oder Notizen während der Standardisierungsarbeit benötigt.

Auf der rechten Seite des Blattes „Objektnamen-Standardisierung“ Standard-Prüfergebnisse werden Elemente erstellt, um zusätzliche Informationen zu Standard-Prüfergebnissen und zusätzliche Referenzinformationen zu verwalten, die für jeden Objektnamen erforderlich sind. Für Referenzinformationen kann der Benutzer notwendige Elemente hinzufügen.

표준점검대상 속성의 참조정보
Referenzangaben zu prüfpflichtigen Objekten

▼ Standards Wartung Zusätzliche Informationen

  • Länge des physischen Namens: Die Länge des physischen Namens, der als Ergebnis einer Standardprüfung erstellt wurde. Zeigt die Hintergrundfarbe von Zellen, die die maximale Länge (z. B. 26) überschreiten, in Rot in bedingter Formatierung gemäß der Einstellung der Option für die maximale Länge des physischen Namens an.
  • Anzahl der Wörter: Anzahl der kombinierten Wörter physischer Namen, die als Ergebnis einer Standardprüfung erstellt wurden
  • _Number: Die Anzahl der '_'-Zeichen im physischen Namen, der als Ergebnis der Standardprüfung erstellt wurde
  • Attributname CNT: Die Anzahl der eingegebenen Attributnamen (bei doppeltem Attributnamen, d.h. wenn der Attributname CNT 2 oder mehr ist, wird die Hintergrundfarbe der Zelle rot dargestellt)

▼ Zusätzliche Referenzinformationen

  • Eigenschaftsname vor Änderung: Der ursprünglich eingegebene Eigenschaftsname vor der Standardüberprüfung von Eigenschaftsnamen.
    • Es wird nicht automatisch festgelegt, aber nach dem Erstellen einer Liste von Eigenschaftsnamen wird der Benutzer direkt durch Kopieren und Einfügen festgelegt.
    • Es wird verwendet, um zu überprüfen, wie der Eigenschaftsname ursprünglich eingegeben wurde, wenn der Eigenschaftsname geändert wird, während die Standardprüfung mehrmals ausgeführt wird, und es wird empfohlen, es wann immer möglich zu verwenden.
  • Eigenschaftsname nach Änderung: Aktueller Eigenschaftsname (wird automatisch als Formel gesetzt)
  • As-Is-Property-Name: As-Is-Property-Name des eingegebenen Property-Namens (erforderlich für As-Is-Tracking)
  • As-Is-Spaltenname: As-Is-Spaltenname des eingegebenen Property-Namens (erforderlich für As-Is-Tracking)
  • As-Is-Datentyp: As-Is-Datentyp des eingegebenen Eigenschaftsnamens (erforderlich für As-Is-Tracking)
  • Ob der Eigenschaftsname geändert wurde oder nicht: Vergleichen Sie den Eigenschaftsnamen vor und nach der Änderung und markieren Sie „O“, wenn er sich geändert hat
  • Zu bestätigende Artikel: Erfassen und verwenden Sie Artikel, die während der Standardinspektionsarbeiten überprüft werden müssen, frei
  • Sonstiges (bei Bedarf hinzufügen): Fügen Sie eine Spalte rechts neben „Prüfung erforderlich“ hinzu, um erforderliche Elemente zu verwalten

4.4. Lizenz

Es gibt keine Einschränkungen für Benutzer, die dieses Standard-Inspektionstool verwenden müssen und möchten. Der Inhalt der Lizenz wurde kurz unter Anwendung der BSD-2-Lizenz geschrieben.

  • Autor: Youngmin Lee
  • Email: leeyoungmin@gmail.com
  • Blog: https://prodskill.com/
  • github: https://github.com/DAToolset
  • Lizenzinhalt: Folgt grundsätzlich der im Github-Repository angegebenen BSD-2-Lizenz. Wenn nicht angegeben, befolgen Sie die nachstehenden Anweisungen
    • 1. Vertretung des Urheberrechtsinhabers: Der Name des Urheberrechtsinhabers, die E-Mail-Adresse, die Blog-Adresse und die Github-Repository-Adresse müssen unverändert verwendet werden. Wenn Sie den Quellcode ändern und verwenden, können Sie Inhalte hinzufügen, die sich auf den sekundären Autor beziehen.
    • 2. Haftungsausschluss: Der Urheberrechtsinhaber kann nicht für Probleme haftbar gemacht werden, die durch die Verwendung dieses Quellcodes und dieser Tools verursacht werden.
    • Wenn die oben genannten Bedingungen erfüllt sind, ist es für alle Zwecke zulässig, wie z. B. die persönliche Nutzung wie Lernen/Nutzung, die Nutzung dieses Tools im Geschäftsleben oder die Nutzung des Tools, um es in ein kommerzielles Produkt einzufügen, indem der Quellcode geändert wird .
    • Dieser Lizenzinhalt kann nicht entfernt werden.
  • Sag mir
    • Sie müssen den Quellcode des abgeleiteten Werks nicht offenlegen. Wenn es jedoch kein Problem darstellt, möchte ich Sie bitten, mir mitzuteilen, für welche Nebenarbeiten Sie es verwendet haben. Sie können es per E-Mail senden oder als Blog-Kommentar hinterlassen.
    • Bitte teilen Sie uns auch Fehler oder Verbesserungswünsche in der Funktionalität des Tools, Fehler in der Anleitungsdokumentation oder Verbesserungswünsche per E-Mail oder Blog-Kommentar mit.

Zu Ihrer Information wird die Lizenz des offenen Tools im folgenden Blog-Beitrag bekannt gegeben.

https://prodtool.tistory.com/notice/19

#ToDo: Verknüpfung ändern

4.5. Organisieren Sie Ihren VBA-Code

WorkSheet, UserForm, Modul, Klassenliste. Der VBA-Code dieses Tools besteht aus Modul und Klasse, um die Wiederverwendbarkeit und Wartbarkeit zu verbessern. Gemäß dem MVC-Entwurfsmuster ist M (Model) Class, V (View) ist Excel UI und C (Control) ist Module.

VBA 코드 구성
VBA-Code-Konfiguration

▼ Arbeitsblattobjekt

  • Programmblatt: shtRun (Standardisierung von Eigenschaftsnamen): Blatt, das die Funktions- und Eigenschaftsliste für die Standardüberprüfung von Eigenschaftsnamen verwaltet
  • Datenblatt: Vom Programm referenziertes Blatt: Standardwortwörterbuch, Standardbegriffswörterbuch, Standarddomänenwörterbuch

▼ Formularobjekt

  • frmAbout: „Über … ” Formular, das beim Klicken auf die Schaltfläche angezeigt wird. Enthält Anleitungstext

▼ Modulobjekt

  • modControlStd: Funktionen im Zusammenhang mit der Standardprüfung, wie z. B. das Erstellen von Standardprüfungsergebnissen und das Hinzufügen von Kandidatenwörtern
  • modTest: Testcode
  • modUtil: Gemeinsame Funktionen (Protokollierung, Formatierung, Suffix-Entfernung usw.)
  • Generierung von Mod-Abkürzungen: Erstellen Sie eine Abkürzung, indem Sie den englischen vollständigen Namen des Wortes und die maximale Anzahl von Ziffern der Abkürzung eingeben

▼ Klassenmodulobjekt

  • CDBConnectionUnit: Klasse, die Funktionen wie DB-Verbindung, SQL-Ausführung und Ergebniserzeugung bereitstellt, um Standardwörter/Begriffe/Domänen aus der Standard-Repository-DB zu aktualisieren
  • CStdDomain: Klasse einer Standarddomäneneinheit
  • CStdDomainDic
    • Klasse zum Durchsuchen der Standarddomänenliste als Dictionary-Struktur (Key-Value)
    • Schlüssel: Domänenklassifizierungsname
    • Wert: Domain Sammlung der entsprechenden Domain-Taxonomie
  • CStdTerm: Klasse eines Standardbegriffs
  • CStdTermDic
    • Klasse zum Durchsuchen von Standardbegriffslisten als Dictionary-Struktur (Key-Value)
    • Schlüssel: Begriffslogikname
    • Wert: eine Instanz der CStdTerm-Klasse
    • Liest das Standard-Terminologiewörterbuch und lädt es als Wörterbuchstruktur in den Speicher
  • CStdWord: Klasse eines Standardwortes
  • CStdWordCol: Klasse zum Verwalten einer Liste von Homophonen für ein Standardwort
  • CStdWordDic
    • Klasse zum Durchsuchen von Standardwortlisten als Dictionary-Struktur (Key-Value)
    • Schlüssel: Wortlogischer Name
    • Wert: Instanzsammlung der CStdWord-Klasse (CStdWordCol-Objekt)
    • Verwaltet intern zusätzliches Wörterbuch mit physikalischem Wortnamen als Schlüssel
    • Beim Vorgang des Lesens des Standardwortverzeichnisses und Ladens desselben als Verzeichnis in den Speicher werden doppelte logische Namen und doppelte physikalische Namen geprüft.

4.6. Beschreibung der Haupt-VBA-Klasse und Zusammenfassung des allgemeinen Logikflusses

Die Hauptklassen sind „CStdWordDic“, die das Standardwörterbuch verwaltet, „CStdTermDic“, die das Standardwörterbuch verwaltet, und „CStdDomainDic“, die das Standarddomänenwörterbuch verwaltet. Die gesamte Logik wird in der „Standard Check“-Prozedur des „modControlStd“-Moduls abgewickelt.

Zusammengefasst ist es wie folgt.

4.6.1. CStdWordDic-Klasse

CStdWordDic 구성
Konfigurieren Sie CStdWordDic

Die CStdWordDic-Klasse verwaltet die Liste jedes Standardworts, indem sie die Mitgliedsvariable des Wörterbuchtyps verwendet. Der Schlüssel ist der Wortname (Wortlogikname), der Wert hat im Allgemeinen ein Wortobjekt (CStdWord-Typ). Wenn Duplikate für einen logischen Wortnamen zulässig sind, d. h. wenn Homophone zulässig sind, ist Value ein Collection-Objekt, das mehrere Wortobjekte enthält (CStdWord-Typ). Intern verwaltet es zusätzlich ein Wörterbuch mit dem physikalischen Namen des Wortes als Schlüssel und dem Wortobjekt als Wert.

Um festzustellen, ob es ein Homophon gibt, haben wir überlegt, ob wir es nach dem Typ des Value-Objekts klassifizieren, das Value-Objekt gleich einer Sammlung machen und es danach klassifizieren, ob die Elementanzahl der Sammlung 1 oder 2 ist, oder mehr Es wurde nach Typ klassifiziert.

So erscheint in der „Standard Check“-Prozedur des „modControlStd“-Moduls an mehreren Stellen der folgende Codetyp.

If TypeOf oStdWordObj Is CStdWord Then
    '논리명이 유일한 경우
    Set oStdWord = oStdWordObj
    sToken = oStdWord.m_s단어논리명
    ...
ElseIf TypeOf oStdWordObj Is CStdWordCol Then
    '동음이의어가 있어 논리명이 2개 이상인 경우
    b동음이의어Matched = True
    ...
End If

Bitte beachten Sie die folgenden Informationen zum Wörterbuchtyp.

  • Der Wörterbuchtyp von Excel VBA hat eine HashMap-Struktur, die aus Schlüssel und Wert besteht.
  • Es ist kein Basistyp und wird nach Verweis auf die „Microsoft Scripting Runtime“-Bibliothek verwendet oder als Objekttyp deklariert und mit CreateObject („Scripting.Dictionary“) erstellt, um eine Instanz zu erstellen.

4.6.2. CStdTermDic-Klasse

CStdTermDic 구성
Konfigurieren Sie CStdTermDic

Die CStdTermDic-Klasse verwaltet die Liste aller Standardbegriffe mithilfe der Member-Variablen vom Typ Wörterbuch. Schlüssel ist der logische Name des Begriffs und Wert ist die Begriffsentität (CStdTerm-Typ). Es wird für die Logik verwendet, die bestimmt, ob Termeinheiten während der Eigenschaftsstandardprüfung übereinstimmen.

4.6.3. CStdDomainDic-Klasse

CStdDomainDic 구성
CStdDomainDic konfigurieren

Die CStdDomainDic-Klasse verwaltet die Liste jeder Standarddomäne mithilfe der Member-Variablen vom Typ Dictionary. Schlüssel ist der Domänenklassifizierungsname, Wert ist die Domänensammlung. Die Elemente der Domänensammlung sind Domänenobjekte vom Typ CStdDomain.

4.6.4. Zusammenfassung des gesamten Logikflusses

전체 로직 흐름 요약
Zusammenfassung des gesamten Logikflusses

Die gesamte Logik ist in der „Standard Check“-Prozedur des Moduls modControl implementiert. Eine kurze Zusammenfassung des Prozesses ist wie folgt.

  1. Lesen Sie Daten aus jedem Standardwort-/Begriffs-/Domänen-Wörterbuchblatt und erstellen Sie Variablen für jeden Klassentyp. Es ist in der Load()-Prozedur jedes Klassentyps implementiert.
  2. Liest die Liste der zu prüfenden Eigenschaften und speichert sie im Variant-Array.
  3. Für jede zu prüfende Eigenschaft wird sie unter Verwendung der Schlüssel-Wert-Struktur des Standardwörterbuchs durchsucht, und das Prüfergebnis wird in einem Array vom Typ Variant gespeichert. Nach Abschluss der Bearbeitung werden die im Variantentyp hinterlegten Prüfergebnisse auf dem Blatt ausgegeben.

Damit ist die Beschreibung des Datenstandard-Prüfwerkzeugs abgeschlossen. Wenn Sie Fragen haben, hinterlassen Sie diese bitte in den Kommentaren.


Das Tool zur Prüfung von Datenstandards finden Sie unten im Github-Repository.

https://github.com/DAToolset/ToolsForDataStandard


<< Liste verwandter Artikel >>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch