0 / 0
Volver a la versión inglesa de la documentación
Las consultas en archivos planos virtualizados fallan con resultados incorrectos en Data Virtualization
Última actualización: 26 nov 2024
Las consultas en archivos planos virtualizados fallan con resultados incorrectos en Data Virtualization

Cuando virtualiza archivos sin formato a los que se accede utilizando un agente remoto, algunas consultas tienen resultados incorrectos en los casos en que se realizan conversiones de tipo de columna para columnas que tienen caracteres especiales.

Síntomas

En ' Cloud Pak for Data 4 4.0.2 se actualizó la envoltura de fuentes de Excel en Data Virtualization para permitir el acceso a hojas de cálculo de tamaño ilimitado. En versiones anteriores, Data Virtualization podía fallar al acceder a hojas de cálculo que contenían muchos datos, por ejemplo más de 250.000 celdas, o que tenían un archivo de gran tamaño, por ejemplo más de 3 MB, lo que ocurre fácilmente cuando un libro de trabajo contiene macros. Si encuentra algún problema (por ejemplo, tipos o valores inesperados), puede conmutar entre derivadores de origen nuevos y antiguos con las siguientes llamadas de API de SQL.

  • Para conmutar al derivador de origen de Excel anterior denominado GExcel, utilice el mandato siguiente:
    CALL DVSYS.SETCONFIGPROPERTY('EXCEL_SOURCE_WRAPPER_CLASS', 'com.ibm.db2j.GExcel', '', ?, ?)
  • Para conmutar al derivador de origen de Excel actual denominado QExcel, utilice el mandato siguiente:
    CALL DVSYS.SETCONFIGPROPERTY('EXCEL_SOURCE_WRAPPER_CLASS', 'com.ibm.db2j.QExcel', '', ?, ?)

Por ejemplo, los valores de moneda que empiezan por un símbolo de dólar se deducen como tipo VARCHAR en la vista previa original. Sin embargo, si esa columna se vuelve a escribir a un tipo numérico como DECIMAL, cuando se virtualiza, las consultas en la tabla virtual tienen celdas nulas erróneas en dicha columna.

Por ejemplo, la consulta muestra los resultados siguientes.
db2 => SELECT * FROM DV_TEST."TBL_XLS_TESTFORMULA2" WHERE IDNUM BETWEEN 980 AND 990
IDNUM       NAME                           GROSS      DED1     DED2     TDED     NET
----------- ------------------------------ ---------- -------- -------- -------- ----------
        980 Ahmad Kynett                            -        -        -        -          -
        981 Sherlock Spalton                        -        -        -        -          -
        982 Ira Gladtbach                           -        -        -        -          -
        983 Andrej Dumphy                           -        -        -        -          -
        984 Jeremie Fullicks                        -        -        -        -          -
        985 Costa Shambrook                         -        -        -        -          -
        986 Jacob Darell                            -        -        -        -          -
        987 Kevon Heineking                         -        -        -        -          -
        988 Sib MacTrusty                           -        -        -        -          -
        989 Angelique Wace                          -        -        -        -          -
        990 Lothario Kuschel                        -        -        -        -          -

  11 record(s) selected.
Sin embargo, la consulta debe devolver los resultados siguientes.
db2 => SELECT * FROM DV_LOCAL."TBL_XLS_TESTFORMULA2" WHERE IDNUM BETWEEN 980 AND 990
IDNUM       NAME                           GROSS      DED1     DED2     TDED     NET
----------- ------------------------------ ---------- -------- -------- -------- ----------
        980 Ahmad Kynett                      4196.77   568.05   349.44   917.50    3279.27
        981 Sherlock Spalton                  4904.10   681.37   308.92   990.29    3913.81
        982 Ira Gladtbach                     3189.25   553.35   387.08   940.43    2248.81
        983 Andrej Dumphy                     4152.29   690.10   499.46  1189.56    2962.73
        984 Jeremie Fullicks                  2132.98   516.84   319.20   836.05    1296.93
        985 Costa Shambrook                   3058.66   525.03   363.98   889.01    2169.64
        986 Jacob Darell                      4247.33   687.88   376.42  1064.30    3183.02
        987 Kevon Heineking                   3437.73   588.29   464.82  1053.10    2384.62
        988 Sib MacTrusty                     2231.61   586.28   356.07   942.34    1289.26
        989 Angelique Wace                    3973.60   683.93   318.11  1002.04    2971.56
        990 Lothario Kuschel                  2785.71   512.24   314.47   826.71    1959.00

  11 record(s) selected.

Resolución del problema

Para solucionar este problema, realice los pasos siguientes.

  1. Ejecute la siguiente consulta SQL para buscar el agente NODE_NAME y PROPERTY que deben modificarse, sustituyendo <your file name> por el nombre del archivo que se ha virtualizado.
    select NODE_NAME, REGEXP_REPLACE( id, '_ARGS$', '_VTI' )  PROPERTY from dvsys.listconfig where id like 'VTF_%_ARGS' and def like  '%<your file name>%'
  2. Ejecute la siguiente consulta SQL para utilizar la implementación de GExcel para acceder a esta hoja de cálculo para que los tipos se puedan convertir correctamente. Sustituya <NODE_NAME> y <PROPERTY> por los valores que ha encontrado en el paso 1.
    CALL DVSYS.SETCONFIGPROPERTY('<PROPERTY>', 'com.ibm.db2j.GExcel', '<NODE_NAME>', ?, ?)
  3. Para volver a la nueva implementación, vuelva a ejecutar el mismo mandato desde el paso 2, sustituyendo GExcel por QExcel.
Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información