Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
掲題の内容について相談させてください。
QlikViewからOracleにODBC接続しデータ取得を行っているのですが、
データを見てみると本来10桁のコードが4桁や5桁、6桁といった形で取り込まれる場合が出てきてしまっています。
現状DB管理者側では正常に全て10桁でデータを参照できる状態です。
-----------------------------------------------------------------
【テストした内容】
① カート番号を指定してデータを取得
====================
<<ロードスクリプト>>
SQL SELECT *
FROM ○○."ORDER"
Where CART_NO IN ('0001111111', '0002222222', …);
====================
<<実行結果>>
CART_NO PRODUCT_CD
0001111111 0000123456
0002222222 0000345678
0002222222 0000567890
====================
⇒全PRODUCT_CD が10桁で正常に取得される
② 全量取得、QlikView上で絞り込み
====================
<<ロードスクリプト>>
SQL SELECT *
FROM ○○."ORDER";
====================
<<実行結果>>
CART_NO PRODUCT_CD
0001111111 123456
0002222222 345678
0002222222 0000567890
====================
⇒一部のPRODUCT_CDの桁数が変動する
ゼロパディングされた部分が削られている模様
-----------------------------------------------------------------
皆様の中で同様の事象をご覧になられたことのある方はいらっしゃいますか?
アドバイスをいただければ幸いです。
--- 環境 ---
【DB】
種類 :Oracle
バージョン:11.2
【使用ドライバ】
instantclient-odbc-windows.x64-11.2.0.4.0
【QlikView】
11.20.12904.0 SR12 64-bit
【QlikView Server OS】
Windows Server 2012 R2 Standard
本件、解決しましたので情報共有です。
改めてデータを精査したところ、
現行システム(10桁)になる以前の過去システムから移行したデータに
同一の数値になるデータ(0000123456⇒123456)が混在していることを確認しました。
過去システム側のデータ(123456)を先に読み込んでいたために
既存システム側のデータも同じパターンに集約されて取り込まれていたようです。
並行して質問を投げていたサポートからも下記のようにご回答をいただいています。
----------------------------------------------
QlikViewは処理の高速化と使用メモリー量の抑制の為、
最初に取り込みましたデータパターンにより、それ以降の
同じ数値として扱われるデータは同一のパターンとして
内部的に取り扱われます。
例えば以下の順で取り込まれましたデータは
a,0002
b,02
c,2
以下の様にQlikView内部に保持されます。
a,0002
b,0002
c,0002
これが以下の順でデータが取り込まれた場合
a,2
b,02
c,0002
QlikView内部では以下の様に保持されます。
a,2
b,2
c,2
この動作に対してデータをテキストとして取り込むことにより
回避可能でございます。
----------------------------------------------
本件、解決しましたので情報共有です。
改めてデータを精査したところ、
現行システム(10桁)になる以前の過去システムから移行したデータに
同一の数値になるデータ(0000123456⇒123456)が混在していることを確認しました。
過去システム側のデータ(123456)を先に読み込んでいたために
既存システム側のデータも同じパターンに集約されて取り込まれていたようです。
並行して質問を投げていたサポートからも下記のようにご回答をいただいています。
----------------------------------------------
QlikViewは処理の高速化と使用メモリー量の抑制の為、
最初に取り込みましたデータパターンにより、それ以降の
同じ数値として扱われるデータは同一のパターンとして
内部的に取り扱われます。
例えば以下の順で取り込まれましたデータは
a,0002
b,02
c,2
以下の様にQlikView内部に保持されます。
a,0002
b,0002
c,0002
これが以下の順でデータが取り込まれた場合
a,2
b,02
c,0002
QlikView内部では以下の様に保持されます。
a,2
b,2
c,2
この動作に対してデータをテキストとして取り込むことにより
回避可能でございます。
----------------------------------------------