Herramienta de verificación estándar de datos_4.Adjunto

Este es el apéndice de la herramienta de inspección estándar de datos. Puede verificar el procesamiento del sufijo numérico del nombre de la propiedad, el método de simulación de diccionario de palabras estándar, la información de referencia de las propiedades sujetas a inspección estándar, la licencia y el código VBA. Esta es una continuación del artículo anterior.

Herramienta de inspección estándar de datos_3. Resultados de inspección estándar por caso

4. Accesorio de la herramienta de inspección estándar de datos

4.1. Procesamiento de sufijo numérico en nombre de atributo

Si hay un sufijo de número (número de posfijo) en el nombre de la propiedad, el número se excluye y se busca en el diccionario de términos estándar o en el diccionario de palabras estándar. Se agrega un sufijo numérico después del resultado del término estándar encontrado o combinación de palabras estándar.

속성명의 숫자 Suffix에 대한 처리
Procesamiento de sufijo numérico en nombre de atributo

En la figura anterior, el nombre físico del atributo "personal targeting 1" se crea como "PERSN_TGT_YN1". El terminador de nombre de atributo normalmente se identificaba como "ya sea o no".

La lógica de procesamiento del sufijo numérico del nombre de la propiedad es la siguiente.

  • Encuentre y almacene solo los números consecutivos (a) de la parte posterior del nombre de la propiedad para verificar, elimine los números e inspeccione
  • Como resultado de la inspección, el número almacenado en "combinación de nombre lógico de palabra estándar" y "combinación de nombre físico de palabra estándar" se agrega a la derecha

4.2. Método estándar de simulación de diccionario de palabras

Para verificar si la combinación de palabras para el nombre de la propiedad de entrada tiene éxito cuando no se determina el nombre físico de la palabra, es decir, si se puede registrar como un término estándar, se registra un nombre lógico en la hoja "Diccionario de palabras estándar", y el nombre físico es “(” + lógico Se puede simular componiendo nombre + “)”. En este caso, el elemento "combinación de nombre físico de palabra estándar" en el resultado de verificación estándar se muestra en verde.

표준단어사전 Simulation 방법
Método estándar de simulación de diccionario de palabras

Si hace clic en el botón "Agregar al diccionario de palabras" en el resultado de la verificación estándar, el nombre físico de cada palabra se crea como "(" + nombre lógico + ")" para todas las "palabras candidatas adicionales" y se agrega al diccionario de palabras. Las palabras que ya han sido registradas no se agregan.

Por cierto, si desea generar automáticamente una abreviatura para el nombre físico de una palabra, puede usar la función de usuario "Generar abreviatura" incluida en este proyecto de VBA. El código fuente de la función es el siguiente.

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. Descripción de la información de referencia de las propiedades de destino de inspección estándar

Los nombres de propiedad se cambian o los tipos/longitudes de datos se cambian durante la estandarización. Se necesitan elementos para administrar la información de referencia, como el nombre de la propiedad antes del cambio, el nombre de la columna, el tipo/longitud de los datos o las notas durante el trabajo de estandarización.

En el lado derecho de los resultados de inspección estándar de la hoja "Estandarización de nombres de propiedad", se crean elementos para administrar información adicional sobre los resultados de inspección estándar y la información de referencia adicional requerida para cada nombre de propiedad. Para obtener información de referencia, el usuario puede agregar los elementos necesarios.

표준점검대상 속성의 참조정보
Información de referencia de inmuebles sujetos a inspección estándar

▼ Mantenimiento de estándares Información adicional

  • Longitud del nombre físico: la longitud del nombre físico creado como resultado de la inspección estándar. Muestra el color de fondo de las celdas que exceden la longitud máxima (por ejemplo, 26) en rojo en formato condicional de acuerdo con la configuración de la opción de longitud máxima del nombre físico.
  • Número de palabras: número de palabras combinadas de nombres físicos creados como resultado de la inspección estándar
  • _Número: el número de caracteres '_' en el nombre físico creado como resultado de la inspección estándar
  • Nombre de atributo CNT: el número de nombres de atributo ingresados (si hay un nombre de atributo duplicado, es decir, si el nombre de atributo CNT es 2 o más, el color de fondo de la celda se muestra en rojo)

