資料の 英語版 に戻るData Virtualizationで、仮想化されたフラットファイルに対するクエリが失敗し、結果が正しくない
Data Virtualizationで、仮想化されたフラットファイルに対するクエリが失敗し、結果が正しくない
最終更新: 2024年11月26日
リモート・エージェントを使用してアクセスされるフラット・ファイルを仮想化する場合に、特殊文字を持つ列に対して列タイプ変換が行われていると、一部の照会結果が誤っていることがあります。
症状
Data VirtualizationのExcelソースラッパーは、'Cloud Pak for Data44.0.22でアップグレードされ、サイズ無制限のスプレッドシートにアクセスできるようになった。 以前のリリースでは、Data Virtualizationは、例えば250,000以上のセルを含むような多数のデータを含むスプレッドシートや、例えば3MBを超えるような大きなファイル・サイズのスプレッドシートへのアクセスに失敗することがありました。 何らかの問題が発生した場合 (例えば、タイプや値が予期しないものである場合など)、以下の SQL API 呼び出しを使用して、新しいソース・ラッパーと古いソース・ラッパーを切り替えることができます。
- GExcel という名前の以前の Excel ソース・ラッパーに切り替えるには、以下のコマンドを使用します。
CALL DVSYS.SETCONFIGPROPERTY('EXCEL_SOURCE_WRAPPER_CLASS', 'com.ibm.db2j.GExcel', '', ?, ?)
- 現在の Excel ソース・ラッパー である QExcel に切り替えるには、以下のコマンドを使用します。
CALL DVSYS.SETCONFIGPROPERTY('EXCEL_SOURCE_WRAPPER_CLASS', 'com.ibm.db2j.QExcel', '', ?, ?)
例えば、ドル記号で始まる通貨の値は、元のプレビューでは、タイプ VARCHAR として推論されます。 しかし、その列が DECIMAL などの数値型に再入力されると、仮想化した場合に、仮想テーブルに対する照会で、その列に誤った NULL セルが含まれます。
例えば、照会では以下の結果が示されます。
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.
問題の解決
この問題を回避するには、以下の手順を実行します。
- 以下の SQL 照会を実行して、変更する必要があるエージェント NODE_NAME および PROPERTY を見つけます。 <your file name> は、仮想化されたファイルの名前に置き換えてください。
select NODE_NAME, REGEXP_REPLACE( id, '_ARGS$', '_VTI' ) PROPERTY from dvsys.listconfig where id like 'VTF_%_ARGS' and def like '%<your file name>%'
- 以下の SQL 照会を実行して、このスプレッドシートにアクセスするための
GExcel
実装を使用し、タイプを正しく変換できるようにします。<NODE_NAME>
および<PROPERTY>
を、ステップ 1で確認した値に置き換えます。CALL DVSYS.SETCONFIGPROPERTY('<PROPERTY>', 'com.ibm.db2j.GExcel', '<NODE_NAME>', ?, ?)
- 新しい実装に戻すには、ステップ 2から同じコマンドを再実行します。
GExcel
はQExcel
に置き換えてください。
トピックは役に立ちましたか?
0/1000