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.
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.
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.
- 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>%'
- 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>', ?, ?)
- Per ripassare alla nuova implementazione, rieseguire lo stesso comando dal passo 2, sostituendo
GExcel
conQExcel
.