▼ Información de referencia adicional

  • Nombre de la propiedad antes del cambio: el nombre de la propiedad ingresado inicialmente antes de la inspección estándar de los nombres de las propiedades.
    • No se establece automáticamente, pero después de crear una lista de nombres de propiedades, el usuario establece directamente copiando y pegando.
    • Se utiliza para verificar cuál fue el nombre de la propiedad que se ingresó originalmente al cambiar el nombre de la propiedad mientras se ejecutaba la verificación estándar varias veces, y se recomienda usarlo siempre que sea posible.
  • Nombre de la propiedad después del cambio: Nombre de la propiedad actual (establecido automáticamente como una fórmula)
  • Nombre de propiedad tal cual: Nombre de propiedad tal cual del nombre de propiedad ingresado (requerido para el seguimiento tal cual)
  • Nombre de columna tal cual: nombre de columna tal cual del nombre de propiedad ingresado (requerido para el seguimiento tal cual)
  • Tipo de datos tal cual: tipo de datos tal cual del nombre de propiedad ingresado (requerido para el seguimiento tal cual)
  • Si el nombre de la propiedad ha cambiado o no: compare el nombre de la propiedad antes y después del cambio, y marque "O" si ha cambiado
  • Elementos a confirmar: Registre y utilice libremente los elementos que deben verificarse durante el trabajo de inspección estándar
  • Otros (agregue según sea necesario): agregue una columna a la derecha de "Necesario para verificar" para administrar los elementos requeridos

4.4. licencia

No hay restricciones para los usuarios que necesitan y desean utilizar esta herramienta de inspección estándar. El contenido de la licencia se redactó brevemente aplicando la licencia BSD-2.

  • Autor: Youngmin Lee
  • Email: leeyoungmin@gmail.com
  • Blog: https://prodskill.com/
  • github: https://github.com/DAToolset
  • Contenido de la licencia: básicamente sigue la licencia BSD-2 especificada en el repositorio de github. Si no se especifica, siga las instrucciones a continuación
    • 1. Representación del titular de los derechos de autor: el nombre del titular de los derechos de autor, la dirección de correo electrónico, la dirección del blog y la dirección del repositorio de github deben usarse sin cambios. En caso de cambiar el código fuente y usarlo, puedes agregar contenido relacionado con el autor secundario.
    • 2. Descargo de responsabilidad de la garantía: el titular de los derechos de autor no se hace responsable de los problemas causados por el uso de este código fuente y herramientas.
    • Si se cumplen las condiciones anteriores, está permitido para todos los fines, como el uso personal como el aprendizaje/uso, el uso de esta herramienta en los negocios en el trabajo o el uso de la herramienta para incluirla en un producto comercial cambiando el código fuente. .
    • Este contenido de licencia no se puede eliminar.
  • dime
    • No tiene que divulgar el código fuente de los trabajos derivados. Sin embargo, si no es un problema, me gustaría que me dijeras para qué trabajo secundario lo usaste. Puedes enviarlo por correo electrónico o dejarlo como comentario en el blog.
    • También notifíquenos sobre errores o solicitudes de mejora en la funcionalidad de la herramienta, errores en la documentación de la guía o solicitudes de mejora por correo electrónico o comentarios del blog.

Para su referencia, la licencia de la herramienta abierta se anuncia en la publicación de blog a continuación.

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

#ToDo: Cambiar enlace

4.5. Organice su código VBA

Hoja de trabajo, formulario de usuario, módulo, lista de clases. El código VBA de esta herramienta se compone de Módulo y Clase para mejorar la reutilización y la capacidad de mantenimiento. De acuerdo con el patrón de diseño de MVC, se aplicó M (Modelo) es Clase, V (Ver) es Excel UI y C (Control) es Módulo.

VBA 코드 구성
Configuración de código VBA

▼ Objeto de hoja de trabajo

  • Hoja de programa: shtRun (estandarización de nombres de propiedades): hoja que administra la lista de funciones y propiedades para la inspección estándar de nombres de propiedades
  • Hoja de datos: Hoja a la que hace referencia el programa: diccionario de palabras estándar, diccionario de términos estándar, diccionario de dominio estándar

▼ Objeto de formulario

  • frmAbout: “Acerca de… ” Formulario que se muestra al hacer clic en el botón. Contiene texto instructivo.

▼ Objeto de módulo

  • modControlStd: funciones relacionadas con la inspección estándar, como la creación de resultados de inspección estándar y la adición de palabras candidatas
  • modTest: código de prueba
  • modUtil: funciones comunes (registro, formateo, eliminación de sufijos, etc.)
  • Generación de abreviaturas mod: cree una abreviatura ingresando el nombre completo en inglés de la palabra y el número máximo de dígitos de la abreviatura

▼ Objeto de módulo de clase

  • CDBConnectionUnit: clase que proporciona funciones como conexión de base de datos, ejecución de SQL y creación de resultados para actualizar palabras/términos/dominios estándar de la base de datos de repositorio estándar
  • CStdDomain: Clase de una unidad de dominio estándar
  • CStdDomainDic
    • Clase para buscar en la lista de dominios estándar como estructura de diccionario (clave-valor)
    • Clave: nombre de clasificación de dominio
    • Valor: Colección de dominio de la taxonomía de dominio correspondiente
  • CStdTerm: clase de un término estándar
  • CStdTermDic
    • Clase para buscar en la lista de términos estándar como estructura de diccionario (clave-valor)
    • Clave: término nombre lógico
    • Valor: una instancia de la clase CStdTerm
    • Lea el diccionario de terminología estándar y cárguelo en la memoria como una estructura de diccionario
  • CStdWord: Clase de una palabra estándar
  • CStdWordCol: Clase para gestionar una lista de homófonos para una palabra estándar
  • CStdWordDic
    • Clase para buscar lista de palabras estándar como estructura de diccionario (clave-valor)
    • Clave: palabra nombre lógico
    • Valor: colección de instancias de la clase CStdWord (objeto CStdWordCol)
    • Administra internamente el diccionario adicional con el nombre de la palabra física como clave
    • En el proceso de leer el diccionario de palabras estándar y cargarlo en la memoria como diccionario, se verifican los nombres lógicos duplicados y los nombres físicos duplicados.

4.6. Descripción de la clase principal de VBA y resumen general del flujo lógico

Las clases principales son "CStdWordDic" que administra el diccionario de palabras estándar, "CStdTermDic" que administra el diccionario de términos estándar y "CStdDomainDic" que administra el diccionario de dominio estándar. Toda la lógica se maneja en el procedimiento de "verificación estándar" del módulo "modControlStd".

En resumen, es el siguiente.

4.6.1. Clase CStdWordDic

CStdWordDic 구성
Configurar CStdWordDic

La clase CStdWordDic administra la lista de cada palabra estándar mediante el uso de la variable miembro de tipo Diccionario. La clave es el nombre de la palabra (nombre lógico de la palabra), el valor tiene un objeto de palabra (tipo CStdWord) en el caso general. Cuando se permiten duplicados para nombres lógicos de palabras, es decir, cuando se permiten homónimos, Value es un objeto Collection que contiene varios objetos de palabra (tipo CStdWord). Internamente, maneja adicionalmente un diccionario con el nombre físico de la palabra como clave y la palabra objeto como valor.

Para determinar si hay un homófono, si clasificar por el tipo de objeto de valor, el objeto de valor para que sea igual a una colección y para distinguir si el recuento de elementos de la colección es 1 o 2 o más, es se clasificó por tipo.

Entonces, en el procedimiento de "verificación estándar" del módulo "modControlStd", el siguiente tipo de código aparece en varios lugares.

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

Consulte lo siguiente sobre el tipo de diccionario.

  • El tipo Diccionario de Excel VBA tiene una estructura HashMap compuesta por Clave y Valor.
  • No es un tipo básico y se usa después de hacer referencia a la biblioteca "Microsoft Scripting Runtime", o se declara como un tipo de objeto y se crea con CreateObject ("Scripting.Dictionary") para crear una instancia.

4.6.2. Clase CStdTermDic

CStdTermDic 구성
Configurar CStdTermDic

La clase CStdTermDic administra la lista de cada término estándar utilizando la variable miembro de tipo Diccionario. Clave es el nombre lógico del término y Valor es la entidad del término (tipo CStdTerm). Se utiliza para la lógica que determina si las unidades de plazo coinciden durante la inspección de normas de propiedad.

4.6.3. Clase CStdDomainDic

CStdDomainDic 구성
Configurar CStdDomainDic

La clase CStdDomainDic administra la lista de cada dominio estándar utilizando la variable miembro de tipo Diccionario. La clave es el nombre de clasificación del dominio, el valor es la colección de dominios. Los elementos de la colección de dominios son objetos de dominio de tipo CStdDomain.

4.6.4. Resumen general del flujo lógico

전체 로직 흐름 요약
Resumen general del flujo lógico

Toda la lógica se implementa en el procedimiento "Standard Check" del módulo modControl. Un breve resumen del proceso es el siguiente.

  1. Lea datos de cada hoja de diccionario de palabra/término/dominio estándar y cree variables de cada tipo de clase. Se implementa en el procedimiento Load() de cada tipo de clase.
  2. Lee la lista de propiedades que se van a verificar y las almacena en la matriz Variant.
  3. Para cada propiedad que se va a comprobar, se busca utilizando la estructura estándar de valor-clave del diccionario y el resultado de la inspección se almacena en una matriz de tipo Variant. Cuando finaliza el procesamiento, los resultados de la inspección almacenados en el tipo Variante se imprimen en la hoja.

Esto concluye la descripción de la herramienta de verificación de estándares de datos. Si tiene alguna pregunta, por favor déjela en los comentarios.


La herramienta de verificación de estándares de datos se puede encontrar en el repositorio de github a continuación.

https://github.com/DAToolset/ToolsForDataStandard


<< Lista de artículos relacionados >>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol