0 / 0
Torna alla versione inglese della documentazione
Le query su file flat virtualizzati falliscono con risultati errati in Data Virtualization
Ultimo aggiornamento: 26 nov 2024
Le query su file flat virtualizzati falliscono con risultati errati in Data Virtualization

Quando si virtualizzano i file piatti a cui si accede utilizzando un agente remoto, alcune query hanno risultati errati nei casi in cui le conversioni del tipo di colonna sono effettuate per colonne che hanno caratteri speciali.

Sintomi

Il wrapper di origine Excel in Data Virtualization è stato aggiornato in 'Cloud Pak for Data 4 4.0.2 per consentire l'accesso a fogli di calcolo di dimensioni illimitate. Nelle versioni precedenti, la Data Virtualization poteva non riuscire ad accedere a fogli di calcolo che contenevano molti dati, ad esempio più di 250.000 celle, o che avevano una dimensione di file elevata, ad esempio superiore a 3 MB, cosa che accade facilmente quando una cartella di lavoro contiene macro. Se si incontrano problemi (ad esempio, tipi o valori imprevisti), è possibile alternare tra nuovi e vecchi wrapper di origine con le seguenti chiamate SQL API.

  • Per passare al precedente wrapper di origine Excel denominato GExcel, utilizzare il seguente comando:
    CALL DVSYS.SETCONFIGPROPERTY('EXCEL_SOURCE_WRAPPER_CLASS', 'com.ibm.db2j.GExcel', '', ?, ?)
  • Per passare all'wrapper di origine Excel attuale denominato QExcel, utilizzare il seguente comando:
    CALL DVSYS.SETCONFIGPROPERTY('EXCEL_SOURCE_WRAPPER_CLASS', 'com.ibm.db2j.QExcel', '', ?, ?)

Ad esempio, i valori di valuta che iniziano con un simbolo del dollaro sono inferrati come tipo VARCHAR nell'anteprima originale. Tuttavia, se tale colonna viene rityped a un tipo numerico come DECIMALE, quando si virtualizza, le query contro la tabella virtuale hanno celle nulle erronee in quella colonna.

Ad esempio, la query mostra i seguenti risultati.
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.
Tuttavia, la query dovrebbe restituire i seguenti risultati.
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.

Risoluzione del problema

Per lavorare intorno a questo numero, completare i seguenti passaggi.

  1. Eseguire la seguente query SQL per trovare l'agent NODE_NAME e PROPERTY che devono essere modificati, sostituendo < nome file> con il nome del file virtualizzato.
    select NODE_NAME, REGEXP_REPLACE( id, '_ARGS$', '_VTI' )  PROPERTY from dvsys.listconfig where id like 'VTF_%_ARGS' and def like  '%<your file name>%'
  2. Eseguire la seguente query SQL per utilizzare l'implementazione GExcel per accedere a questo foglio di calcolo in modo che i tipi possano essere convertiti correttamente. Sostituire <NODE_NAME> e <PROPERTY> con i valori trovati al passo 1.
    CALL DVSYS.SETCONFIGPROPERTY('<PROPERTY>', 'com.ibm.db2j.GExcel', '<NODE_NAME>', ?, ?)
  3. Per ripassare alla nuova implementazione, rieseguire lo stesso comando dal passo 2, sostituendo GExcel con QExcel.
Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni